Percona 开源监控方案 PMM 详解

news2024/9/20 20:23:06

文章目录

  • 前言
    • 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-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 监控如何部署和安装,并且接入数据库实例,这块工具非常强大,是一款企业级的数据库监控方案。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2115965.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vulhub ThinPHP5 2-rce远程代码执行漏洞

1.打开环境 进入环境所在的文件 docker-compose up -d 一键启动 2.浏览器访问环境 3.构造payload ?s/index/index/L/${phpinfo()} 4.写入一句话木马 ?s/Index/index/name/${print(eval($_POST[cmd]))} 5.使用蚁剑连接 http://192.168.10.233:8080/?s/Index/index/name…

SpringMVC基于注解使用:国际化

01-国际化介绍 首先在bootstrap下载个页面 下载后把登录页面的代码粘上去 然后再登录页面代码上有些超链接需要再spring-mvc.xml里面配置下,登录页面才能正常显示 配置静态资源 国际化-根据浏览器语言国际化 现在是中文的情况,要改为英文 1.配置下属…

秒懂:进程优先级

1.概念 简单来说,进程优先级是对于资源访问顺序来说的,谁先访问资源,谁的优先级就高。 注意:这和权限概念不一样,权限是能不能访问。 2.情景引入 进程的运行,是在CPU上执行,每次执行只能执行CP…

JavaWeb【day09】--(Mybatis)

1. Mybatis基础操作 学习完mybatis入门后,我们继续学习mybatis基础操作。 1.1 需求 需求说明: 根据资料中提供的《tlias智能学习辅助系统》页面原型及需求,完成员工管理的需求开发。 通过分析以上的页面原型和需求,我们确定了…

寒冬下,你不知道的赛道!

见字如面,技术人雄起! 现在的环境怎样没有比技术人更有体会的了吧,但是我也不禁要问,还有那些赛道过的不错,还有谁在挣钱。因为能量是守恒的,西边不亮东边亮。真巧还真让我找到一些。 中药 2023年中国中药…

文件名管理器,一款免费的文件名管理工具,支持文件整理功能

文件名管理器是一款可以批量修改文件名的工具,但是相较于其他工具又有不同。除了批量重命名功能外,软件同时提供一些特色功能:把文件名插入到文本文件中、根据文件名写入音乐ID3信息,整理下载的视频资源、音乐分类整理等。软件提供…

大圣也得靠AI?深扒《黑神话:悟空》后的AI技术!

要说最近爆火刷屏的顶流热词,非《黑神话:悟空》莫属。 图片来源:新华社 《黑神话:悟空》游戏背景设定在一个宏大而神秘的神话宇宙中,融合了古代中国的神话传说与虚构的奇幻元素,构建了一个绚丽多彩的开放世…

019、JOptionPane类的常用静态方法详解

目录 JOptionPane类的常用静态方法详解 1. showInputDialog()方法 1.1基本用法 1.2带有默认值的输入框 1.3带有选项的输入对话框 1.4自定义图标的输入对话框 2. showConfirmDialog()方法 2.1基本用法 2.2自定义按钮和图标 2.3带有自定义组件的确认对话框 3. showMes…

Pipeline流水线通过git拉取Jenkinsfile报错 error: RPC failed; result=22, HTTP code = 404

Pipeline流水线通过git拉取Jenkinsfile报错 error: RPC failed; result22, HTTP code 404 在学习共享库时使用通过git拉取jenkinsfile时,报错在排查gitlab服务状态,网络通讯,防火墙规则以及Jenkins凭据均可以正常使用,最后发现的…

HTB-Tactics(Impacket工具集合 和 smb特殊共享)

前言 各位师傅大家好,我是qmx_07,今天给大家讲解Tactics靶机 渗透过程 信息搜集 服务器开启了smb协议 连接smb服务器 Admin$ 对应的是 C:\Windows 目录,是 Windows 自动创建的共享,主要用于执行一些与系统管理相关的操作,例如远程文件管…

