点击上方“IT那活儿”公众号,关注后了解更多内容,不管IT什么活儿,干就完了!!
TeleDB的活动连接数可以用于反应当前set的繁忙程度,但只能通过telemonitor界面查看。
涉及组件:
Prometheus:用于采集监控数据; grafana:展示; flask:用于Prometheus得自定义exporter编写,配合Prometheus采集监控数据; python3:脚本语言粘合剂,使用python得flask库实现flask得功能。
1. 数据源(teledb活动连接数)从telemonitor数据库中获取
4. 通过grafana展示
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from sqlalchemy.ext.automap import automap_base
from sqlalchemy.orm import Session, sessionmaker
from sqlalchemy import create_engine, MetaData
from urllib import parse
import prometheus_client
from flask import Flask
from prometheus_client import make_wsgi_app
from prometheus_client import Gauge, start_http_server, Counter
from flask import Response, Flask
from prometheus_client.core import InfoMetricFamily, GaugeMetricFamily, REGISTRY,CollectorRegistry
def get_data():
URL="mysql+pymysql://teledb:%s@135.x.x.x:9014/teledb?charset=utf8" % parse.quote_plus('xxxxxxx')
print (URL)
metadata = MetaData()
engine = create_engine(URL)
session_factory = sessionmaker(bind=engine)
session = session_factory()
metadata.reflect(engine, only=['mysql_status'])
Base = automap_base(metadata=metadata)
Base.prepare()
status_gz = Base.classes.mysql_status
query = session.query(status_gz)
list = []
for row in query:
dict = {"host":row.host,"port":row.port,"tags":row.tags,"threads":row.threads_running}
list.append(dict)
print (list)
return list #此处返回一个带有监控数据的列表
app = Flask(__name__)
@app.route("/metrics")
def requests_count():
data_list=get_data()
REGISTRY = CollectorRegistry(auto_describe=False)
status = Gauge("CRM_teledb_runing_threads", "monitor running status.",["host","port","tags"], registry=REGISTRY)#定义Prometheus的自定义指标,打标签,这里给这个指标起名
#JF_teledb_runing_threads。
for data in data_list:
host ="".join( data.get("host"))
port = "".join( data.get("port"))
tags = "".join( data.get("tags"))
threads = data.get("threads")
status.labels(host, port,tags).set(threads)
return Response(prometheus_client.generate_latest(REGISTRY),
mimetype="text/plain")
if __name__ == '__main__':
app.run(host="0.0.0.0",port=8181,debug=True)#把这个web服务器跑在8181端口

本文作者:李 震(上海新炬中北团队)
本文来源:“IT那活儿”公众号

文章转载自IT那活儿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




