【集羣監控】Docker上部署Prometheus+Alertmanager+Grafana實現集羣監控

Docker部署html

下載node

sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

安裝linux

sudo yum install docker-ce

啓動docker

 sudo systemctl start docker

加入開機啓動centos

sudo systemctl enable docker

 

若是想監控Docker容器,能夠安裝cAdvisorjvm

docker run                                    \
--volume=/:/rootfs:ro                         \
--volume=/var/run:/var/run:rw                 \
--volume=/sys:/sys:ro                         \
--volume=/var/lib/docker/:/var/lib/docker:ro  \
--publish=8080:8090                           \
--detach=true                                 \
--name=cadvisor                               \
google/cadvisor:latest

訪問http://XXX:8090能夠看container的詳細信息(打開過程可能會比較慢)ui

 

在Docker中部署Prometheusgoogle

修改prometheus.yml,添加cAdvisor監控spa

- job_name: cadvisor1
    static_configs:
      - targets: ['XXXX:8090'] #XXXX最好用真實的IP,否則可能會出問題

找不到prometheus.yml能夠下載prometheus(https://prometheus.io/download/),解壓,包裏有3d

 

運行prometheus容器(第一次運行會自動拉取鏡像)

docker run -d -p 9090:9090 --name=prometheus -v /Users/caizh/fsdownload/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus   #/Users/caizh/fsdownload/prometheus.yml爲本地prometheus.yml路徑,換成本身的,/etc/prometheus/prometheus.yml爲容器中路徑

打開 http://XXXX:9090/targets 查看prometheus是否啓動成功

成功界面以下

 

在Docker中部署Grafana

運行grafana容器

docker run -d -p 3000:3000 --name=grafana grafana/grafana

打開 http://XXXX:3000 查看grafana是否啓動成功

成功界面以下

默認帳號,密碼都是admin

 

添加數據源,下載添加dashboard 參考另外一篇:http://www.javashuo.com/article/p-armszusz-ev.html

能夠在 https://grafana.com/dashboards 下載docker相關的dashboard,可是上邊提供的dashboard效果不必定好,能夠根據須要本身配

須要注意的是在docker中添加prometheus數據源,URL須要寫真實IP,否則可能會出問題

以下圖:

 

 

最後添加或配置好dashboard就能夠看到容器的相關信息了

我配好的大致效果以下:

 

而後,就能夠繼續加入報警規則了

 

在Docker中部署Alertmanager

配置報警方式的配置文件config.yml

配置報警規則文件(我配置了兩個,node_down.yml爲 prometheus targets 監控,memory_over.yml節點內存使用率監控)

並在prometheus.yml中啓用報警

配置過程參考:http://www.javashuo.com/article/p-sfrrhwcr-bw.html

 

啓動alertmanager容器

docker run -d -p 9093:9093 -v /Users/caizh/fsdownload/:/etc/alertmanager/config.yml --name alertmanager prom/alertmanager

若是配置文件加載成功,在 http://XXXX:9093/#/status 會看到Config中是你的配置文件中的配置,以下圖

 

從新啓動prometheus容器,來加載報警配置

docker run -d -p 9090:9090 --name=prometheus \
-v /Users/caizh/fsdownload/prometheus.yml:/etc/prometheus/prometheus.yml \
-v /Users/caizh/fsdownload/node_down.yml:/etc/prometheus/node_down.yml \
-v /Users/caizh/fsdownload/memory_over.yml:/etc/prometheus/memory_over.yml \
prom/prometheus 

 

報警規則配置成功在 http://XXXX:9090/alerts 能夠看到報警規則已經添加到prometheus的Alerts中

停掉cAdvisor容器

docker stop cadvisor

等待一會,看是否會給你配置的郵件報警

成功郵件相似下圖:

 

配來配去很麻煩有木有T^T。。。

咱們來一個簡單粗暴的方式

docker-compose

version: '2'

networks:
    monitor:
        driver: bridge

services:
    prometheus:
        image: prom/prometheus
        container_name: prometheus
        hostname: prometheus
        restart: always
        volumes:
            - /Users/caizh/fsdownload/prometheus.yml:/etc/prometheus/prometheus.yml
            - /Users/caizh/fsdownload/node_down.yml:/etc/prometheus/node_down.yml
            - /Users/caizh/fsdownload/memory_over.yml:/etc/prometheus/memory_over.yml
            - /Users/caizh/fsdownload/record_rule.yml:/etc/prometheus/record_rule.yml
        ports:
            - "9090:9090"
        networks:
            - monitor

    alertmanager:
        image: prom/alertmanager
        container_name: alertmanager
        hostname: alertmanager
        restart: always
        volumes:
            - /Users/sf/fsdownload/config.yml:/etc/alertmanager/config.yml
        ports:
            - "9093:9093"
        networks:
            - monitor

    grafana:
        image: grafana/grafana
        container_name: grafana
        hostname: grafana
        restart: always
        ports:
            - "3000:3000"
        networks:
            - monitor

注:

  解釋一下上邊的record_rule.yml是啥,不關心則刪掉record_rule.yml那行,並跳過這段  

record_rule.yml 配的是一個record rule的例子,是一個提早計算好的變量以方便grafana更快的調用

groups:
- name: memory_sum_by_job
  rules:
  - record: jvm_memory_bytes_used_total
    expr: sum(jvm_memory_bytes_used) by (instance)

個人規則是計算各個節點JVM的堆和非堆內存使用量,固然要先裝好jmx exporter,可參考 http://www.javashuo.com/article/p-armszusz-ev.html

更多信息參考官網:https://prometheus.io/docs/prometheus/latest/configuration/recording_rules/

 

啓動容器:

docker-compose -f /Users/caizh/Desktop/docker-compose-monitor.yml up -d

中止容器:

docker-compose -f /Users/caizh/Desktop/docker-compose-monitor.yml down

須要注意,down以後grafana中的登錄信息,配置等就沒了,會自動刪除容器,若不想刪除能夠用 docker stop 容器名 來中止容器

 

雖然簡單,但仍是先配一次熟悉一下爲好~

 

內容較多,不是很詳細,能夠多參考以前的隨筆~

相關文章
相關標籤/搜索