1、prometheus架构
Prometheus Server: 收集指标和存储时间序列数据,并提供查询接口
ClientLibrary:客户端库
Push Gateway: 短期存储指标数据。主要用于临时性的任务
Exporters:采集已有的第三方服务监控指标并暴露
metrics Alertmanager:告警
Web UI :简单的web控制台
官方安装说明
https://prometheus.io/docs/prometheus/latest/installation/
准备两台服务器
192.168.75.160 #Prometheus服务端
192.168.75.161 #被监控服务器
prometheus.yml主配置文件
# my global config
global:
scrape_interval: 15s # 采集被监控段指标的一个周期
evaluation_interval: 15s # 告警评估的一个周期
# 告警的配置文件
alerting:
alertmanagers:
- static_configs:
- targets:
# - alertmanager:9093
# 告警规则配置
rule_files:
# - "first_rules.yml"
# 被监控端的配置,目前只有一个节点,就是prometheus本身
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
下载镜像
docker pull prom/prometheus
开启内核路由转发
echo -e "net.ipv4.ip_forward = 1\nnet.ipv4.conf.default.rp_filter = 0 \nnet.ipv4.conf.all.rp_filter = 0" >> /etc/sysctl.conf
sysctl -p
启动镜像,将主配置文件挂载到容器内
docker run -d -p 9090:9090 --name prometheus --restart on-failure
-v /data/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus
http://192.168.75.160:9090/ 访问该地址,出现一个简单ui界面,说明部署成功,此时target只有本机一个节点。
2、实战一:监控一个容器服务
cAdvisor (Container Advisor) 用于收集正在允许的容器资源使用和性能信息。相当于zabbix-agent一样提供一个数据采集的接口。
docker部署cAdvisor:
docker run -d \
--volume=/:/rootfs:ro \
--volume=/var/run:/var/run:ro \
--volume=/sys:/sys:ro \
--volume=/var/lib/docker/:/var/lib/docker:ro \
--volume=/dev/disk/:/dev/disk:ro \
--publish=8080:8080 \
--detach=true \
--name=cadvisor \
google/cadvisor:latest
访问该地址,就能看到实时采集到的数据
http://192.168.75.161:8080/containers/
http://192.168.75.161:8080/metrics / #该地址的数据为prometheus识别的数据的接口
去192.168.75.160上修改prometheus的配置文件,复制一个job文件,job_name 指名称,targets为cAdvisor服务器地址ip和端口
修改完成重启prometheus
docker restart prometheus
http://192.168.75.160:9090/targets 可以看到监控指标说明获取数据成功
在192.168.75.160服务器上安装grafana
docker run -d --name=grafana -p 3000:3000 grafana/grafana
http://192.168.75.160:3000/ # 配置prometheus数据源,配置完成点击保存
https://grafana.com/grafana/download #该地址下载grafana模板
保存,选择Prometheus数据源后可以看到如下图所示
可以看到192.168.75.161上所有容器都被监控到了,至此监控容器完成!
3、实战二:监控Linux主机
编写了一个采集linux主机metrics的脚本
cat node_exporter.sh
#!/bin/bash
wget https://github.com/prometheus/node_exporter/releases/download/v0.17.0/node_exporter-0.17.0.linux-amd64.tar.gz
tar zxf node_exporter-0.17.0.linux-amd64.tar.gz
mv node_exporter-0.17.0.linux-amd64 /usr/local/node_exporter
cat </usr/lib/systemd/system/node_exporter.service
[Unit]
Description=https://prometheus.io
[Service]
Restart=on-failure
ExecStart=/usr/local/node_exporter/node_exporter
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable node_exporter
systemctl restart node_exporter
运行这个脚本就能监控Linux主机,测试访问
http://192.168.75.161:9100/metrics
说明采集信息成功,修改prometheus服务上的配置文件/tmp/prometheus.yml,增加一个Linux的job_name
docker restart prometheus
看到target出现Linux说明数据上传成功
然后配置grafana仪表盘,本次导入9276模板,和刚才导入模板的方式一致。导入完成即可看到如图所示模板
Segmentation fault报错
[root@monitor node_exporter]# ls
node_exporter node_exporter-0.17.0.linux-amd64 NOTICE
[root@monitor node_exporter]# ./node_exporter
Segmentation fault
报错原因可能是之前的软件没有卸载完全导致冲突,可以重新下载软件包或者删除原有的安装目录