Prometheus Exporter二次开发¶
Prometheus提供了多种语言的Exporter SDK,可以让我们非常方便进行自定义开发工作,如果你想为应用开发Exporter,请注意查找你的开发框架,大部分开发框架都有Exporter的集成。
使用Python编写Exporter¶
下面使用Flask快速编写一个监控的Exporter
- 安装Python3
[root@linux-node1 ~]# yum install -y python3 python3-pip python3-devel gcc
[root@linux-node1 ~]# vim requirements.txt
prometheus_client==0.11.0
flask==2.0.1
psutil==5.8.0
[root@linux-node1 ~]# pip3 install -r requirements.txt
- 编写Python Exporter
[root@linux-node1 ~]# vim python-exporter.py
#!/usr/bin/python3
# -*- coding: utf-8 -*-
import prometheus_client
import psutil
from prometheus_client import Counter, Gauge
from prometheus_client.core import CollectorRegistry
from flask import Response, Flask
# Flask
app = Flask(__name__)
REGISTRY = CollectorRegistry(auto_describe=False)
# Metric
system_memory_percent = Gauge(
"system_memory_percent",
"Total system memory percent.",
registry=REGISTRY)
system_cpu_percent = Gauge(
"system_cpu_percent",
"Total system cpu percent.",
registry=REGISTRY)
# Flask Metrics
@app.route('/metrics')
def metric_value():
mem_percent.set(psutil.virtual_memory().percent)
cpu_system_percent.set(psutil.cpu_times().system)
return Response(prometheus_client.generate_latest(REGISTRY),
mimetype="text/plain")
# Flask Webroot
@app.route('/')
def index():
return '<a href="/metrics">Metrics</a>'
# Main
if __name__ == "__main__":
app.run(host='0.0.0.0',port=5000)
- 启动exporter,并访问测试。
[root@linux-node1 ~]# python3 python-exporter.py
[root@linux-node1 ~]# curl http://127.0.0.1:5000/