python과 node_exporter를 이용하여 prometheus에 데이터 태우기

  1. 필요도구
  • Python과 prometheus_client 라이브러리
  • node_exporter의 custom 파일이 등록되는 경로

아래의 예제는 solr cloud의 5분간 쿼리요청타임을 각 코어들의 모든 합을 구한 데이터를

node_exporter를 통해 prometheus로 보내는 간단한 소스입니다.

solr에서 결과는 json타입으로 받아 데이터를 가공해 node_exporter를 통해 보냅니다.

 

#!/usr/bin/env python
#-*- coding: utf-8 -*-

import json
from prometheus_client import CollectorRegistry, Gauge, write_to_textfile

server_uri = "blahblah "
registry = CollectorRegistry()
g = Gauge('solr_query_5min', 'How many query on this server', registry=registry)

tmp_5min = list()

try:
    r = requests.get('http://{}/solr/admin/metrics?group=all&prefix=QUERY./select.requestTimes&wt=json'.format(server_uri))
except Exception as e:
    print(e)

c = json.loads(r.text)
data = dict(zip(*[iter(c['metrics'])]*2))
for k,v in data.items():
    if 'core' in k:
        try:
            tmp_5min.append(dict(zip(*[iter(v[1])]*2))['5minRate'])
        except KeyError:
            continue

g.set(sum(map(lambda x:float("{0:.2f}".format(x)), tmp_5min)))
write_to_textfile('/var/tmp/node_exporter/solr_load_5m.prom', registry)

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.

Scroll to top