Docker部署
下載
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
安裝
sudo yum install docker-ce
啟動
sudo systemctl start docker
加入開機啟動
sudo systemctl enable docker
如果想監控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 \ --publish=8080:8090 \ --detach=true \ --name=cadvisor \ google/cadvisor:latest
訪問http://XXX:8090可以看container的詳細信息(打開過程可能會比較慢)
在Docker中部署Prometheus
修改prometheus.yml,添加cAdvisor監控
- job_name: cadvisor1 static_configs: - targets: ['XXXX:8090'] #XXXX最好用真實的IP,不然可能會出問題
找不到prometheus.yml可以下載prometheus(https://prometheus.io/download/),解壓,包里有
運行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 參考另一篇:https://www.cnblogs.com/caizhenghui/p/9132414.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中啟用報警
配置過程參考:https://www.cnblogs.com/caizhenghui/p/9144805.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,可參考 https://www.cnblogs.com/caizhenghui/p/9132414.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 容器名 來停止容器
雖然簡單,但還是先配一次熟悉一下為好~
內容較多,不是很詳細,可以多參考之前的隨筆~