Prometheus监控系统(3)常用exporter的安装与使用配置
一、exporter介绍
在前面文章中已经讲到Prometheus的被监控端无需安装agent,它只需要通过HTTP协议开放符合Prometheus规范的指标数据就可以让Prometheus顺利完成数据抓取,而使用exporter就是提供数据给Prometheus的方法之一。在Prometheus生态中,已经对大量组件提供了现成的exporter,我们要监控什么组件就安装对应的exporter即可。比如用于监控操作系统的node_exporter、用于监控MySQL的mysql_exporter、用于监控域名过期时间的domain_exporter、黑盒监控black_box等。
二、node_exporter的安装与配置
1、下载exporter
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
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到底采集了哪些数据
9、为了快速直观的看到这些指标,可以安装Grafana做好的Dashboard,从https://grafana.com/grafana/dashboards可以获取到各种Dashboard和对应的ID
10、找到合适的模板以后只要导入该模板的ID即可快速应用
11、查看Grafana Dashboard
三、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、查看数据,已经成功监控
四、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、查看数据
评论