Percona 开源监控方案 PMM 详解

发布于:2024-09-18 ⋅ 阅读:(13) ⋅ 点赞:(0)

前言

Percona Monitoring and Management (PMM) 是 Percona 公司基于业界流行的组件 Prometheus 和 Grafana 设计开发的一体化数据库监控解决方案。本篇文章介绍如何使用它监控 MySQL 和 PostgreSQL 两款数据库。

1. 安装部署

PPM 有两个组件分别是 Server 端和 Client Agent 端,其中 Server 端安装需要使用 docker,由于 docker 被墙了,所以直接使用 docker pull 命令会超时,可以先把镜像下载下来,然后再 load 安装。

1.1 Server 安装

如果可以访问外网,那么直接使用 pull 命令即可。

-- docker 安装
docker pull percona/pmm-server:2

离线安装,加载镜像:

docker load -i pmm-server-2.tar

创建数据卷容器:

docker volume create pmm-data

创建并启动容器:

docker run --detach --restart always \
--publish 443:443 \
-v pmm-data:/srv \
--name pmm-server \
percona/pmm-server:2

验证:

docker ps -a
CONTAINER ID   IMAGE                  COMMAND                  CREATED       STATUS                    PORTS                                           NAMES
184206a00f3d   percona/pmm-server:2   "/opt/entrypoint.sh"     5 hours ago   Up 4 hours (healthy)      80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp   pmm-server

参考资料:Docker 安装 PMM

访问地址:https://{Server IP}/graph/dashboards 默认用户:admin 密码:admin

请添加图片描述

1.2 Client 安装

PMM 的 Client 需要到官网单独下载,地址:https://www.percona.com/downloads
在这里插入图片描述
下载后,上传到需要监控到服务器上面,执行如下命令:

# 解压缩
tar -zxvf pmm2-client-2.42.0.tar.gz 
# 移动到 /usr/local
mv pmm2-client-2.42.0 /usr/local/
# 进入目录
cd pmm2-client-2.42.0/
# 执行安装
./install_tarball
# 输出:
Installing into /usr/local/percona/pmm2...
Successfully installed PMM Client to /usr/local/percona/pmm2

# 环境变量配置
export PATH=$PATH:/usr/local/percona/pmm2/bin

配置 agent 节点,修改 server-address、server-password 两个 Server 节点的连接参数。

pmm-agent setup --config-file=/usr/local/percona/pmm2/config/pmm-agent.yaml --server-address=172.16.121.152 --server-insecure-tls --server-username=admin --server-password=admin123
INFO[2024-09-04T13:54:38.390+08:00] Loading configuration file /usr/local/percona/pmm2/config/pmm-agent.yaml.  component=setup
INFO[2024-09-04T13:54:38.391+08:00] Temporary directory is not configured and will be set to /usr/local/percona/pmm2/tmp  component=setup
INFO[2024-09-04T13:54:38.391+08:00] Using /usr/local/percona/pmm2/exporters/node_exporter  component=setup
INFO[2024-09-04T13:54:38.391+08:00] Using /usr/local/percona/pmm2/exporters/mysqld_exporter  component=setup
INFO[2024-09-04T13:54:38.391+08:00] Using /usr/local/percona/pmm2/exporters/mongodb_exporter  component=setup
INFO[2024-09-04T13:54:38.391+08:00] Using /usr/local/percona/pmm2/exporters/postgres_exporter  component=setup
INFO[2024-09-04T13:54:38.391+08:00] Using /usr/local/percona/pmm2/exporters/proxysql_exporter  component=setup
INFO[2024-09-04T13:54:38.391+08:00] Using /usr/local/percona/pmm2/exporters/rds_exporter  component=setup
INFO[2024-09-04T13:54:38.391+08:00] Using /usr/local/percona/pmm2/exporters/azure_exporter  component=setup
INFO[2024-09-04T13:54:38.391+08:00] Using /usr/local/percona/pmm2/exporters/vmagent  component=setup
INFO[2024-09-04T13:54:38.391+08:00] Updating PMM Server address from "172.16.121.152" to "172.16.121.152:443".  component=setup
Checking local pmm-agent status...
pmm-agent is not running.
Registering pmm-agent on PMM Server...
Registered.
Configuration file /usr/local/percona/pmm2/config/pmm-agent.yaml updated.
Please start pmm-agent: `pmm-agent --config-file=/usr/local/percona/pmm2/config/pmm-agent.yaml`.

通过服务的方式来管理 agent:

vi /etc/systemd/system/pmm-agent.service 

写入配置信息:

[Unit]
Description=pmm-agent
After=time-sync.target network.target

[Service]
Type=simple
ExecStart=/usr/local/percona/pmm2/bin/pmm-agent --config-file=/usr/local/percona/pmm2/config/pmm-agent.yaml
Restart=always
RestartSec=2s

[Install]
WantedBy=multi-user.target

刷新配置:

systemctl daemon-reload

启动 anget:

systemctl start pmm-agent

可通过下方命令查询 agent 状态:

pmm-admin status

输出:

Agent ID : /agent_id/d1599b9e-7985-41d9-9d2a-1b754a25bd8f
Node ID  : /node_id/b129f3d1-51ed-47f5-8455-d851c38c8df0
Node name: 172-16-104-55

