部署监控组件Exporter
Prometheus 是使用 Pull 的方式来获取指标数据的,要让 Prometheus 从目标处获得数据,首先必须在目标上安装指标收集的程序,并暴露出 HTTP 接口供 Prometheus 查询,这个指标收集程序被称为 Exporter ,不同的指标需要不同的 Exporter 来收集,目前已经有大量的 Exporter 可供使用,几乎囊括了我们常用的各种系统和软件,官网列出了一份常用Exporter的清单 ,各个 Exporter 都遵循一份端口约定,避免端口冲突,即从 9100 开始依次递增,这里是完整的 Exporter端口列表 。另外值得注意的是,有些软件和系统无需安装 Exporter,这是因为他们本身就提供了暴露 Prometheus 格式的指标数据的功能,比如 Kubernetes、Grafana、Etcd、Ceph 等。
部署主机监控组件
各节点主机使用主机网络模式部署主机监控组件node-exporter,官方不建议将其部署为Docker容器,因为该node_exporter设计用于监控主机系统。需要访问主机系统,而且通过容器的方式部署发现磁盘数据不太准确。二进制部署就去看项目文档吧
$ docker run -d
–net=“host”
–pid=“host”
-v “/:/host:ro,rslave”
quay.io/prometheus/node-exporter
–path.rootfs=/host
容器正常运行后,进入Prometheus容器,在Prometheus.yml 文件中添加node-exporter组件地址
$ docker exec -it prometheus-133-210 /bin/bash
$ vim /data/prometheus/prometheus.yml
global:
scrape_interval: 60s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
evaluation_interval: 60s # Evaluate rules every 15 seconds. The default is every 1 minute.
rule_files:
- “rules/service_down.yml”
scrape_configs:
- job_name: ‘Host’
static_configs: - targets: [‘10.1.250.36:9100’] #node-exporter地址
labels:
appname: ‘DEV01_250.36’ #添加的标签 - job_name: ‘prometheus’
static_configs: - targets: [ ‘10.2.139.210:9090’]
labels:
appname: ‘prometheus’
热加载更新Prometheus
$ curl -X POST http://10.1.133.210:9090/-/reload
查看Prometheus的web页面已经可以看到node-exporter,然后我们就可以定义报警规则和展示看板了,这部分内容在后面配置Alertmanager和Grafana上会详细介绍。
部署容器监控组件
各节点主机部署容器监控组件cadvisor-exporter,我这边Docker网络使用的macvlan方式,所以直接给容器分配了IP地址。
docker run -d -h cadvisor139-216 --name=cadvisor139-216 --net=none -m 8g --cpus=4 --ip=10.1.139.216 --volume=/:/rootfs:ro --volume=/var/run:/var/run:rw --volume=/sys:/sys:ro --volume=/var/lib/docker/:/var/lib/docker:ro --volume=/dev/disk/:/dev/disk:ro google/cadvisor:latest
同样的,容器正常运行后,我们访问Cadvisor的Web页面 IP+8080 端口
现在我们进入Prometheus容器,在prometheus.yml主机文件中添加cadvisor组件
- job_name: ‘Cadvisor’
static_configs: - targets: [ ‘10.1.139.216:8080’]
labels:
appname: ‘DEV_Cadvisor01’
热加载更新Prometheus
$ curl -X POST http://10.1.133.210:9090/-/reload
可以看到,Prometheus添加的cadvisor状态为UP,说明正常接收数据。
部署Redis监控组件
容器部署Redis服务监控组件redis_exporter,–redis.passwd指定认证口令,如果你的redis访问没有密码那么就无需指定后面参数。
$ docker run -d -h redis_exporter139-218 --name redis_exporter139-218 --network trust139 --ip=10.1.139.218 -m 8g --cpus=4 oliver006/redis_exporter --redis.passwd 123456
在prometheus.yml 添加redis-exporter
- job_name: ‘Redis-exporter’ #exporter地址
static_confi