运维开发网

通过python开发Prometheus的自定义exporter(通用版本)

运维开发网 https://www.qedev.com 2021-02-26 13:59 出处:51CTO 作者:上古杰作
背景当Prometheus自带的exporter无法满足实际需求时,需要我们自定义开发监控项,本篇文章介绍通过python开发自定义的exporter1.环境准备yuminstallgcclibffi-develpython-developenssl-devel-y#CentOS7操作系统,自带python2.7没有pip,需要手动安装setuptools-41.1.0.post1.tar.gzt

背景

  当Prometheus自带的exporter无法满足实际需求时,需要我们自定义开发监控项,本篇文章介绍通过python开发自定义的exporter

1.环境准备

yum install gcc libffi-devel python-devel openssl-devel -y

# CentOS7 操作系统,自带python2.7 没有pip,需要手动安装
setuptools-41.1.0.post1.tar.gz
tar -zxvf setuptools-41.1.0.post1.tar.gz
cd setuptools-41.1.0.post1
python setup.py install

pip-19.2.2.tar.gz
tar -zxvf pip-19.2.2.tar.gz
cd pip-19.2.2
python setup.py install

pip install psutil -i https://pypi.tuna.tsinghua.edu.cn/simple/
pip install prometheus_client -i https://pypi.tuna.tsinghua.edu.cn/simple/

2、exporter脚本编写

# -*- coding:utf-8 -*-

import time
import commands
import os
import sys
from prometheus_client import Gauge
from prometheus_client import start_http_server
reload(sys)
sys.setdefaultencoding('utf-8')

g = Gauge('HLY_custom_test_metric', 'Description of gauge', ['itemkey'])

def get_shell_valve():
    commands.getoutput('bash  /opt/test.sh') #多个脚本执行的结果输出到一个文件b.txt中(第一列为key值,第二列为数据)

def del_valvue():
    commands.getoutput('1>/opt/b.txt 2>&1')##为下一次得到最新数据,需要在本次清空文本内容

if __name__ == '__main__':
    start_http_server(8006)  # 8006端口启动
    while True:
        get_shell_valve()

        ff = open("/opt/b.txt","r")
        ffs = ff.readlines()
        for lines in ffs:
            if lines:
                line = lines.split()
                itemkey = line[0]
                valve = line[1]
                g.labels(itemkey).set(valve)
        ff.close()

        del_valvue()
        time.sleep(10)

ps:上述脚本中文件及shell脚本的解释

#cat /opt/test.sh
#!/bin/sh
bash c1.sh >>/opt/b.txt
bash c2.sh >>/opt/b.txt
#b.txt内容为:
#cat /opt/b.txt 
CPU  12
MEMORY 15

3、启动脚本

启动:python python_exporter.py
可以做成定时任务:
* * * * * sleep 10; python /opt/python_exporter.py #保证脚本一直处于运行之中

4、打开页面验证

通过python开发Prometheus的自定义exporter(通用版本)

扫码领视频副本.gif

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号