Shuo
Shuo I'm a DBA(Database Administrator), we can share and discuss MySQL, MongoDB, Redis and other databases here, also including learning Python, Shell, Golang together.

MySQL手记9 — Percona Monitoring Management(PMM监控)


MySQL手记9 — Percona Monitoring Management(PMM监控)

一、主要技术方案

1.1 PMM

Percona Monitoring Management,下称PMM,Percona的监控管理系统,详情:
https://www.percona.com/doc/percona-monitoring-and-management/index.html
PMM分为两个部分:Client和Server

(1)Clinet端:

由各种exporter(mysql_exporter、mongodb_exporter、node_exporter、redis_exporter…)外加queries工具、pmm-admin工具组成。
pmm-admin为管理工具,例如用以添加、删除所监控数据库实例
pmm-mysql-queries-0
pmm-mongodb-queries-0

这两者用以收集MySQL和MongoDB的query performance发送到QAN API
(https://www.percona.com/doc/percona-monitoring-and-management/conf-mysql.html
)
(其中query的监控需要数据库按照文档进行配置,否则不能进行query监控)

(2)Server端:

Query Analytics:
QAN API:接收QAN agent传来的数据
QAN Web App:用来展示Query Analytics data的wen应用
Metrics Monitor:展示监控数据metrics:
Percona Dashboard:Percona一系列Grafana的dashboards
Consul:为提供Prometheus hosts的操作(添加、删除)等
Prometheus:连接exporters并聚合其传入的metrics数据
Grafana:用以展示Prometheus的数据
Orchestrator:MySQL复制拓扑结构的可视化工具(后续将单独介绍此工具)

虽然新版本的PMM默认为打开,最好在启动时候指定打开Orchestrator:

1
2
docker ... -e ORCHESTRATOR_ENABLED=true -e ORCHESTRATOR_USER=root -e ORCHESTRATOR_PASSWORD=root ...

Orchestrator地址:http://127.0.0.1/orchestrator

通过如下页面进行添加:

添加后,可以看到添加的实例的拓扑关系:

此外,还可以修改MySQL复制的相关配置:

1.2 监控实例

监控实例的添加和删除使用pmm-admin工具进行管理。pmm-admin需要使用root用户运行:

pmm-admin –help可以看到使用详情。

1.3 PMM的安装

可使用docker进行安装:

1
2
 docker run -d -e METRICS_RETENTION=1440h --name pmm-server-1-2020-2 percona/pmm-server:1

1
2
可以看到,使用dock er安装时,可以定制化一些需要的配置,例如:

1
2
-e METRICS_RETENTION=1440h:metrics保留1440小时

还有其它的配置可供挑选:https://www.percona.com/doc/percona-monitoring-and-management/glossary.option.html

二、添加/删除实例

2.1 添加MySQL实例

1
2
pmm-admin add mysql --user testuser --password passwd --host 192.168.0.1 --port 3306 testdb-master

添加完成后,使用pmm-admin工具显示监控的实例列表信息:

2.2 添加Mongodb实例

1
2
  pmm-admin add mongodb --uri mongodb://admin:password@172.27.2.1:27017/admin mongodb-001[linux:metrics] OK, already monitoring this system.[mongodb:metrics] OK, now monitoring MongoDB metrics using URI admin:***@172.27.2.1:27017/admin[mongodb:queries] OK, now monitoring MongoDB queries using URI admin:***@172.27.2.1:27017/admin[mongodb:queries] It is required for correct operation that profiling of monitored MongoDB databases be enabled.[mongodb:queries] Note that profiling is not enabled by default because it may reduce the performance of your MongoDB server.[mongodb:queries] For more information read PMM documentation (https://www.percona.com/doc/percona-monitoring-and-management/conf-mongodb.html).

1
2
​同理查看pmm-admin list:

2.3 添加Redis实例

(1)redis_exporter

由于PMM本身是不自带Redis监控的,但是其中的Prometheus可以收集到redis的数据,所以可以使用pmm-admin中的external:service来添加Redis实例(例如:https://github.com/oliver006/redis_exporter):

使用redis_exporter收集metrics,并暴露端口给Prometheus:

1
2
 ./redis_exporter  -redis.addr 172.27.0.1:7000 --redis.password redisPasswd  -web.listen-address :9121 

默认的端口为9121。

(2)PMM添加Redis实例

1
2
pmm-admin add external:service  S-Redis-master-001 --service-port=9121

其中–service-port=9121即为上步骤中redis_exporter暴露的端口号。

(3)查看redis实例添加情况

三、 删除监控实例

使用pmm-admin remove,即可方便地删除监控的节点:

1
2
3
4
 pmm-admin remove mysql:metrics tuya_testdb-ind-master

 OK, removed MySQL metrics mysql-3306-master from monitoring.

四、页面上进行添加/删除实例

PMM的dashboards上提供了页面上的操作,详情如下:

点击对应的添加项,可以添加不同类型的实例:

至此,PMM基本介绍完毕,实际环境中,需要对于很多细节进行修改优化,以便更加适用,并降低监控对于​数据库实例的影响。
对于监控数据来说,收集得越仔细,就更容易排查问题,但是也对数据库实例的负载造成影响,所以需要进行权衡,选择更为适宜的比例进行监控​。

欢迎关注公众号:朔的话

comments powered by Disqus