安装准备
这里我的服务器IP是192.168.125.156,登入,建立相应文件夹
mkdir -p /data2/promethues/promethues
mkdir -p /data2/promethues/promethues/server
mkdir -p /data2/promethues/promethues/client
touch /data2/promethues/promethues/server/rules.yml
chmod 777 /home/chenqionghe/promethues/server/rules.yml
下面开始三大套件的学习
安装Prometheus Server
通过docker方式
首先创建一个配置文件/data2/promethues/test/prometheus.yml
挂载之前需要改变文件权限为777,要不会引起修改宿主机上的文件内容不同步的问题
global:
scrape_interval: 60s # 默认抓取间隔,15秒向目标抓取一次数据。
evaluation_interval: 60s
rule_files:
- /etc/prometheus/rules.yml
scrape_configs:
- job_name: prometheus
static_configs:
- targets: ['192.168.125.156:9090']
labels:
instance: prometheus
运行
docker run --name=prometheus -d \
-p 9090:9090 \
-v /data2/promethues/test/prometheus.yml:/etc/prometheus/prometheus.yml \
-v /data2/promethues/server/rules.yml:/etc/prometheus/rules.yml \
prom/prometheus --config.file=/etc/prometheus/prometheus.yml
访问http://192.168.125.156:9090
我们会看到如下界面
访问http://192.168.125.156:9090/metrics
我们配置了9090端口,默认prometheus会抓取自己的/metrics接口
在Graph选项已经可以看到监控的数据
二.安装客户端提供metrics接口
通过node exporter提供metrics
docker run -d \
--name=node-exporter \
-p 9100:9100 \
prom/node-exporter
然后把这两些接口再次配置到prometheus.yml, 重新载入配置
global:
scrape_interval: 60s
evaluation_interval: 60s
rule_files:
- /etc/prometheus/rules.yml
scrape_configs:
- job_name: prometheus
static_configs:
- targets: ['192.168.125.156:9090']
labels:
instance: prometheus
- targets: ['192.168.125.156:9100']
labels:
group: 'client-node-exporter'
可以看到接口都生效了
三.配置告警规则
vi /data2/promethues/server/rules.yml
groups:
- name: example
rules:
# Alert for any instance that is unreachable for >5 minutes.
- alert: InstanceDown
expr: up == 0
for: 5m
labels:
severity: page
annotations:
summary: "Instance {{ $labels.instance }} down"
description: "{{ $labels.instance }} of job {{ $labels.job }} has been down for more than 5 minutes."
# Alert for any instance that has a median request latency >1s.
- alert: APIHighRequestLatency
expr: api_http_request_latencies_second{quantile="0.5"} > 1
for: 10m
annotations:
summary: "High request latency on {{ $labels.instance }}"
description: "{{ $labels.instance }} has a median request latency above 1s (current value: {{ $value }}s)"
参考官方文档
https://prometheus.io/docs/prometheus/latest/configuration/alerting_rules/#defining-alerting-rules
这个规则文件里,包含了两条告警规则:InstanceDown
和 APIHighRequestLatency
。顾名思义,InstanceDown 表示当实例宕机时(up === 0)触发告警,APIHighRequestLatency 表示有一半的 API 请求延迟大于 1s 时(api_http_request_latencies_second{quantile="0.5"} > 1)触发告警。配置好后,需要重启下 Prometheus server,然后访问http://192.168.125.156:9090/rules可以看到刚刚配置的规则:
访问 http://192.168.177.156:9090/alerts
可以看到根据配置的规则生成的告警:
这里我们将一个实例停掉,可以看到有一条 alert 的状态是 PENDING
,这表示已经触发了告警规则,但还没有达到告警条件。这是因为这里配置的 for
参数是 5m,也就是 5 分钟后才会触发告警,我们等 5 分钟,可以看到这条 alert 的状态变成了 FIRING
。
安装AlterManager
mkdir -p /data2/promethues/alertmanager
cd !$
创建配置文件alertmanager.yml
global:
smtp_smarthost: 'smtp.163.com:25' # smtp地址
smtp_from: 'hjfxxxx@163.com' # 谁发邮件
smtp_auth_username: 'hjfxxxx@163.com' # 邮箱用户
smtp_auth_password: 'xxxxxx' # 邮箱授权码
smtp_require_tls: false
route:
group_by: ["alertname"] # 分组名
group_wait: 10s # 当收到告警的时候,等待三十秒看是否还有告警,如果有就一起发出去
group_interval: 10s # 发送警告间隔时间
repeat_interval: 1h # 重复报警的间隔时间
receiver: mail # 全局报警组,这个参数是必选的,和下面报警组名要相同
receivers:
- name: 'mail'
email_configs:
- to: 'hjfxxxx@163.com'
启动alertmanager
docker run -d -p 9093:9093 \
--name alertmanager \
-v /data2/promethues/alertmanager/alertmanager.yml:/etc/alertmanager/alertmanager.yml \
prom/alertmanager
访问9093端口
关掉node-exporter,这个时候再访问 Alertmanager,可以看到 Alertmanager 已经接收到告警了:
下面的问题就是如何让 Alertmanager 将告警信息发送给我们了,上面alertmanager.yml已经配置了邮件告警的方式
再到/data2/promethues/test/prometheus.yml,添加
global:
scrape_interval: 60s
evaluation_interval: 60s
rule_files:
- /etc/prometheus/rules.yml
scrape_configs:
- job_name: prometheus
static_configs:
- targets: ['192.168.125.156:9090']
labels:
instance: prometheus
- targets: ['192.168.125.156:9100']
labels:
group: 'client-node-exporter'
alerting:
alertmanagers:
- static_configs:
- targets: ["192.168.125.156:9093"]
163个人邮箱已经收到告警
下面继续完善文档,服务器还是192.168.177.156,只不过ip地址变成了157
普罗米修斯监控docker容器
cadvisor 的安装
docker run \
--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 \
--publish=8080:8080 \
--detach=true \
--name=cadvisor \
google/cadvisor:latest
当启动成功后,访问http://192.168.177.157:8080/
访问http://192.168.177.157:8080/metrics
修改主配置文件并重启
global:
scrape_interval: 60s
evaluation_interval: 60s
rule_files:
- /etc/prometheus/rules.yml
scrape_configs:
- job_name: prometheus
static_configs:
- targets: ['192.168.125.157:9090']
labels:
instance: prometheus
- targets: ['192.168.125.157:9100']
labels:
group: 'client-node-exporter'
- targets: ['192.168.125.157:8080']
labels:
group: 'cAdvisor'
alerting:
alertmanagers:
- static_configs:
- targets: ["192.168.125.157:9093"]
访问
安装grafana,访问3000端口
docker run -d -p 3000:3000 --name=grafana grafana/grafana
账号:admin
密码:admin
需要修改密码
导入新的模版
地址:https://grafana.com/grafana/dashboards/11558/revisions
复制链接地址
填进去即可
效果显示
先到这吧
不是每个人都适合与你白头偕老。有的人是拿来成长的,有的人是拿来生活的,有的人是拿来一辈子怀念的。