【集群监控】Docker上部署Prometheus+Alertmanager+Grafana实现集群监控
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=: \
--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 : --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 : --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 : -v /Users/caizh/fsdownload/:/etc/alertmanager/config.yml --name alertmanager prom/alertmanager
如果配置文件加载成功,在 http://XXXX:9093/#/status 会看到Config中是你的配置文件中的配置,如下图
重新启动prometheus容器,来加载报警配置
docker run -d -p : --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: '' 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 容器名 来停止容器
虽然简单,但还是先配一次熟悉一下为好~
内容较多,不是很详细,可以多参考之前的随笔~
最新文章
- r-cnn学习(四):train_faster_rcnn_alt_opt.py源码学习
- Timer计时器
- hdu 5929 Basic Data Structure
- 二维码(QRcode)容量的计算与版本
- Codeforces Round #228 (Div. 1) A
- IOS 获得通讯录中联系人的所有属性 备用参考
- Flyweight 模式
- JS格式化数字金额用逗号隔开保留两位小数
- ParNew收集器
- angularjs ng-csv 异步下载
- [转] vue异步处理错误
- 我永远爱着OOP——第二单元作业总结
- nameode启动过程
- 从Mongo导出数据库到Excel
- java.lang.NumberFormatException 错误及解决办法
- Python 进制转换 二进制 八进制 十进制 十六进制
- Json的转换
- 20165312 2017-2018-2《JAVA程序设计》第8周学习总结
- Linux软件包安装
- 微软Power BI 每月功能更新系列——3月Power BI 新功能学习
热门文章
- CF1198E Rectangle Painting 2(最小割 思维
- yzoj1568: 数字组合 题解
- Js、layui获取单选框radio的几种方法
- 如何将 JavaScript 代码添加到网页中,以及 <;script>; 标签的属性
- Markdown 直接转换公众号文章,不再为排版花时间
- windows平台:查看端口占用情况,请杀死端口对应进程PID
- STL中关于全排列next_permutation以及prev_permutation的用法
- Scrapy高级用法
- 控制执行流程之break和continue
- elasticsearch Discovery 发现模块学习