2. Prometheus的Exporter
目录
一、Exporter的概述
2. Exporter 的关键特点:
3. Exporter 的例子:
二、Exporter的来源
三、prometheus的exporter的类型
特点:
示例:
特点:
示例:
四、Exporter获取监控数据的方式
一、Exporter的概述
1. Exporter是什么?
Exporter 是 Prometheus 生态系统中的一个概念,指的是能够从目标系统(如数据库、应用程序、硬件设备等)收集指标数据并将其暴露出来的程序。Prometheus 通过定期从这些 Exporter 收集数据来进行监控和报警。
在 Prometheus 中,Exporter 的工作是将目标系统(比如一个 Web 服务、数据库、操作系统等)的监控数据以 Prometheus 可识别的格式进行暴露,通常是通过 HTTP 服务接口提供指标。每个 Exporter 的实例被称为一个 target,它代表一个具体的监控对象。
2. Exporter 的关键特点:
- 数据采集:Exporter 会定期从其监控的目标系统中采集数据,比如 CPU 使用率、内存使用情况、网络流量等。
- 暴露接口:Exporter 会通过一个 HTTP 接口暴露这些数据,Prometheus 会定期抓取这些数据接口。
- 灵活性:Exporter 可以针对不同的应用和系统定制,Prometheus 官方提供了一些通用的 Exporter(例如:node_exporter 用于监控 Linux/Unix 系统,mysql_exporter 用于监控 MySQL 数据库)。
3. Exporter 的例子:
- node_exporter:监控操作系统层面的指标,如 CPU 使用率、内存使用量、磁盘空间等。
- mysql_exporter:监控 MySQL 数据库的性能指标,如查询延迟、连接数等。
- blackbox_exporter:对外部服务进行 HTTP、DNS、TCP 等协议的监控。
Prometheus 通过定期向 Exporter 的 HTTP 接口请求数据,将这些数据存储并用来生成监控图表和报警规则。
二、Exporter的来源
- 社区提供的
1. prometheus社区提供丰富的Exporter实现,涵盖了从基础设施,中间件以及网络等各个方面的 性能监控,例如:Node Exporter ,MySQL Exporter
2. 官方文档连接:https://www.prometheus.io/docs/instrumenting/exporters/
- 用户自定义的
1. 除了可以使用社区提供的提供的Exporter程序外,用户可以基于prometheus提供的Client Library创建自己的Exporter程序
2.这里给出ClientGo的链接:https://github.comhttps://github.com/prometheus/client_golang
三、prometheus的exporter的类型
Prometheus 的 Exporter 可以根据其数据采集方式的不同,分为两类:直接采集型和间接采集型
- 直接采集型 Exporter
直接采集型 Exporter 是通过直接访问被监控系统(如数据库、应用服务等)的内部接口或数据源,实时获取其运行时的指标数据。它们通常不依赖于其他外部组件,而是直接从目标系统本身提取指标。
特点:
- 直接访问:直接从目标系统采集数据。
- 实时性较强:能够实时反映目标系统的性能和状态。
- 采集方式简单:通常会暴露一些预定义的指标,易于配置和使用。
示例:
- MySQL Exporter:直接访问 MySQL 数据库的状态信息,如查询数、连接数、慢查询等。
- PostgreSQL Exporter:直接访问 PostgreSQL 数据库,收集数据库相关的性能指标。
- JMX Exporter:用于收集基于 Java 的应用程序(如 Tomcat、Kafka 等)通过 JMX 提供的监控数据
- 间接采集型 Exporter
间接采集型 Exporter 则是通过某种中介、外部服务或监控代理来间接地获取数据。这些 Exporter 通常并不会直接从被监控系统获取数据,而是依赖一些中间工具、代理或外部系统来采集或推送数据。
特点:
- 间接依赖:通过中间代理或其他工具获取目标数据。
- 适用场景广泛:适用于需要通过其他工具收集数据的系统或场景。
- 可能存在延迟:由于需要通过其他系统采集,数据的实时性和准确性可能略有滞后。
示例:
- Node Exporter:通过操作系统的监控工具(如
vmstat
、iostat
、netstat
等)间接获取系统的硬件、操作系统和网络等性能数据。 - Blackbox Exporter:通过模拟对外部系统(如 HTTP、DNS、TCP 等)进行探测来间接获取外部服务的健康状况。它并不会直接访问被监控系统,而是对外部接口发起请求,测试其是否可用。
- SNMP Exporter:通过 SNMP(简单网络管理协议)从网络设备(如交换机、路由器、打印机等)中间接收集数据。
四、Exporter获取监控数据的方式
1. HTTP/HTTPS方式:例如RabbitMQ exporter通过RabbitMQ的HGTTPS接口获取监控数据
2. TCP方式:例如:Redis exporter通过Redis提供的系统监控相关命令获取监控指标
3. 本地文件方式:例如:Node exporter通过读取proc文件系统下的文件,计算得到整个操作系统状态
五、安装Node_Exporter
下载位置:https://www.prometheus.io/download/ 下拉找到Node_Exporter
1. 解压Node_Exporter并改名
tar xf node_exporter-1.9.0.linux-amd64.tar.gz -C /usr/local/
mv /usr/local/node_exporter-1.9.0.linux-amd64/ /usr/local/node_exporter
2. 做成系统服务器
vim /lib/systemd/system/node_exporter.service
[Unit]
Description=Node Exporter
Wants=network-online.target
After=network-online.target
[Service]
Type=simple
Restart=always
ExecStart=/usr/local/node_exporter/node_exporter
[Install]
WantedBy=multi-user.target
3. 启动
systemctl daemon-reload
systemctl start node_exporter.service
4. 查看端口是否启动
[root@localhost ~]# netstat -anptu |grep 9100
tcp6 0 0 :::9100 :::* LISTEN 55325/node_exporter
5. 查看网页端系统信息
本机ip:9100/metrics