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. MYSQL事务篇(高级篇)

    1.事务介绍: 一般是指要做的或所做的事情. 在计算机 术语 中是指访问并可能更新数据库中各种 数据项 的一个程序 执行单元 (unit) 2.数据库事务具有ACID四大特性. ACID是以下4个词的 ...

  2. electron入门之创建新窗口remote(一)

    electron入门到入土,从渲染线程中创建新窗口.2022-03-21入门版本17.1.2 electron重要概念,只有一个主线程,其他都是渲染进程或者叫子线程,他们不能直接相互操作,可以通过ip ...

  3. 前端系列:基于 Flex 弹性布局详解

    目录 基本介绍 基本概念 父项常见属性 flex-direction justify-content flex-wrap align-items align-content flex-flow 子项常 ...

  4. Kubernetes Headless服务

    1.概述 Headless Services是一种特殊的service,其spec:clusterIP表示为None,这样在实际运行时就不会被分配ClusterIP,也被称为无头服务,通过DNS解析提 ...

  5. 带你读AI论文:基于Transformer的直线段检测

    摘要:本文提出了一种基于Transformer的端到端的线段检测模型.采用多尺度的Encoder/Decoder算法,可以得到比较准确的线端点坐标.作者直接用预测的线段端点和Ground truth的 ...

  6. 机器学习周刊 第4期:动手实战人工智能、计算机科学热门论文、免费的基于ChatGPT API的安卓端语音助手、每日数学、检索增强 (RAG) 生成技术综述

    LLM开发者必读论文:检索增强(RAG)生成技术综述! 目录: 1.动手实战人工智能 Hands-on Al 2.huggingface的NLP.深度强化学习.语音课 3.Awesome Jupyte ...

  7. Grafana-安装饼状图

    官网:https://grafana.com/grafana/plugins/grafana-piechart-panel/?tab=installation 使用grafana-cli直接安装 [r ...

  8. 深入浅出 WebRTC AEC(声学回声消除)

    前言:近年来,音视频会议产品提升着工作协同的效率,在线教育产品突破着传统教育形式的种种限制,娱乐互动直播产品丰富着生活社交的多样性,背后都离不开音视频通信技术的优化与创新,其中音频信息内容传递的流畅性 ...

  9. PS 独立集中标识下修改项目采购类型增强

    1.当物料独立集中标识为2,采购类型通过BAPI:BAPI_NETWORK_COMP_ADD,type_of_pur_resv传入'7',则报错"组件分配并不是未销售订单或项目库存而设的&q ...

  10. async await 异步下载 异步代码加锁 lock 异步缓存

    async await 异步下载 异步代码加锁 lock 异步缓存 FTP异步下载代码: /// <summary> /// 异步下载文件 /// </summary> /// ...