首先需要自己安装docker以及搭建好swarm集群,太简单就不在这里说了
1:docker-compose.yaml编写,包含grafana+influxdb+cadvisor编排。如下:
version: ‘3’
services:
influx:
image: influxdb
environment:
- PRE_CREATE_DB=cadvisor
volumes:
- influx:/var/lib/influxdb
ports:
- “8083:8083”
- “8086:8086”
deploy:
replicas: 1
placement:
constraints: [node.hostname == docker-10_59_1_170]
resources:
limits:
cpus: “4.00”
memory: 4g
grafana:
image: grafana/grafana
environment:
- GF_SMTP_ENABLED=true
- GF_SMTP_HOST=smtp.XXX.com:465
- GF_SMTP_USER=mon@xxx.com
- GF_SMTP_PASSWORD=PASSWORD
- GF_SMTP_FROM_ADDRESS=mon@xxx.com
ports:
- 0.0.0.0:3000:3000
volumes:
- grafana:/var/lib/grafana
depends_on:
- influx
deploy:
replicas: 1
placement:
constraints: [node.hostname == docker-10_59_1_170]
resources:
limits:
cpus: “2.00”
memory: 1g
cadvisor:
image: google/cadvisor
hostname: ‘{{.Node.Hostname}}’
command: -logtostderr -docker_only -storage_driver=influxdb -storage_driver_db=cadvisor -storage_driver_host=influx:8086
volumes:
- /:/rootfs:ro
- /var/run:/var/run:rw
- /sys:/sys:ro
- /var/lib/docker/:/var/lib/docker:ro
depends_on:
- influx
deploy:
mode: global
placement:
constraints: [node.role == worker]
resources:
limits:
cpus: “2.00”
memory: 1g
volumes:
influx:
driver: local
grafana:
driver: local
下面说明:(显示格式缩进不对,所以截图放在上面了)
influx:environment下创建仓库:cadvisor,开放端口,副本数:1,指定放在某台服务器上跑,资源限制
grafana:environment下是邮件配置信息,用于报警。开放端口,副本数:1,指定放在某台服务器上跑,资源限制
cadvisor:全部worker节点跑(我的主节点没有跑服务,所以没收集),资源限制
我这里使用的 driver: local 本地的,如果不喜欢可以使用挂卷的方式,保存到存储上会更好
启动/更新:docker stack deploy -c docker-compose.yaml monitor
删除:docker stack rm monitor
接下来配置grafana界面下报警:
1:配置数据源
2:设置报警方法
3:在视图下添加报警
一:登录grafana,配置数据源
我没设置账户密码,所以user和password为空(我没对外开放端口,内部使用的),test没有问题即可。我这里结合zabbix展示zabbix监控图还不错,大家有兴趣可以自己玩玩。
二:设置报警方法:
三:在视图下添加报警
创建视图并添加报警:
说明:/.*/ 是匹配所有容器,这样就把这个节点下所有的容器cpu监控信息拿到了
选择单位以及最小值
我这里只选了最大值以及当前值,不要忘记勾选As Table
完毕