Prometheus监控系统(3)常用exporter的安装与使用配置

TangLu 系统运维 2025-01-24 5376 0

一、exporter介绍

在前面文章中已经讲到Prometheus的被监控端无需安装agent,它只需要通过HTTP协议开放符合Prometheus规范的指标数据就可以让Prometheus顺利完成数据抓取,而使用exporter就是提供数据给Prometheus的方法之一。在Prometheus生态中,已经对大量组件提供了现成的exporter,我们要监控什么组件就安装对应的exporter即可比如用于监控操作系统的node_exporter、用于监控MySQL的mysql_exporter、用于监控域名过期时间的domain_exporter、黑盒监控black_box等

企业微信截图_20190813141841.png


二、node_exporter的安装与配置

1、下载exporter

node_exporter1.png


Prometheus官网已经提供了大量可用的exporter,这里以node_exporter为例,下载对应的二进制安装包,解压后就可以直接使用

wget https://github.com/prometheus/node_exporter/releases/download/v1.8.2/node_exporter-1.8.2.linux-amd64.tar.gz


2、启动node_exporter

直接运行程序即可启动node_exporter并且自动进行数据采集,node_exporter默认会对一些常见的指标进行采集,比如 CPU、内存、网络。对于一些非常见或者可能占用资源较高的指标并没有默认打开,如果有需要监控的话可以通过特定的参数来启用这些收集器,通过help可以查看哪些选项会被默认开启或者关闭

· --collector.<指标名>:启用指定的监视器

· --no-collector.<指标名>:禁用默认激活的收集器

bin/node_exporter --collector-diskstats  #打开磁盘状态相关监控
bin/node_exporter --collector.systemd --collector.systemd.unit-whitelist=(docker|sshd|nginx).service


exporter.png


3、查看node_exporter

node_exporter启动完成后默认监听在9100端口,访问该端口可以看到指标数据以metrics的格式暴露出来,这样Prometheus就可以获取并监控

curl ip:9100/metrics
# TYPE node_cpu counter  #TYPE说明了数据类型为counter
node_cpu{cpu="cpu0",mode="idle"} 362812.7890625


4、node_exporter服务注册

cat /etc/systemd/system/node_exporter.service

[Unit]
Description=node_exporter
Documentation=https://prometheus.io
After=network.target

[Service]
ExecStart=/usr/local/node_exporter/node_exporter --web.listen-address=:9100 --collector.systemd --collector.diskstats --collector.ethtool --collector.tcpstat
ExecStop=/bin/kill -HUP $MAINPID
TimeoutStopSec=20s
Restart=always

[Install]
WantedBy=multi-user.target


5、后台启动node_exporter

systemctl daemon-reload
systemctl enable node_exporter
systemctl start node_exporter


6、Prometheus对接node_exporter,编辑Prometheus配置文件,手动增加node信息

global:
  scrape_interval: 15s         

scrape_configs:
  - job_name: "prometheus" 
    metrics_path: "/metrics"  
    static_configs:
    - targets: ["192.168.159.101:9090"]
    
  - job_name: "node"
    metrics_path: "/metrics"  
    static_configs:
    - targets: ["192.168.159.101:9100"]


7、热加载Prometheus

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


8、进入Prometheus Web端可以看到2个job都被采集到了,但是还没有实现图形化,并且也不知道exporter到底采集了哪些数据

node_exporter5.png


9、为了快速直观的看到这些指标,可以安装Grafana做好的Dashboard,从https://grafana.com/grafana/dashboards可以获取到各种Dashboard和对应的ID

node_exporter4.png


10、找到合适的模板以后只要导入该模板的ID即可快速应用




11、查看Grafana Dashboard

node_exporter6.png


三、redis_exporter的安装与配置

Redis虽然本身通过info指令提供了大量的指标,但是Prometheus并不能直接获取到,所以也需要依赖exporter来采集这些数据

1、下载redis exporter

wget https://github.com/oliver006/redis_exporter/releases/download/v1.67.0/redis_exporter-v1.67.0.linux-amd64.tar.gz
tar zxf redis_exporter-v1.67.0.linux-amd64.tar.gz


2、注册redis exporter为系统服务

vi /etc/systemd/system/redis_exporter.service
[Unit]
Description=Redis Exporter
After=network.target

[Service]
Type=simple
ExecStart=/usr/local/bin/redis_exporter --redis.addr=redis://192.168.159.102:6379 --redis.password=123456789
ExecStop=/bin/kill -SIGTERM $MAINPID
Restart=no

[Install]
WantedBy=multi-user.target


3、启动服务

systemctl daemon-reload
systemctl start redis_exporter


4、将redis exporter注册到consul

curl -X PUT "http://192.168.159.101:8500/v1/agent/service/register" \
-H "Content-Type: application/json" \
-d '{
  "Name": "redis-exporter",
  "Tags": ["redis"],    #这里定义了一个标签到consul的meta_consul_tags中,后续Prometheus会获取到标签用于分组
  "Address": "192.168.159.102",  
  "Port": 9121,
  "Check": {
    "Name": "Redis Exporter Health Check",
    "HTTP": "http://192.168.159.102:9121/metrics",
    "Method": "GET",
    "Interval": "15s",
    "Timeout": "5s"
  }
}'


5、修改Prometheus配置文件并重启服务

vi /data/prometheus/conf/prometheus.yml

global:
  scrape_interval: 15s

scrape_configs:
  - job_name: "prometheus"
    metrics_path: "/metrics"
    static_configs:
    - targets: ["192.168.159.101:9090"]

  - job_name: "node_by_consul"
    consul_sd_configs:
    - server: "192.168.159.101:8500"

  - job_name: "redis"
    consul_sd_configs:
    - server: "192.168.159.101:8500"
    relabel_configs:
      - source_labels: [__meta_consul_tags]
        regex: .*redis.*
        action: keep

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


7、查看数据,已经成功监控

redis_exporter1.png


四、mysql_exporter的安装与配置

通过mysqld exporter进行MySQL监控时需要确保每个 MySQL 实例对应一个mysqld exporter,并且为 MySQL 实例分配专门的监控账号来连接数据库获取数据

1、创建账户并授权

create user 'prometheus'@'%' identified by '123456789';
GRANT PROCESS,REPLICATION CLIENT,SELECT ON *.* TO 'prometheus'@'%';


2、访问https://github.com/prometheus/mysqld_exporter进行下

wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.16.0/mysqld_exporter-0.16.0.linux-amd64.tar.gz


3、因为MySQL密码不能直接传递给exporter,需要通过变量传递,所以先手动启动下mysqld exporter进行测试

export MYSQLD_EXPORTER_PASSWORD=123456789
mysgld_exporter --mysgld.address=localhost:3306 --mysgld.username=prometheus


4、注册mysqld exporter为系统服务


4、启动mysqld exporter


5、注册mysqld exporter到consul


6、查看数据

评论