Prometheus-使用python开发exporter

该博客介绍了如何利用Python的prometheus_client库开发一个自定义Exporter,用于监控/root目录下的文件夹数量。首先,定义了Gauge类型的metric,然后获取并计算目录数量,设置labels,最后通过start_http_server暴露在8000端口。博主还分享了如何通过supervisord托管Python进程以及修改Prometheus配置来收集监控数据。
摘要由CSDN通过智能技术生成

exporter有很多,但想要特定需求的话,还需自行开发。在这里使用python写一个exporter,用于监控/root下的目录数量。

开发exporter需要使用prometheus_client库,具体规范可参考:https://github.com/prometheus/client_python ,根据规范可知要想开发一个exporter需要先

1. 定义数据类型,metric,describe(描述),标签
2. 获取数据
3. 传入数据和标签
4. 暴露端口,不断的传入数据和标签

知道了开发的步骤,下边开始实战。

1. 安装prometheus_client库

pip3 install prometheus_client

2. 代码

#!/usr/bin/python3
from prometheus_client import start_http_server,Gauge
import os
import time
#定义数据类型,metric,describe(描述),标签
dir_num = Gauge('dirNum','Calculate the number of directories',['instance'])

def get_dir_num():
  #获取目录个数
  path = "/root/"
  count = 0
  for cdir in os.listdir(path):
    if os.path.isdir(path+cdir) and not cdir.startswith('.'):
      count += 1
  #获取主机ip
  f = os.popen("hostname -i | awk '{print $2}'")
  ip = f.read().strip('\n')
  f.close()
  dir_num.labels(instance=ip).set(count)

if __name__ == "__main__":
 #暴露端口
  start_http_server(8000)
 #不断传入数据
  while True:
    get_dir_num()
    time.sleep(10)

3. 创建两个文件

在这里插入图片描述

4. 访问

在这里插入图片描述

5. python进程托管到supervisord

当然托管到systemd也可以

安装supervisord

yum install supervisor -y

添加子进程配置文件(supervisord默认配置文件为/etc/supervisord.conf,为主进程配置文件,子进程配置文件可在/etc/supervisord.d/下创建,具体可参考https://www.jianshu.com/p/0b9054b33db3)

vim /etc/supervisord.d/dirNum_exporter.ini 

[program:dirNum_exporter]
directory=/opt/bin
command=/usr/bin/python3 /opt/bin/dirNum_exporter.py
autostart=true
autorestart=false
startsecs=1
user=root

启动supervisord服务

systemctl start supervisord

查看子进程

[root@prometheus ~]# supervisorctl status
dirNum_exporter                  RUNNING   pid 7458, uptime 0:09:21

6. 修改Promehteus配置文件

修改prometheus配置文件

vim /usr/local/prometheus/prometheus.yml 

  - job_name: "dirNum"
    static_configs:
    - targets:
      - 192.168.71.21:8000

重载服务

curl -X POST http://192.168.71.21:9090/-/reload

查看
在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

real向往

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值