PMM使用有一段时间了,但目前仅是用来做数据库的性能监控。
是的,这告警功能确实太操蛋了。
由于图形部分使用的是grafana,Percona提供的模板中使用了大量的变量,却不能直接用来添加告警。因此今天就试试是否可以其他方式来解决这个问题。
准备PMM Server
# 打开测试的PMM Server,发现主界面提示可以升级到2.1.0
# 直接Update就可以了。
# 升级完成,版本2.1.0
Percona对PMM的更新真是很勤,基本上每个月都有新版本发布。
看介绍又加了不少新东西。恩,找到了当年追火影、海贼的感觉。
PMM客户端准备
# 由于PMM2只支持版本2以上的客户端,要单独下载:
https://www.percona.com/downloads/pmm2/
# 安装客户端:
# 配置PMM客户端:
[root@bogon caihao]# pmm-admin config --server-insecure-tls --server-url=https://admin:XXX@10.7.XX.XX:443 10.7.70.187 generic DAT_10.7.70.187
Checking local pmm-agent status...
pmm-agent is running.
Registering pmm-agent on PMM Server...
Registered.
Configuration file usr/local/percona/pmm2/config/pmm-agent.yaml updated.
Reloading pmm-agent configuration...
Configuration reloaded.
Checking local pmm-agent status...
复制
# 添加MySQL监控
[root@bogon caihao]# pmm-admin add mysql --query-source=perfschema --username=root --password=XXXXX address=10.7.70.187:3306
MySQL Service added.
Service ID : service_id/f523464b-d3dc-49eb-8e53-19ec2ce43a8a
Service name: address=10.7.70.187:3306
[root@bogon caihao]# pmm-admin list
Service type Service name Address and port Service ID
MySQL address=10.7.70.187:3306 127.0.0.1:3306 service_id/f523464b-d3dc-49eb-8e53-19ec2ce43a8a
Agent type Status Agent ID Service ID
pmm-agent connected agent_id/52b27971-de62-454c-9f66-ebcc983ded5e
node_exporter running agent_id/20005cc5-c4c3-4a36-99e2-f731ea30c071
mysqld_exporter running agent_id/9d515de9-7838-4b62-95c7-124bfee08435 service_id/f523464b-d3dc-49eb-8e53-19ec2ce43a8a
qan-mysql-perfschema-agent running agent_id/560b7757-31fd-4c3f-9942-b588c627bad6 service_id/f523464b-d3dc-49eb-8e53-19ec2ce43a8a
复制
# 添加MongoDB监控
[root@bogon caihao]# pmm-admin add mongodb --username=super --password=XXX address=10.7.70.187:27017/admin
MongoDB Service added.
Service ID : service_id/f44b742d-a2b2-4403-b1c4-cda06dc8bac1
Service name: address=10.7.70.187:27017/admin
[root@bogon caihao]#
[root@bogon caihao]# pmm-admin list
Service type Service name Address and port Service ID
MySQL address=10.7.70.187:3306 127.0.0.1:3306 service_id/f523464b-d3dc-49eb-8e53-19ec2ce43a8a
MongoDB address=10.7.70.187:27017/admin 127.0.0.1:27017 service_id/f44b742d-a2b2-4403-b1c4-cda06dc8bac1
Agent type Status Agent ID Service ID
pmm-agent connected agent_id/52b27971-de62-454c-9f66-ebcc983ded5e
node_exporter running agent_id/20005cc5-c4c3-4a36-99e2-f731ea30c071
mysqld_exporter running agent_id/9d515de9-7838-4b62-95c7-124bfee08435 service_id/f523464b-d3dc-49eb-8e53-19ec2ce43a8a
qan-mysql-perfschema-agent running agent_id/560b7757-31fd-4c3f-9942-b588c627bad6 service_id/f523464b-d3dc-49eb-8e53-19ec2ce43a8a
mongodb_exporter running agent_id/443f333e-e35f-4794-be3c-57746d68d84c service_id/f44b742d-a2b2-4403-b1c4-cda06dc8bac1
qan-mongodb-profiler-agent running agent_id/f190d3de-c4cf-4a17-9cf7-172b87785444 service_id/f44b742d-a2b2-4403-b1c4-cda06dc8bac1
复制
配置钉钉告警
# 由于测试环境内网对smtp有限制,因此只能用钉钉来做。
# URL填添加一个丁丁的机器人地址。
自定义告警页面
PMM自带的模板中,是不可以自定义告警的,因此要单独设计自己的告警页面。
# 我们以 MySQL Instance Summary 为模板,建立一个新页面。
# 自带模板是只读,需另存一个可编辑的
# 确认保存
# 定义个好听的名字
# 保存新建的自定义页面
# 现在,在自定义的页面中,图形已经可以随意编辑修改。
# 首先把不需要告警的指标全部remove掉
# 修改一个指标试试,比如MySQL连接数指标
# 告警要尽量精简,这里我只关注当前连接数,最大连接和用户最大连接都删掉。
# 删除后大概就这样子
# 配置告警部分,此时会出现万恶的提示:不支持模板变量
# 比如这种带$ 都是模板变量。
# 由于我希望一个图可以监控所有的实例,因此把变量进行替换,service_name 使用正则表达式来取所有实例。
修改后上面的图形已经可以显示所有的mysql库了。
注意:等于号后面加个 ~ 才能识别正则( =~ )
# 这样修改后,告警部分也可以添加了。
# 配置一个连接数超过500的钉钉告警。
测试下,已经可以获取当前3个数据库的连接数
最后,一定记得保存。
返回后,已经可以看到绿色的健康爱心了。以后添加的数据库也会自动加入到这个指标告警中。
以下是初步完成了一个告警面板,包括连接数、running会话、QPS、主从延迟、锁、慢查询等指标。
以后监控的机器多了,会有齐刷刷、整齐划一的感觉。
告警功能测试
下面就找几个监控指标压测下,试试告警功能是不是管用。
# 来个32并发的insert试试,主要针对QPS和主从延迟
# 绿心已经变红碎裂,很形象。。。
# 钉钉上也收到了Alerting告警信息 主从延迟 253,QPS 2214
# 停止压测,过一会恢复正常。
# 恢复了会收到OK的通知
后继补充
PMM整体来说算是一款不错的监控产品,针对MySQL、PG、Mongo都有很专业的指标统计,而且部署简单整套打包到容器中。2.0之后底层持久化数据库从MySQL更换为PG后,性能更是有很大提升。
但是相比传统的Zabbix、Open-Falcon等主流监控软件,PMM的告警配置实在很繁琐,告警频率缺少更细粒度的控制、告警内容与展示还不够丰富。这方面还要再研究下。
公众号这种东西瞎写很简单,坚持下去却很难。总有一些无形的力量会鞭策着你,比如最近的新闻,网易、华为啥的。
人生总是充满惊喜。为了选一张图,有时候会意外发现一些神奇的网站。
评论
