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
  • 1
  • 2

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

查看

文章知识点与官方知识档案匹配,可进一步学习相关知识
Python入门技能树首页概览371860 人正在系统学习中

[转帖]Prometheus-使用python开发exporter的更多相关文章

  1. python开发环境搭建

    虽然网上有很多python开发环境搭建的文章,不过重复造轮子还是要的,记录一下过程,方便自己以后配置,也方便正在学习中的同事配置他们的环境. 1.准备好安装包 1)上python官网下载python运 ...

  2. 【Machine Learning】Python开发工具:Anaconda+Sublime

    Python开发工具:Anaconda+Sublime 作者:白宁超 2016年12月23日21:24:51 摘要:随着机器学习和深度学习的热潮,各种图书层出不穷.然而多数是基础理论知识介绍,缺乏实现 ...

  3. Python开发工具PyCharm个性化设置(图解)

    Python开发工具PyCharm个性化设置,包括设置默认PyCharm解析器.设置缩进符为制表符.设置IDE皮肤主题等,大家参考使用吧. JetBrains PyCharm Pro 4.5.3 中文 ...

  4. Python黑帽编程1.2 基于VS Code构建Python开发环境

    Python黑帽编程1.2  基于VS Code构建Python开发环境 0.1  本系列教程说明 本系列教程,采用的大纲母本为<Understanding Network Hacks Atta ...

  5. Eclipse中Python开发环境搭建

    Eclipse中Python开发环境搭建  目 录  1.背景介绍 2.Python安装 3.插件PyDev安装 4.测试Demo演示 一.背景介绍 Eclipse是一款基于Java的可扩展开发平台. ...

  6. Python开发:环境搭建(python3、PyCharm)

    Python开发:环境搭建(python3.PyCharm) python3版本安装 PyCharm使用(完全图解(最新经典))

  7. Python 开发轻量级爬虫08

    Python 开发轻量级爬虫 (imooc总结08--爬虫实例--分析目标) 怎么开发一个爬虫?开发一个爬虫包含哪些步骤呢? 1.确定要抓取得目标,即抓取哪些网站的哪些网页的哪部分数据. 本实例确定抓 ...

  8. Python 开发轻量级爬虫07

    Python 开发轻量级爬虫 (imooc总结07--网页解析器BeautifulSoup) BeautifulSoup下载和安装 使用pip install 安装:在命令行cmd之后输入,pip i ...

  9. Python 开发轻量级爬虫06

    Python 开发轻量级爬虫 (imooc总结06--网页解析器) 介绍网页解析器 将互联网的网页获取到本地以后,我们需要对它们进行解析才能够提取出我们需要的内容. 也就是说网页解析器是从网页中提取有 ...

  10. Python 开发轻量级爬虫05

    Python 开发轻量级爬虫 (imooc总结05--网页下载器) 介绍网页下载器 网页下载器是将互联网上url对应的网页下载到本地的工具.因为将网页下载到本地才能进行后续的分析处理,可以说网页下载器 ...

随机推荐

  1. 欢迎 Mixtral - 当前 Hugging Face 上最先进的 MoE 模型

    最近,Mistral 发布了一个激动人心的大语言模型: Mixtral 8x7b,该模型把开放模型的性能带到了一个新高度,并在许多基准测试上表现优于 GPT-3.5.我们很高兴能够在 Hugging ...

  2. [集训队作业2013] 城市规划(NTT)

    一周一博客二专题计划 题面 n 个点的简单 (无重边无自环) 有标号无向连通图数目. 看着就很典 思路 设\(f(n)\)为n点连通图数目.设\(g(n)\)为n点不一定联通图数目,显然直接枚举每条边 ...

  3. NebulaGraph实战:1-NebulaGraph安装和基础操作

      以前使用Neo4j图数据库,考虑到生产环境需要最终选择了NebulaGraph图数据库.对于数据要求比较高的领域,比如医疗.财务等,暂时还是离不开知识图谱的.后面主要围绕LLM+KG做一些行业解决 ...

  4. .NET技术分享日活动-202107

    2021年7月3日下午,个人组织举办了山东地区的第二次山东.NET技术分享日活动.围绕互联网技术.大数据.机器学习.业务实践等方向进行创新技术的实践分享. 本次技术分享日活动面向了山东地区广大的.NE ...

  5. 详解GaussDB(DWS)通信安全的小妙招:连接认证机制

    本文分享自华为云社区<GaussDB(DWS)数据库安全系列之通信安全>,作者:yd_262982826. 1. 前言 适用版本:[8.1.3及以上] 网络是一个开放的环境,仅仅依靠用户名 ...

  6. 数仓性能调优:row_number() over(p)-rn=1性能瓶颈发现和改写套路

    本文分享自华为云社区<GaussDB(DWS)性能调优:row_number() over(p)-rn=1性能瓶颈发现和改写套路>,作者:Zawami . 1.改写场景 本套路应用于子查询 ...

  7. 带你认识数仓的监控系统TopSQL

    本文分享自华为云社区<GaussDB(DWS)TopSQL总结>,作者:nullptr_ . TopSQL 背景 TopSQL为DWS的监控系统,记录DWS中各个作业.算子级别的资源使用数 ...

  8. 详解Native Memory Tracking 追踪区域分析

    摘要:本篇将介绍NMT追踪区域的部分内存类型--Java heap.Class.Thread.Code 以及 GC. 本文分享自华为云社区<Native Memory Tracking 详解(2 ...

  9. NDPQ(NDP+PQ),定义分布式数据库新方向

    摘要:云服务提供商构建新的云原生关系数据库系统,专门为云基础架构设计,通常采用将计算和存储分离到独立扩展的分布式层的设计. 本文分享自华为云社区<性能提升100倍!GaussDB(for MyS ...

  10. 百度高德地图行政区域边界GeoJSON数据获取并绘制行政区域

    highcharts 是提供地图数据包的:https://www.highcharts.com/docs/maps/map-collection echart矢量地图或者地图绘制矢量图层,GeoJSO ...