监控架构-Prometheus-02
今日内容:
- 基于prometheus的nginx监控
- 基于prometheus的Mysql监控
- 基于prometheus的docker容器监控
- prometheus的告警配置
一、前期沟通
在监控开始部署前,需要在组内完成沟通:
- 确定监控指标
- 可能需要开发人员配合书写监控页面
- 等等其他沟通
二、环境准备
监控的目标确定:
监控的项目 |
exporter |
涉及的主机 |
系统基本信息 |
node_exporter |
所有主机 |
负载均衡,web |
nginx_exporter |
负载均衡,web服务器 |
web中间件:php、java |
jmx_exporter |
web服务器 |
数据库 |
mysqld_exporter |
数据库服务器 |
redis |
redis_exporter |
缓存服务器 |
存储 |
xxx_exporter |
nfs、对象存储(OSS)、Ceph、minio等 |
容器 |
cdvisor |
容器服务器 |
三、搭建流程
这里演示nginx和mysql的exporter
3.1 nginx_exporter部署
3.1.1 准备web页面
按照插件需求,需要开启status页面
3.1.2 客户端部署nginx_exporter
插件地址:https://github.com/nginxinc/nginx-prometheus-exporter
部署方式有三种:
- 下载二进制包,直接使用
- docker方式部署
- 下载插件源码包,编译安装
二进制包的方式,前面我们已经在部署node_exporter时用过,这里采用docker的方式部署。
部署在拥有docker环境的服务器–docker01(10.0.0.81)中
1、创建docker容器
2、检查环境是否启动成功
3、创建ngx_exporter容器
4、测试访问metrics页面
http://10.0.0.81:9113/metrics
3.1.3 服务端配置
修改prometheus的配置文件,把被监控器加进去
重启服务,可在网页查看是否添加成功
3.1.4 Grafana页面-导入模板
nginx exporter的监控模板下载(ID:9512):
https://grafana.com/grafana/dashboards/9512-nginx-connections-overview/
1、下载json文件,导入模板
2、默认界面如下
这里面的UP
是怎么来的?右下角的mapping
设置
其他面板没有数据,需要自行配置
3.1.5 Grafana页面-配置面板
(踩坑)
注意,这里涉及到一个问题:在使用第三方模板时,多数情况下是方便的,但是涉及到某些特殊情况,exporter收集的参数和模板不一定匹配,需要根据与实际情况修改。
比如面板中自带的查询语句
在http://10.0.0.81:9113/metrics中,根本就没有`nginx_connections_processed_total`这个函数,需要修改成效果类似的`nginx_http_requests_total`函数
效果如下,数据出来了
但是可以看到,我们自行使用的函数,其参数只有2个(instance、job),而此模板面板带的参数有4个(instance、namespace、app、datasource),参数不匹配,需要对模板参数进行设置
3.1.6 Grafana页面-模板参数设置
进到模板对应的设置页面,创建变量
填写信息,创建job
变量
这样修改后,在3.1.5
中不能使用“$job”
的问题就解决了
删除其他多余的变量,再修改instance
最后该面板的效果
3.1.7 nginx exporter小结
部署小结:
- 有相对应的环境
- 部署export(docker,直接部署)
- 测试exporter是否有数据 10.0.0.81:9113/metrics
- 配置prometheus服务端管理exporter
- 配置grafana(仪表盘(模板),自定义仪表盘(自定义job变量和instance变量))
3.2 mysqld_exporter部署
本实验需要两台服务器配合:
db01 部署、配置mysqld
docker01 部署mysqld_exporter
获取exporter:https://github.com/prometheus/mysqld_exporter
3.2.1 db01配置
按照mysqld_exporter的需求,创建用户并授权
3.2.2 docker01配置
1、创建连接数据库的文件
2、配置连接数据库的变量
3、启动Mysqld_exporter
4、测试
查看docker容器状态,显示连不上数据库服务器
尝试修改Mysql的用户权限设置也没用,官方镜像存在问题
3.2.3 服务端配置
1、修改prometheus服务端配置文件,新增监控
2、测试:在metrics中mysql up的值始终是0,容器确实有问题
官方镜像存在问题,需要自定义镜像!
3.2.4 自定义docker镜像部署
1、为解决3.2.3跟3.2.4的问题,创建Dockerfile自定义mysqld_exporter镜像
2、在github下载mysqld_exporter,放到对应的文件夹中
3、执行Dockerfile,创建镜像
4、重新运行容器
5、测试
查看容器日志:正常,没有连接数据库的报错
再次测试访问metrics页面,正常
后续可以使用获得的数据,去grafana配置监控页面了
3.3 容器监控-cdvisor
3.3.1 部署cdvisor
docker01服务器操作
一键部署,注意端口
查看是否正常启动
测试访问页面:http://10.0.0.81:8080
3.3.2 Prometheus配置
mn04操作
修改yml配置文件,对接Cdvisor
重启服务,访问prometheus网页查看效果
3.3.3 对接Grafana展示
模板ID:10619
导入
默认效果
选择“Host”后,监控正常
四、警告配置(Altermanager)
用于实现监控告警功能
使用流程:
- 部署Alertermanager(在prometheus服务端部署)
- 修改alertmanger配置
- 配置告警规则rules与修改服务端配置
4.1 部署Altermanager
1、获取安装包:https://github.com/prometheus/alertmanager/releases/tag/v0.27.0
2、解压安装
3、前台启动测试
4、检查进程与端口
4.2 配置Aler(对接第三方平台方式)
对接第三方平台(睿象云)的方式
https://www.aiops.com
4.2.1 获取aiops的apikey
首页点击监控工具,选择prometheus
填写应用名称,保存获取key
得到key,可按右边的方式配置
4.2.3 配置文件
1、按照官方提示,修改yml配置文件,对接第三方平台
配置完重启alertmanager服务
2、访问页面,查看状态
http://10.0.0.64:9093/#/status
4.2.4 测试-制造故障
让mn03关机,收到警告与邮件
警告如图
邮件如图
4.3 配置Aler(邮件告警方式)
4.3.1 配置文件
4.3.2 Prometheus对接Altermanager
1、修改配置文件,开启警告功能,yml文件片段
2、创建prometheus_alert_rules.yml
文件,内容如下:
3、配置完重启服务
4.3.3 web页面检查
在web页面检查规则,如图存在,则配置成功
4.3.4 测试-制造故障
把grafana的服务器(mn03)shutdown,成功收到告警
先是prometheus页面告警
而后收到邮件告警