一、项目背景
1、项目背景
由于项目采用微服架构,从云服务定制化程度来看,利用AWS提供的基础性架构EC2比较合适。AWS自带了CloudWatch具有监听EC2功能,但是出现宕机或者达到预警阀值,需要提供发邮件或短信报警功能,需要购买CloudWatch收费项目。项目采用Docker Swarm架构,曾经自己搭建过通过Haproxy+Keepalived方式,通过反向代理来实现负载均衡功能。实际测试,发现在AWS VPC环境下,跟利用AWS ELB负载均衡器,网络吞吐量相比,AWS ELB性能更优。所以用AWS ELB作为微服的负载均衡器。
服务虽然部署了,对服务的监控也很重要,对Docker Swarm管理,可以利用portainer管理工具。具体怎么安装使用参照其官网安装说明:https://portainer.io/install.html。
对Docker Swarm服务监控,可以采用swarmprom。swarmprom利用Grafana开源版本制作的Docker镜像,能够实现Docker Swarm集群机器大部分功能。如节点CPU,内存,IOPS,容器内存占用使用情况等。
但是,swarmprom并没有提供针对单个节点,挂载的磁盘使用空间情况的监控。所以针对这种情况,自己写了一个Python脚本程序来监控每个节点,挂载的磁盘使用空间情况,挂载的磁盘超过设定的阀值,就会发送告警邮件通知。
二、Docker Swarm集群节点服务监控
1、安装swarmprom
$ git clone https://github.com/stefanprodan/swarmprom.git
2、配置通过Email发送告警信息
$ vi docker-compose.yml
在第60行左右,配置SMTP邮件信息,具体修改grafana服务参照如下:
grafana:
image: stefanprodan/swarmprom-grafana:5.0.1
networks:
- net
environment:
- GF_SECURITY_ADMIN_USER=${ADMIN_USER:-admin}
- GF_SECURITY_ADMIN_PASSWORD=${ADMIN_PASSWORD:-admin}
- GF_USERS_ALLOW_SIGN_UP=false
#- GF_SERVER_ROOT_URL=${GF_SERVER_ROOT_URL:-localhost}
- GF_SMTP_ENABLED=${GF_SMTP_ENABLED:-false}
- GF_SMTP_FROM_ADDRESS=${GF_SMTP_FROM_ADDRESS:-grafana@test.com}
- GF_SMTP_FROM_NAME=${GF_SMTP_FROM_NAME:-Grafana}
- GF_SMTP_HOST=${GF_SMTP_HOST:-smtp:25}
- GF_SMTP_USER=${GF_SMTP_USER}
- GF_SMTP_PASSWORD=${GF_SMTP_PASSWORD}
volumes:
- grafana:/var/lib/grafana
deploy:
mode: replicated
replicas: 1
placement:
constraints:
- node.role == manager
resources:
limits:
memory: 128M
reservations:
memory: 64M
3、编辑swarm.sh脚本
$ vi swarmprom.sh
我这里配置的是GMail邮箱,具体修改内容如下:
$ cat sw