Spring Boot3.x 启动自动执行sql脚本

1 引言 某些项目在首次启动时,需要先手动创建数据库表,然后再手动写入初始数据才能正常使用。为了省去这个手动操作过程,我们可以使用Spring Boot启动时执行sql脚本的配置,全自动完成这个过程。 2 配置 具体配置如下&#xff1…

Redis访问工具

使用Redis存储缓存数据,如何通过Java去访问Redis? 防止后面看晕,先来张图。 1. Redis的客户端库 Redis的客户端库是Redis官方提供的,用于让Java等编程语言与Redis服务器进行通信的工具包。常见的Redis客户端库有多个&#xff0c…

828华为云征文|Flexus X实例C#/.Net Core 结合(git代码管理、docker自定义镜像)快速发布部署-让你的项目飞起来~

目录 前言 环境准备 购买服务器配置 项目部署 项目准备(Dockerfile文件) Git部署并拉取代码 安装Git 配置Git用户信息 SSH密钥 安装docker 添加Docker GPG密钥 添加Docker官方软件源 再次更新软件包列表 安装docker 项目运行 构建镜像 …

MySQL 的基础 一 (连接池, SQL接口, 查询解析器, 查询优化器, 存储引擎接口, 执行器)

目录 1 MySQL数据库的连接池 2 网络连接必须让线程来处理 3 SQL接口:负责处理接收到的SQL语句 4 查询解析器:让MySQL能看懂SQL语句 5 查询优化器:选择最优的查询路径 6 调用存储引擎接口,真正执行SQL语句 7 执行器&…

UE4_后期处理_后期处理材质及后期处理体积三—遮挡物体描边显示

一、效果: 在很多游戏中为了玩家能看到墙面背后是否有敌人,会给被遮挡的敌人增加描边显示,效果如下: 参考: https://zhuanlan.zhihu.com/p/81310476 https://zhuanlan.zhihu.com/p/358140547 二、所需知识 知识点…

数据结构与算法学习day20-二叉树的最大深度、最小深度、完全二叉树的节点个数、平衡二叉树、二叉树所有路径

一、二叉树的最大深度 1.题目 104. 二叉树的最大深度 - 力扣(LeetCode) 2.思路 2.1递归法 二叉树节点的深度:指从根节点到该节点的最长简单路径边的条数或者节点数(取决于深度从0开始还是从1开始)二叉树节点的高度…

安卓玩机工具------vivo机型线刷救砖固件 下载工具操作步骤预览

vivo机型玩机 vivo机型虽然对于玩家来说相对可玩性较低。官方封闭bl锁。对于普通玩家来说只能 中规中矩使用机型。但目前有很多vivo机型通过第三方渠道已经可以解bl锁和root操作。但有时候玩机会遇到误操作或者其他系统性问题导致系统瘫痪不开机。 那么我们就需要具备一些救砖…

Linux网络——Socket编程函数

一.网络命令 1.ping ping命令用来检测网络是否连通,具体用法为: ping 任意网址 结果如下: 当出现上述字段时,证明网络是连通的,这里值得注意的是,ping命令执行之后会不断进行网络检测,不会停…

Linux——网络基础Socket编程

目录 一计算机网络背景 二协议 1初始协议 1.1协议分层 1.2OSI七层模型 1.3TCP/IP五层模型 2再始协议 2.1为什么要有TCP/IP协议 2.2TCP/IP与OS的关系 2.3所以什么是协议 三网络传输基本流程 1局域网(以太网)通信原理 1.1认识mac地址 2同…

【软件设计师真题】下午题第一大题---数据流图设计

解答数据流图的题目关键在于细心。 考试时一定要仔细阅读题目说明和给出的流程图。另外,解题时要懂得将说明和流程图进行对照,将父图和子图进行对照,切忌按照常识来猜测。同时应按照一定顺序考虑问题,以防遗漏,比如可以…