prometheus之docker監控與告警系列(三)

2遠發表於2018-09-14

本系列主要介紹prometheus+cadvisor+alertmanager打造docker監控,主要監控指定docker容器是否掛掉

本節主要熟悉prometheus+cadvisor+alertmanager實現docker監控,以監控docker容器grafana是否掛掉作為例子

一、伺服器安裝cadvisor,監控docker,如果伺服器沒有安裝grafana的docker映象也一併安裝一下,我們今天就是來監控這個grafana是否掛掉

grafana 映象安裝

docker run -d \
  -p 3000:3000 \
  --restart=always \
  --name=grafana \
  -e "GF_SECURITY_ADMIN_PASSWORD=admin" \
  -e "GF_INSTALL_PLUGINS=grafana-clock-panel,grafana-simple-json-datasource,raintank-worldping-app,grafana-piechart-panel" \
  grafana/grafana
複製程式碼

cadvisor 映象安裝

sudo docker run \
  --volume=/:/rootfs:ro \
  --volume=/var/run:/var/run:rw \
  --volume=/sys:/sys:ro \
  --volume=/var/lib/docker/:/var/lib/docker:ro \
  --publish=8090:8080 \
  --detach=true \
  --name=cadvisor \
  google/cadvisor:latest
複製程式碼

其中8090是對映到外部的埠,需要伺服器開放這個埠外部才可以訪問

檢視監控到的docker的相關資訊

http://ip:8090/containers/docker

二、配置prometheus監控cadvisor

  - job_name: 'aliyun-cadvisor'
    scrape_interval: 5s
    static_configs:
      - targets: ['ip:8090']  
複製程式碼

targets中的ip換成你伺服器的ip

三、配置prometheus.rules.yml監控grafana是否掛掉

- name: DockerInstance
  rules:
  - alert: DockerInstanceDown
    expr: rate(container_last_seen{name="xservicesswagger_swagger_1"}[1m]) < 0.5
    for: 5s
    labels:
      severity: page
    # Prometheus templates apply here in the annotation and label fields of the alert.
    annotations:
      description: '{{ $labels.instance }} of job {{ $labels.job }} has been down for more than 5 s.'
      summary: 'Instance {{ $labels.instance }} down'
複製程式碼

expr:absent 這行函式表示給定的容器不存在則報警

開啟http://localhost:9090/rules可以檢視配置的規則,點選超連結可以檢視配置的規則是否正確

image.png

image.png

如果value結果為1,說明觸發了規則,如果沒有說明規則還沒有被觸發

把規則檔案加入prometheus.yml

rule_files:
  - 'prometheus.rules.yml'
複製程式碼

四、配置alertmanager.yml,設定webhook為告警處理方式,即告警觸發一個介面呼叫

global:
  resolve_timeout: 5m

route:
  group_by: ['alertname']
  group_wait: 5s
  group_interval: 5s
  repeat_interval: 5s
  receiver: 'web.hook'
receivers:
- name: 'web.hook'
  webhook_configs:
  - url: 'http://localhost:5200/auth/alter'
複製程式碼

repeat_interval 表示重複間隔,這裡配置5s,即如果觸發報警規則每隔5s報警一次

五、配置完之後我們實驗一下,在伺服器把grafana映象rm掉,看下是否觸發了alert,alert是否觸發了介面呼叫

訪問http://localhost:9090/alerts檢視alert是否被觸發

image.png

如果active的數量大於0則說明有規則被觸發了,點開了可以檢視

image.png

本系列到此就結束了,謝謝大家!

相關文章