Percona 开源监控方案 PMM 详解

2024-09-05 14:52

本文主要是介绍Percona 开源监控方案 PMM 详解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 前言
    • 1. 安装部署
      • 1.1 Server 安装
      • 1.2 Client 安装
    • 2. 监控数据库
      • 2.1 MySQL
      • 2.2 PostgreSQL
    • 3. Dashboard 介绍
    • 总结

前言

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-55PMM Server:URL    : https://172.16.121.152:443/Version: 2.42.0PMM Client:Connected        : trueTime drift       : 5.376756msLatency          : 910.726µsConnection uptime: 100pmm-admin version: 2.42.0pmm-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-node1Table 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-5e874ace0e33Agent 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 监控如何部署和安装,并且接入数据库实例,这块工具非常强大,是一款企业级的数据库监控方案。

这篇关于Percona 开源监控方案 PMM 详解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1139271

相关文章

Qt spdlog日志模块的使用详解

《Qtspdlog日志模块的使用详解》在Qt应用程序开发中,良好的日志系统至关重要,本文将介绍如何使用spdlog1.5.0创建满足以下要求的日志系统,感兴趣的朋友一起看看吧... 目录版本摘要例子logmanager.cpp文件main.cpp文件版本spdlog版本:1.5.0采用1.5.0版本主要

Linux ls命令操作详解

《Linuxls命令操作详解》通过ls命令,我们可以查看指定目录下的文件和子目录,并结合不同的选项获取详细的文件信息,如权限、大小、修改时间等,:本文主要介绍Linuxls命令详解,需要的朋友可... 目录1. 命令简介2. 命令的基本语法和用法2.1 语法格式2.2 使用示例2.2.1 列出当前目录下的文

MySQL中的交叉连接、自然连接和内连接查询详解

《MySQL中的交叉连接、自然连接和内连接查询详解》:本文主要介绍MySQL中的交叉连接、自然连接和内连接查询,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、引入二、交php叉连接(cross join)三、自然连接(naturalandroid join)四

Go 语言中的select语句详解及工作原理

《Go语言中的select语句详解及工作原理》在Go语言中,select语句是用于处理多个通道(channel)操作的一种控制结构,它类似于switch语句,本文给大家介绍Go语言中的select语... 目录Go 语言中的 select 是做什么的基本功能语法工作原理示例示例 1:监听多个通道示例 2:带

mysql的基础语句和外键查询及其语句详解(推荐)

《mysql的基础语句和外键查询及其语句详解(推荐)》:本文主要介绍mysql的基础语句和外键查询及其语句详解(推荐),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋... 目录一、mysql 基础语句1. 数据库操作 创建数据库2. 表操作 创建表3. CRUD 操作二、外键

Spring Boot项目部署命令java -jar的各种参数及作用详解

《SpringBoot项目部署命令java-jar的各种参数及作用详解》:本文主要介绍SpringBoot项目部署命令java-jar的各种参数及作用的相关资料,包括设置内存大小、垃圾回收... 目录前言一、基础命令结构二、常见的 Java 命令参数1. 设置内存大小2. 配置垃圾回收器3. 配置线程栈大小

鸿蒙中@State的原理使用详解(HarmonyOS 5)

《鸿蒙中@State的原理使用详解(HarmonyOS5)》@State是HarmonyOSArkTS框架中用于管理组件状态的核心装饰器,其核心作用是实现数据驱动UI的响应式编程模式,本文给大家介绍... 目录一、@State在鸿蒙中是做什么的?二、@Spythontate的基本原理1. 依赖关系的收集2.

Redis实现延迟任务的三种方法详解

《Redis实现延迟任务的三种方法详解》延迟任务(DelayedTask)是指在未来的某个时间点,执行相应的任务,本文为大家整理了三种常见的实现方法,感兴趣的小伙伴可以参考一下... 目录1.前言2.Redis如何实现延迟任务3.代码实现3.1. 过期键通知事件实现3.2. 使用ZSet实现延迟任务3.3

C语言函数递归实际应用举例详解

《C语言函数递归实际应用举例详解》程序调用自身的编程技巧称为递归,递归做为一种算法在程序设计语言中广泛应用,:本文主要介绍C语言函数递归实际应用举例的相关资料,文中通过代码介绍的非常详细,需要的朋... 目录前言一、递归的概念与思想二、递归的限制条件 三、递归的实际应用举例(一)求 n 的阶乘(二)顺序打印

Python Faker库基本用法详解

《PythonFaker库基本用法详解》Faker是一个非常强大的库,适用于生成各种类型的伪随机数据,可以帮助开发者在测试、数据生成、或其他需要随机数据的场景中提高效率,本文给大家介绍PythonF... 目录安装基本用法主要功能示例代码语言和地区生成多条假数据自定义字段小结Faker 是一个 python