监控工具 - Prometheus 的 Exporter


Exporter

在 Prometheus 核心组件中,监控样本数据的收集都是由 Exporter 完成。
Prometheus 服务器只需定时从这些 Exporter 提供的 HTTP 服务获取监控数据。
最终直观地通过Prometheus Web UI 浏览采集到的各类监控数据。
简而言之,Exporter是将收集的数据转化为对应的文本格式并提供HTTP接口,供Prometheus 定期采集数据。

Exporter列表

文本数据格式

在Prometheus 监控环境中,所有返回监控样本数据基于文本格式,可以更好地跨平台和可读性。
Prometheus基于文本的格式是面向行的。
行由换行符分隔,最后一行必须以换行符结尾,空行被忽略,以#开始的行通常都是注释内容。

  • # HELP开始的行,表示metric的帮助与说明注释,包含当前监控指标名称和对应的说明信息。
  • # TYPE开始的行,表示定义metric类型,包含当前监控指标名称和类型,类型有Counter、 Gauge、Histogram、 Summary和Untyped。
  • 以非#开始的行,表示监控样本数据。
  • 其他一般性注释,方便阅读使用,会被Prometheus忽略。

node_exporter

Prometheus 官方提供了 Go语言编写的node_exporter来实现对Linux操作系统主机的监控数据采集。
涵盖了系统内几乎所有的标准指标,如CPU、内存、磁盘空间、磁盘I/O、系统负载和网络带宽。

安装配置node_exporter

[root@node100 ~]# tar -xzvf node_exporter-1.8.2.linux-amd64.tar.gz -C /opt
node_exporter-1.8.2.linux-amd64/
node_exporter-1.8.2.linux-amd64/NOTICE
node_exporter-1.8.2.linux-amd64/node_exporter
node_exporter-1.8.2.linux-amd64/LICENSE
[root@node100 ~]# 
[root@node100 ~]# cd /opt/
[root@node100 opt]# ln -sv node_exporter-1.8.2.linux-amd64 node_exporter
'node_exporter' -> 'node_exporter-1.8.2.linux-amd64'
[root@node100 opt]#
[root@node100 opt]# useradd prometheus && echo "prometheus:prometheus"|chpasswd && chage -M 99999 prometheus
[root@node100 opt]# chown -R prometheus:prometheus /opt/node_exporter-1.8.2.linux-amd64/
[root@node100 opt]# ll /opt |grep node_exporter
lrwxrwxrwx  1 root       root            31 Sep 13 21:00 node_exporter -> node_exporter-1.8.2.linux-amd64
drwxr-xr-x  2 prometheus prometheus      56 Jul 14 19:58 node_exporter-1.8.2.linux-amd64
[root@node100 opt]# 
[root@node100 opt]# cd
[root@node100 ~]# vim /usr/lib/systemd/system/node_exporter.service
[root@node100 ~]# cat /usr/lib/systemd/system/node_exporter.service
[Unit]
Description=node_exporter
Documentation=https://prometheus.io/
After=network-online.target
[Service]
Type=simple
User=prometheus
Group=prometheus
ExecStart=/opt/node_exporter/node_exporter
Restart=on-failure
[Install]
WantedBy=multi-user.target
[root@node100 ~]# 
[root@node100 ~]# systemctl daemon-reload
[root@node100 ~]# systemctl enable node_exporter.service 
Created symlink /etc/systemd/system/multi-user.target.wants/node_exporter.service → /usr/lib/systemd/system/node_exporter.service.
[root@node100 ~]# systemctl start node_exporter.service 
[root@node100 ~]# systemctl status node_exporter.service 
● node_exporter.service - node_exporter
     Loaded: loaded (/usr/lib/systemd/system/node_exporter.service; enabled; preset: disabled)
     Active: active (running) since Fri 2024-09-13 21:35:22 CST; 8s ago
       Docs: https://prometheus.io/
   Main PID: 2644 (node_exporter)
      Tasks: 5 (limit: 48820)
     Memory: 5.0M
        CPU: 10ms
     CGroup: /system.slice/node_exporter.service
             └─2644 /opt/node_exporter/node_exporter

