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

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【H2O2|全栈】关于HTML(3)HTML基础(二)

HTML相关知识 目录 HTML相关知识 前言 准备工作 标签的具体分类(二) 本文中的标签在什么位置使用? 本期前置知识点 超文本 超文本引用和源属性 图片标签 锚链接 iframe 锚点 预告和回顾 后话 前言 本系列博客将分享HTML相关…

【数据结构】你知道什么是二叉树的顺序存储结构吗?

文章目录 前言1. 顺序结构2. 实现顺序结构二叉树2.1 堆的概念与结构2.2 堆的实现2.2.1 向上调整算法2.2.2 向下调整算法 3. 结语 前言 二叉树一般可以使用两种结构存储,一种顺序结构,一种链式结构。本文将要介绍的是二叉树的顺序存储结构。 1. 顺序结构…

python安装以及访问openAI API

安装python 我是python小白,所以需要一步一步来,先安装。 一口吃不成胖子,记住。 从官网下载python,目前最新版本是3.12,但是据说稳定版3.11更好一点,所以,下载3.11,注意不要下载…

stm32的内部时钟源 | RC震荡电路

文章目录 前言学习了解 前言 了解到 内部高速RC振荡器(HSI)就是RC震荡器实现的,故想对RC震荡做些了解与分析。 学习了解 【不需要晶振,也可产生时钟脉冲!RC振荡器的工作原理,维恩电桥振荡器!…

string字符会调用new分配堆内存吗

gcc的string默认大小是32个字节,字符串小于等于15直接保存在栈上,超过之后才会使用new分配。

Kafka 分布式消息系统详细介绍

Kafka 分布式消息系统 一、Kafka 概述1.1 Kafka 定义1.2 Kafka 设计目标1.3 Kafka 特点 二、Kafka 架构设计2.1 基本架构2.2 Topic 和 Partition2.3 消费者和消费者组2.4 Replica 副本 三、Kafka 分布式集群搭建3.1 下载解压3.1.1 上传解压 3.2 修改 Kafka 配置文件3.2.1 修改z…

axure之变量

一、设置我们的第一个变量 1、点击axure上方设置一个全局变量a 3 2、加入按钮、文本框元件点击按钮文档框展示变量值。 交互选择【单击时】【设置文本】再点击函数。 点击插入变量和函数直接选择刚刚定义的全局变量,也可以直接手动写入函数(注意写入格式。) 这…

Gitflow基础知识

0.理想状态 现状 听完后的理想状态 没使用过 git 知道 git 是什么,会用 git 基础流程命令 用过 git,但只通过图形化界面操作 脱离图形化界面操作,通过 git 命令操作 会 git 命令 掌握 gitflow 规范,合理使用 rebase 和解决…

spark sql 优化

1. 配置 比例内存 : core 1:2 2. 增加 core 数可以增加 执行任务的 线程数 3. 计算有大表,并发生shuffle 时,生成的任务数是由spark.sql.shuffle.partitions 决定的,所以针对大表shuffle ,要增加spark.sql.shuffle.partitio…

C++笔记20•数据结构:哈希(Hash)•

哈希 1.无序的关联式容器(unordered_map&unordered_set) unordered_map与unordered_set几乎与map与set是一样的,只是性能unordered_map与unordered_set比map与set更优一些。还有就是unordered_map与unordered_set是无序的,…

差异基因富集分析(R语言——GOKEGGGSEA)

接着上次的内容,上篇内容给大家分享了基因表达量怎么做分组差异分析,从而获得差异基因集,想了解的可以去看一下,这篇主要给大家分享一下得到显著差异基因集后怎么做一下通路富集。 1.准备差异基因集 我就直接把上次分享的拿到这…

服务器流量监控工具vnStat的简单使用以及关于Linux的软中断信号(signal)的一点内容

一、服务器流量监控工具vnStat的简单使用 vnStat是为Linux和BSD设计的基于控制台的网络流量监控工具,通过它可以非常方便在命令行查看流量统计情况。它可以保留某个或多个所选择的网络接口的网络流量日志。为了生成日志,vnStat使用内核提供的信息。换句话…

misc流量分析

一、wireshark语法 1、wireshark过滤语法 (1)过滤IP地址 ip.srcx.x..x.x 过滤源IP地址 ip.dstx.x.x.x 过滤目的IP ip.addrx.x.x.x 过滤某个IP (2)过滤端口号 tcp.port80tcp.srcport80 显示TCP的源端口80tcp.dstport80 显示…

Python和C++多尺度导图

🎯要点 热化学属性观测蒙特卡罗似然比灵敏度分析时间尺度上动力学化学催化反应动力学建模自动微分电化学分析模型反应动力学数学模型渔业生态不确定性模型敏感性分析空间统计地理模型分析技术多维数据表征实现生成艺术图案流苏物体长度比,面积比和复杂度…

深度学习实战:如何利用CNN实现人脸识别考勤系统

1. 何为CNN及其在人脸识别中的应用 卷积神经网络(CNN)是深度学习中的核心技术之一,擅长处理图像数据。CNN通过卷积层提取图像的局部特征,在人脸识别领域尤其适用。CNN的多个层次可以逐步提取面部的特征,最终实现精确的…

Django+Vue3前后端分离学习(二)(重写User类)

一、重写User类: 1、首先导入User类: from django.contrib.auth.models import User 2、然后点在User上,按住ctrl 点进去,发现 User类继承AbstractUser Ctrl点进去AbstractUser,然后将此方法全部复制到自己APP的mo…

3 html5之css新选择器和属性

要说css的变化那是发展比较快的,新增的选择器也很多,而且还有很多都是比较实用的。这里举出一些案例,看看你平时都是否用过。 1 新增的一些写法: 1.1 导入css 这个是非常好的一个变化。这样可以让我们将css拆分成公共部分或者多…

WebDriver与Chrome DevTools Protocol:如何在浏览器自动化中提升效率

介绍 随着互联网数据的爆炸式增长,爬虫技术成为了获取信息的重要工具。在实际应用中,如何提升浏览器自动化的效率是开发者常常面临的挑战。Chrome DevTools Protocol(CDP)与Selenium WebDriver相结合,为浏览器自动化提…

还不会剪音乐?试试这四款在线音频剪辑

音频剪辑很多人都没有接触过。其实这并不是一个难事,我们甚至可以用一些简单的工具来给自己做个简单的BGM,最近我尝试了几款不同的音频剪辑工具。今天就来跟大家分享一下我的使用体验,看看哪款工具更适合你的需求。 一、福昕音频剪辑 网址&…

Oracle rman 没有0级时1级备份和0级大小一样,可以用来做恢复 resetlogs后也可以

文档说了 full backup 不能 用于后续的level 1,没说level 1没有level 0 是不是level 1就是level 0? GOAL What are incremental backups? Why are archivelogs still required to recover a database from an online incremental backup? Discuss th…