微服务监控和报警(三)-Prometheus配置Grafana图标监控和报警
1、安装Grafana
1.2、docker-compose.yml
version: "3" services: prometheus: image: prom/prometheus:v2.4.3 container_name: 'prometheus' volumes: - ./prometheus/:/etc/prometheus/ ports: - '8999:9090' grafana: image: grafana/grafana:5.2.4 container_name: 'grafana' ports: - '3000:3000' volumes: - ./grafana/config/grafana.ini:/etc/grafana/grafana.ini - ./grafana/provisioning/:/etc/grafana/provisioning/ env_file: - ./grafana/config.monitoring depends_on: - prometheus
1.3、grafana.ini,配置告警发送邮件的地址
#################################### SMTP / Emailing ########################## # 配置邮件服务器 [smtp] enabled = true # 发件服务器 host = smtp.qq.com:465 # smtp账号 user = xxxxxxxx@qq.com # smtp 密码 password = xxxxxxxx # 发信邮箱 from_address = xxxxxxxx@qq.com # 发信人 from_name = caofanqi
1.4、datasource.yml 数据源配置为Prometheus
# config file version apiVersion: 1 deleteDatasources: - name: Prometheus orgId: 1 datasources: - name: Prometheus type: prometheus access: proxy orgId: 1 url: http://prometheus:9090 basicAuth: false isDefault: true version: 1 editable: true
1.5、config.monitoring admin登陆密码配置,是否允许注册
GF_SECURITY_ADMIN_PASSWORD=password GF_USERS_ALLOW_SIGN_UP=false
1.6、运行 docker-compose -f docker-compose.yml up 命令
1.7、访问http://127.0.0.1:3000/ 如下,安装完成
2、创建Dashboard
2.1、登陆grafana,用户名admin,密码password,如下,还没有Dashboard,我们导入dashboard.json文件进行创建,完成后,可以看到这里的统计页面比Prometheus自带的好的多,可以通过右上角进行时间维度的修改。
3、告警渠道设置
Alerting-> Notification channels -> Add channel
可以看到支持的类型有很多,我们选择Email,填写要发送的邮箱,点击测试,邮箱收到了测试邮件
4、创建错误规则,达到指定要求,发送邮件告警
4.1、在程序中制造错误,并不断访问
这时,通过Grafana可以看到,Rate和Error都明显升高
4.2、配置错误规则,发送告警信息 Errors -> Edit
将PromQL修改为如下:
点击Alert-> Create Alert ,进行告警规则设置,我们这里设置,每隔10s评估以下表达式,如果conut出来的值大于1就告警
Notifications,设置通知方式,和信息。我们选择之前的发送邮件
当如下图出现碎裂的红心,说明已经发送告警了
我们的邮箱收到了邮件,如下
项目源码:https://github.com/caofanqi/study-security/tree/dev-prometheus2