PMM Server:
	URL    : https://172.16.121.152:443/
	Version: 2.42.0

PMM Client:
	Connected        : true
	Time drift       : 5.376756ms
	Latency          : 910.726µs
	Connection uptime: 100
	pmm-admin version: 2.42.0
	pmm-agent version: 2.42.0
Agents:
	/agent_id/0f863af6-c12f-4437-9e37-dc6bdcc8a2ab mysqld_exporter Running 42002
	/agent_id/47c59e4e-2f1f-49e6-91b4-81e7fbe0e4c3 postgres_exporter Running 42003
	/agent_id/5e7f0b3b-59b0-4ea3-aa11-560cd14fb382 vmagent Running 42000
	/agent_id/89500881-98ce-4bac-b9ce-7f93e11ed37e mysql_slowlog_agent Running 0
	/agent_id/9a0445c3-f225-4fbd-881d-99202bc564d8 node_exporter Running 42001
	/agent_id/d68a6ebe-29de-4dbd-ab5f-6130866887bd postgresql_pgstatements_agent Running 0

2. 监控数据库

Clinet 端 Agent 安装成功后,就可以通过命令行的方式,添加本地数据库的监控。

2.1 MySQL

创建一个 mysql 采集账号:

CREATE USER 'pmm'@'127.0.0.1' IDENTIFIED BY 'pass' WITH MAX_USER_CONNECTIONS 10;
GRANT SELECT, PROCESS, REPLICATION CLIENT, RELOAD, BACKUP_ADMIN ON *.* TO 'pmm'@'127.0.0.1';

开启 MySQL 采集,默认是会开启所有的采集器:

  • –query-source:是慢 SQL 采集方式,none 表示不采集,slowlog 表示采集慢日志,performance 表示采集 performance_schema 中的数据。
  • –username:MySQL 用户名,使用上一步创建的用户。
  • –password:采集用户密码。
  • mysql-node1:这个是节点服务名称,由用户自定义。
  • 127.0.0.1:3306:MySQL 实例的地址。
pmm-admin add mysql --query-source=slowlog --username=pmm --password=pass mysql-node1 127.0.0.1:3306

输出:

MySQL Service added.
Service ID  : /service_id/479376e5-e549-4e6e-9f24-805f6cf2312e
Service name: mysql-node1

Table statistics collection enabled (the limit is 1000, the actual table count is 358).

通过 pmm-admin list 命令可以查看,该节点当前 agent 开启哪些采集:

Service type        Service name        Address and port        Service ID
MySQL               mysql-node1         127.0.0.1:3306          /service_id/479376e5-e549-4e6e-9f24-805f6cf2312e
PostgreSQL          test-pg             127.0.0.1:5432          /service_id/d52090cf-4836-401d-a1cc-5e874ace0e33

Agent type                           Status           Metrics Mode        Agent ID                                              Service ID                                              Port
pmm_agent                            Connected                            /agent_id/d1599b9e-7985-41d9-9d2a-1b754a25bd8f                                                                0 
node_exporter                        Running          push                /agent_id/9a0445c3-f225-4fbd-881d-99202bc564d8                                                                42001 
mysqld_exporter                      Running          push                /agent_id/0f863af6-c12f-4437-9e37-dc6bdcc8a2ab        /service_id/479376e5-e549-4e6e-9f24-805f6cf2312e        42002 
postgres_exporter                    Running          push                /agent_id/47c59e4e-2f1f-49e6-91b4-81e7fbe0e4c3        /service_id/d52090cf-4836-401d-a1cc-5e874ace0e33        42003 
mysql_slowlog_agent                  Running                              /agent_id/89500881-98ce-4bac-b9ce-7f93e11ed37e        /service_id/479376e5-e549-4e6e-9f24-805f6cf2312e        0 
postgresql_pgstatements_agent        Running                              /agent_id/d68a6ebe-29de-4dbd-ab5f-6130866887bd        /service_id/d52090cf-4836-401d-a1cc-5e874ace0e33        0 
vmagent                              Running          push                /agent_id/5e7f0b3b-59b0-4ea3-aa11-560cd14fb382                                                                42000

再使用下方命令查询具体的采集器:
请添加图片描述
如果想禁用某些采集器,再添加时,可使用 --disable-collectors 参数。

2.2 PostgreSQL

先创建采集使用的帐户。

CREATE USER pmm WITH SUPERUSER ENCRYPTED PASSWORD 'admin123';

开启本地 PostgreSQL 采集,需要注意的是 Query 采集需要安装 pg_stat_statements 插件。

pmm-admin add postgresql \
--username=pmm \
--password=admin123 \
--server-url=https://admin:admin123@172.16.121.152:443 \
--server-insecure-tls \
--service-name=test-pg

安装方式参考:pg_stat_statements 插件安装

3. Dashboard 介绍

这里是总览:
在这里插入图片描述
值得介绍的是,PMM 会采集 Slow SQL 并且帮助用户可视化:
在这里插入图片描述

总结

本篇文章介绍了 PMM 监控如何部署和安装,并且接入数据库实例,这块工具非常强大,是一款企业级的数据库监控方案。


网站公告

今日签到

点亮在社区的每一天
去签到