Sep 13 21:35:22 node100 node_exporter[2644]: ts=2024-09-13T13:35:22.129Z caller=node_exporter.go:118 level=info collector=time
Sep 13 21:35:22 node100 node_exporter[2644]: ts=2024-09-13T13:35:22.129Z caller=node_exporter.go:118 level=info collector=timex
Sep 13 21:35:22 node100 node_exporter[2644]: ts=2024-09-13T13:35:22.129Z caller=node_exporter.go:118 level=info collector=udp_queues
Sep 13 21:35:22 node100 node_exporter[2644]: ts=2024-09-13T13:35:22.129Z caller=node_exporter.go:118 level=info collector=uname
Sep 13 21:35:22 node100 node_exporter[2644]: ts=2024-09-13T13:35:22.129Z caller=node_exporter.go:118 level=info collector=vmstat
Sep 13 21:35:22 node100 node_exporter[2644]: ts=2024-09-13T13:35:22.129Z caller=node_exporter.go:118 level=info collector=watchdog
Sep 13 21:35:22 node100 node_exporter[2644]: ts=2024-09-13T13:35:22.129Z caller=node_exporter.go:118 level=info collector=xfs
Sep 13 21:35:22 node100 node_exporter[2644]: ts=2024-09-13T13:35:22.129Z caller=node_exporter.go:118 level=info collector=zfs
Sep 13 21:35:22 node100 node_exporter[2644]: ts=2024-09-13T13:35:22.130Z caller=tls_config.go:313 level=info msg="Listening on" address=[::>
Sep 13 21:35:22 node100 node_exporter[2644]: ts=2024-09-13T13:35:22.130Z caller=tls_config.go:316 level=info msg="TLS is disabled." http2=f>
lines 1-21/21 (END)
[root@node100 ~]# 

与Prometheus集成

  1. 在Prometheus服务器配置文件中添加相关配置并验证
  2. 热加载新配置curl -X POST http://192.168.16.200:9090/-/reload
  3. 页面查看 http://192.168.16.200:9090/targets 节点状态正常为UP
[root@node200 ~]# cd /opt/prometheus
[root@node200 prometheus]# ll
total 261324
drwxr-xr-x 2 prometheus prometheus        38 Aug  9 23:13 console_libraries
drwxr-xr-x 2 prometheus prometheus       173 Aug  9 23:13 consoles
drwxr-xr-x 7 prometheus prometheus       172 Sep 13 21:19 data
-rw-r--r-- 1 prometheus prometheus     11357 Aug  9 23:13 LICENSE
-rw-r--r-- 1 prometheus prometheus      3773 Aug  9 23:13 NOTICE
-rwxr-xr-x 1 prometheus prometheus 137838575 Aug  9 22:56 prometheus
-rw-r--r-- 1 prometheus prometheus       934 Aug  9 23:13 prometheus.yml
-rwxr-xr-x 1 prometheus prometheus 129735160 Aug  9 22:56 promtool
[root@node200 prometheus]# cp prometheus.yml prometheus.yml_bak
[root@node200 prometheus]# vim prometheus.yml
[root@node200 prometheus]# 
[root@node200 prometheus]# diff prometheus.yml prometheus.yml_bak 
30,32d29
<   - job_name: "node_exporter"
<     static_configs:
<       - targets: ["192.168.16.100:9100"]
[root@node200 prometheus]# 
[root@node200 prometheus]# curl -X POST http://192.168.16.200:9090/-/reload
[root@node200 prometheus]# 

official exporter

Consul exporter (official)

Memcached exporter (official)

MySQL server exporter (official)

Node/system metrics exporter (official)

HAProxy exporter (official)

AWS CloudWatch exporter (official)

Collectd exporter (official)

Graphite exporter (official)

InfluxDB exporter (official)

JMX exporter (official)

SNMP exporter (official)

StatsD exporter (official)

Blackbox exporter (official)


posted @ 2018-11-30 00:34  Anliven  阅读(513)  评论(0编辑  收藏  举报