Percona Monitoring and Management (PMM) 监控MongoDB

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
云数据库 MongoDB,通用型 2核4GB
可观测可视化 Grafana 版,10个用户账号 1个月
简介:

1. Percona监控和管理概述

Percona监控和管理(PMM)是一个用于管理和监控MySQL和MongoDB性能的开源平台。 它由Percona与托管数据库服务,支持和咨询领域的专家合作开发。 PMM是一个免费的开源解决方案,您可以在自己的环境中运行,以实现最大的安全性和可靠性。 它为mysql和mongodb服务器提供全面的基于时间的分析,以确保您的数据尽可能高效地工作。

1.1 Percona监控和管理架构

PMM平台基于简单的客户端 - 服务器模型,可实现高效的可扩展性。它包括以下模块: 
PMM Client安装在您要监视的每个数据库主机上。它收集服务器指标,一般系统指标和查询分析数据,以获得完整的性能概述。收集的数据发送到PMM服务器。 
PMM Server是PMM的核心部分,它聚合收集的数据,并以Web界面的表格,仪表板和图形的形式呈现。 
PMM是旨在无缝协同工作的工具集合。一些是由Percona开发的,一些是第三方开源工具。 
下图说明了PMM当前的结构:

wKioL1lt0iWh8IT2AAEmCUkPjUs149.png

1.2 PMM Client

PMM客户端软件包适用于大多数流行的Linux发行版:

  • Red Hat Enterprise linux衍生产品的RPM(包括CentOS,Oracle Linux,Amazon Linux等)

  • DEB用于基于Debian的发行版(包括Ubuntu等)

PMM客户端软件包包含以下内容: 
pmm-admin是用于管理PMM客户端的命令行工具,例如,添加和删除要监视的数据库实例。 
percona-qan-agent是一种在收集查询性能数据时管理查询分析(QAN)代理的服务。它还与PMM服务器中的QAN API连接,并发送收集的数据。 
node_exporter是收集一般系统指标的Prometheus exporter。有关详细信息,请参阅https://github.com/prometheus/node_exporter。 
mysqld_exporter是收集MySQL服务器指标的Prometheus exporter。有关详细信息,请参阅https://github.com/percona/mysqld_exporter。 
mongodb_exporter是收集MongoDB服务器指标的Prometheus exporter。有关详细信息,请参阅https://github.com/percona/mongodb_exporter。 
proxysql_exporter是收集ProxySQL性能指标的Prometheus exporter。有关详细信息,请参阅https://github.com/percona/proxysql_exporter

1.3 PMM Server

PMM服务器将作为您的中央监控主机的机器运行。它通过以下方式作为设备分发: 
可以用于运行容器的Docker映像 
可以在VirtualBox或其他管理程序中运行 
可以通过Amazon Web Services(AWS)运行的Amazon Machine Image(AMI) 
PMM服务器由以下工具组成: 
查询分析(QAN)使您能够在一段时间内分析MySQL查询性能。除客户端QAN代理外,还包括以下内容:

QAN API是用于存储和访问在PMM客户端上运行的percona-qan-agent收集的查询数据的后端 
QAN Web App是用于可视化收集的Query Analytics数据的Web应用程序。 
度量监视器(MM)提供对MySQL或MongoDB服务器实例至关重要的度量的历史视图。它包括以下内容:

Prometheus是一个第三方时间序列数据库,连接到在PMM客户端上运行的出口商,并汇总了收集的指标. 
Consul提供一个PMM客户端可以远程列出,添加和删除Prometheus主机的API。 
Grafana是一个第三方仪表板和图形构建器,用于在直观的Web界面中可视化由Prometheus汇总的数据. 
Percona仪表板是由Percona开发的Grafana仪表板 
Orchestrator是MySQL复制拓扑管理和可视化工具。 
部署方案(https://www.percona.com/doc/percona-monitoring-and-management/architecture.html#id13)

参考: 
[1] https://prometheus.io/docs/introduction/overview/ 
[2] https://www.consul.io/docs/ 
[3] http://docs.grafana.org/ 
[4] https://github.com/outbrain/orchestrator/wiki/Orchestrator-Manual

2. 安装MongoDB

2.1 配置Percona yum源

安装命令如下:

sudo yum install http://www.percona.com/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpm

请确保有安装成功结果:

Installed:
 percona-release.noarch 0:0.1-4

Complete!
sudo yum list | grep percona

显示部分的安装包:

percona-release.noarch                0.1-4                         installed   
Percona-SQL-50-debuginfo.x86_64       5.0.92-b23.89.rhel6           percona-release-x86_64
Percona-SQL-client-50.x86_64          5.0.92-b23.89.rhel6           percona-release-x86_64
Percona-SQL-devel-50.x86_64           5.0.92-b23.89.rhel6           percona-release-x86_64
Percona-SQL-server-50.x86_64          5.0.92-b23.89.rhel6           percona-release-x86_64
Percona-SQL-shared-50.x86_64          5.0.92-b23.89.rhel6           percona-release-x86_64
Percona-SQL-shared-compat.x86_64      5.0.92-b23.89.rhel6           percona-release-x86_64
Percona-SQL-test-50.x86_64            5.0.92-b23.89.rhel6           percona-release-x86_64
Percona-Server-51-debuginfo.x86_64    5.1.73-rel14.12.624.rhel6     percona-release-x86_64
Percona-Server-55-debuginfo.x86_64    5.5.55-rel38.8.el6            percona-release-x86_64
Percona-Server-56-debuginfo.x86_64    5.6.36-rel82.0.el6            percona-release-x86_64
Percona-Server-57-debuginfo.x86_64    5.7.18-15.1.el6               percona-release-x86_64
Percona-Server-MongoDB.x86_64         3.0.15-1.10.el6               percona-release-x86_64
Percona-Server-MongoDB-32.x86_64      3.2.13-3.3.el6                percona-release-x86_64
                                     3.2.13-3.3.el6                percona-release-x86_64
                                     3.2.13-3.3.el6                percona-release-x86_64
                                     3.2.13-3.3.el6                percona-release-x86_64
                                     3.2.13-3.3.el6                percona-release-x86_64
                                     3.2.13-3.3.el6                percona-release-x86_64
Percona-Server-MongoDB-34.x86_64      3.4.5-1.5.el6                 percona-release-x86_64

这里我们安装MongoDB3.4版本

sudo yum install Percona-Server-MongoDB-34 

如果您已经启用SELinux,则需要做配置相关,这里不做详细说明。我是禁用SELinux状态。

MongoDB默认配置文件/etc/mongod.conf,数据目录默认是/var/lib/mongodb/ 。有需要,请自行修改配置文件。

查看MongoDB是否启动:

/etc/init.d/mongod status

3. 部署Percona监控和管理

以下过程介绍如何正确部署PMM: 
在主机上运行PMM Server,用于访问收集的数据,查看基于时间的图表,并执行性能分析。

以下安装的选项可用:

  • 使用Docker运行PMM服务器

  • 使用VirtualBox运行PMM服务器

  • 使用Amazon Machine Image(AMI)运行PMM服务器

这里我们选择使用Docker运行PMM服务器。

使用docker运行PMM Server 
PMM服务器的Docker映像公开托管在https://hub.docker.com/r/percona/pmm-server/。 如果要从docker映像运行PMM Server,则主机必须能够运行Docker 1.12.6或更高版本,并具有网络访问权限。 有关使用Docker的更多信息,请参阅Docker文档

3.1 yum安装Docker

一般CentOS需要安装epel源,我这里是aws ec2 linux,所以直接使用如下命令安装:

yum install docker
service docker start
chkconfig docker on

注意: 
使用pmm-server映像时,请使用特定的版本标签,而不是最新的标签。目前的最新稳定版本是1.2.0。

3.2 创建一个PMM数据容器

要创建持久PMM数据的容器,请运行以下命令:

docker create \
  -v /opt/prometheus/data \
  -v /opt/consul-data \
  -v /var/lib/mysql \
  -v /var/lib/grafana \
  --name pmm-data \
  percona/pmm-server:1.2.0 /bin/true

运行结果:

Unable to find image 'percona/pmm-server:1.2.0' locally
1.2.0: Pulling from percona/pmm-server
45a2e645736c: Pull complete
fe1f1770c826: Pull complete
4f1bdb417453: Pull complete
a2f3207fd166: Pull complete
2f8fffdaf5ef: Pull complete
46e8ca929fde: Pull complete
5c89a1a51b6b: Pull complete
fceac4be9a77: Pull complete
fb79d7de9adf: Pull complete
Digest: sha256:b9e200c9bc66bb2c31d75d57852474cf00a292d3ccb8301fdd55cc6e25738e3d
Status: Downloaded newer image for percona/pmm-server:1.2.0
a93b2e74a10afe3b47e127e7ef43072cff8e9b060c2a0e1cbdf7a0baae8dd712

注意: 
这个容器不运行,它只是为了确保在升级到更新的PMM - server映像时保留所有PMM数据。不要删除或重新创建这个容器,除非您打算删除所有PMM数据并从头开始。

前面的命令解释: 
docker create命令表示docker守护进程从镜像中创建容器。 
- v选项对volumes进行指定初始化 。 
--name选项为容器指定一个自定义名称,用于在Docker网络中引用容器。例如名字:pmm-server。 
percona/pmm-server:1.2.0是自源的镜像的名字和版本标识。 
/bin/true容器进行运行的命令。

3.3 创建并运行PMM服务器容器

要运行PMM服务器,请使用以下命令:

docker run -d \
  -p 80:80 \
  --volumes-from pmm-data \
  --name pmm-server \
  --restart always \
  percona/pmm-server:1.2.0
e8e133c3af3669257debdbce89bd36080510b2b2be30b0595cf295eb891f7d42

前面的命令解释: 
docker run命令运行一个docker守护进程以运行容器。 
- d选项以分离模式(即在后台)启动容器。 
- p选项用于映射访问PMM服务器web UI的端口。如果端口80不可用,您可以使用- p 8080:80将登录页面映射到端口8080。 
--volumes-from表示挂载容器来自前面步骤指定的pmm-data。 
--name选项为容器指定一个自定义名称,用于在Docker网络中引用容器。例如名字:pmm-server。 
--restart选项定义容器的重新启动策略。设置它始终确保Docker守护进程在启动时启动容器,如果容器退出,则重新启动它。 
percona/pmm-server:1.2.0是自源的镜像的名字和版本标识。

使用如下命令确认PMM 安装运行是否正确:

netstat -tpln|grep 80

通过使用运行容器的主机的IP地址连接到PMM Web界面来验证PMM服务器是否正在运行,然后在要监视的所有数据库主机上安装PMM Client 
Component URL 
PMM landing page http://172.31.27.176:80 
Query Analytics (QAN web app) http://172.31.27.176/qan/ 
Metrics Monitor (Grafana) http://172.31.27.176/graph/User name: admin Password: admin 
Orchestrator http://172.31.27.176/orchestrator

3.4 安装PMM客户端

PMM客户端是安装在您要监视的MySQL或MongoDB主机的客户端和数据提供采集方。 组件收集关于一般系统和数据库性能的各种数据,并将该数据发送到相应的PMM服务器组件。

注意: 
不应该在具有相同主机名的数据库服务器上安装代理,因为PMM服务器使用主机名来标识收集的数据。

安装PMM客户端

安装pmm-client软件包

sudo yum install pmm-client -y

将PMM客户端连接到PMM服务器

使用pmm-admin config --help,查看帮助

pmm-admin config --server 172.31.27.176:80

OK, PMM server is alive.

PMM Server      | 172.31.27.176:80
Client Name     | ip-172-31-27-176
Client Address  | 172.17.0.1

3.5 pmm server与pmm client通信

从以下操作也可以看出,pmm并不支持代理,是C/S构架。

pmm-admin check-network检查结果:

PMM Network Status

Server Address | 172.31.27.176:80
 ient Address | 172.17.0.1

* System Time
NTP Server (0.pool.ntp.org)         | 2017-07-17 07:55:57 +0000 UTC
PMM Server                          | 2017-07-17 07:55:57 +0000 GMT
PMM Client                          | 2017-07-17 07:55:57 +0000 UTC
PMM Server Time Drift               | OK
PMM Client Time Drift               | OK
PMM Client to PMM Server Time Drift | OK

* Connection: Client --> Server
-------------------- -------      
SERVER SERVICE       STATUS      
-------------------- -------      
Consul API           OK
Prometheus API       OK
Query Analytics API  OK

Connection duration | 75.404μs
Request duration    | 625.358μs
Full round trip     | 700.762μs


* Connection: Client <-- Server
---------------- ----------------- ----------------- ------- ---------- ---------
SERVICE TYPE     NAME              REMOTE ENDPOINT   STATUS  HTTPS/TLS  PASSWORD
---------------- ----------------- ----------------- ------- ---------- ---------
linux:metrics    ip-172-31-27-176  172.17.0.1:42000  DOWN    YES        -        
mongodb:metrics  ip-172-31-27-176  172.17.0.1:42003  DOWN    YES        -        

When an endpoint is down it may indicate that the corresponding service is stopped (run 'pmm-admin list' to verify).
If it's running, check out the logs /var/log/pmm-*.log

When all endpoints are down but 'pmm-admin list' shows they are up and no errors in the logs,
check
the firewall settings whether this system allows incoming connections from server to address:port in question.

Also you can check the endpoint status by the URL: http://172.31.27.176:80/prometheus/targets

防火墙开启与docker容器通信:

iptables -A INPUT -s 172.0.0.1/8 -j ACCEPT
service iptables save

pmm-admin check-network再次查看结果,则通信正常。

PMM Network Status

Server Address | 172.31.27.176:80
Client Address | 172.17.0.1

* System Time
NTP Server (0.pool.ntp.org)         | 2017-07-17 07:56:40 +0000 UTC
PMM Server                          | 2017-07-17 07:56:40 +0000 GMT
PMM Client                          | 2017-07-17 07:56:40 +0000 UTC
PMM Server Time Drift               | OK
PMM Client Time Drift               | OK
PMM Client to PMM Server Time Drift | OK

* Connection: Client --> Server
-------------------- -------      
SERVER SERVICE       STATUS      
-------------------- -------      
Consul API           OK
Prometheus API       OK
Query Analytics API  OK

Connection duration | 67.174μs
Request duration    | 595.339μs
Full round trip     | 662.513μs


* Connection: Client <-- Server
---------------- ----------------- ----------------- ------- ---------- ---------
SERVICE TYPE     NAME              REMOTE ENDPOINT   STATUS  HTTPS/TLS  PASSWORD
---------------- ----------------- ----------------- ------- ---------- ---------
linux:metrics    ip-172-31-27-176  172.17.0.1:42000  OK      YES        -        
mongodb:metrics  ip-172-31-27-176  172.17.0.1:42003  OK      YES        -        

3.6 pmm client添加监控项

pmm-admin add linux:metrics  # 监控linux系统
pmm-admin add mongodb:metrics  # 监控mongodb
pmm-admin add mongodb:queries --dev-enable  # 此处为实验功能,所以需要加 --dev-enable
pmm-admin purge linux:metrics  # 清除数据
pmm-admin purge mongodb:metrics  

管理PMM客户端的一些命令说明:

# 添加监控服务
pmm-admin add
# 检查PMM客户端和PMM服务器之间的网络连接。
pmm-admin check-network
# 配置PMM Client如何与PMM服务器通信。
pmm-admin config
# 打印任何命令和退出的帮助
pmm-admin help
# 打印有关PMM客户端的信息
pmm-admin info
# 列出此PMM客户端添加的所有监控服务
pmm-admin list
# 检查PMM服务器是否存活
pmm-admin ping
# 在PMM服务器上清除度量数据。
pmm-admin purge
# 清除监控服务
pmm-admin remove
# 修复安装
pmm-admin repair
# 重启pmm客户端
pmm-admin restart
# 打印PMM Client使用的密码
pmm-admin show-passwords
# 开启监控服务
pmm-admin start
# 停止监控服务
pmm-admin stop
# 在卸载之前清理PMM Client
pmm-admin uninstall

3.7 一些效果图

wKioL1lt0mWwHqZ1AAG6ChvAw9I154.png

wKiom1lt0mbzNtX0AAHvyodG73A344.png

wKiom1lt0meSZbyAAAGnYVTeEd8325.png

wKioL1lt0miga5NTAAHWsp7brKo304.png



本文转自 ygqygq2 51CTO博客,原文链接:http://blog.51cto.com/ygqygq2/1948675,如需转载请自行联系原作者

相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。 &nbsp; 相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
相关文章
|
11天前
|
监控 NoSQL MongoDB
MongoDB性能调优:监控与诊断工具的技术探讨
【4月更文挑战第30天】本文探讨了MongoDB性能调优,重点关注监控与诊断工具。MongoDB自带的Shell和Profiler有助于理解数据库性能,而MMS、PMM和mongostat等第三方工具则提供实时监控和深度分析。调优实践包括优化索引、调整内存配置、分片与复制、硬件升级及查询优化。通过这些工具和策略,可有效提升MongoDB性能。
|
5月前
|
存储 监控 NoSQL
数据存储与分析:办公室电脑屏幕监控的MongoDB应用实例
在当今数字时代,数据的存储和分析变得愈发重要,尤其是在办公环境中,对电脑屏幕进行监控成为一种日益普遍的需求。本文将介绍如何利用MongoDB数据库实现办公室电脑屏幕监控,并通过代码实例展示其应用。
222 0
|
监控 NoSQL MongoDB
《云数据库MongoDB监控指标解读与关注》电子版地址
云数据库MongoDB监控指标解读与关注
96 1
《云数据库MongoDB监控指标解读与关注》电子版地址
|
监控 NoSQL MongoDB
MongoDB 监控
MongoDB 监控
147 0
|
存储 运维 监控
ELK搭建(十一):搭建MongoDB运行情况监控平台
mongoDB作为基于磁盘的非关系型数据库,JSON格式数据存储方式,具有优秀的查询效率。越来越多的场景使用到了MongoDB。在生产运维中,更需要我们能够实时的掌握mongo的运行情况,以方便我们数据库运行问题做出及时的调整和补救。
276 0
ELK搭建(十一):搭建MongoDB运行情况监控平台
|
数据采集 Prometheus 监控
使用云监控来监控线下IDC(及其它云)的Mongodb,Redis,Mysql等中间件
背景当前很多用户的服务部署在混合环境中,比如同时使用多个云厂商,或者云加线下IDC等。而对于线下IDC的监控主要是使用开源的系统来自建。带来的问题就是需要花费较大精力来维护自建监控系统并且和云上的监控数据也无法打通。针对这种混合云环境,云监控推出了企业版监控服务,可以实现在阿里云上对下线IDC或其它云服务上部署的中间件进行监控。线下IDC中间件监控实现在云监控上对下线IDC的中间件进行监控,主要实
524 0
使用云监控来监控线下IDC(及其它云)的Mongodb,Redis,Mysql等中间件
|
监控 NoSQL 数据可视化
dba+ 开源工具:面向开发的 MongoDB 图形可视化监控
一款面向研发人员查看的 MongoDB 图形可视化监控工具,借鉴了 Percona PMM Grafana 以及官方自带的 mongostat 工具输出的监控指标项,去掉了一些不必要、看不懂的监控项。目前采集了数据库连接数、QPS/TPS、内存使用率统计,副本集 replset 状态信息和同步复制延迟时长。
|
监控 NoSQL MongoDB
如何设置云数据库MongoDB监控报警?
本文将为大家介绍云数据库MongoDB实例的监控与报警相关操作。 进入实例的详情页面,点击左侧的监控信息。在这里可以看到,MongoDB所提供的一些监控指标。上面这一行是针对MongoDB资源本身的CPU、内存、IOPS及磁盘的使用情况监控;下面这一行是针对WiredTiger引擎本身的一些属性监控。
1138 0
HDM
|
Web App开发 监控 NoSQL
MongoDB负载信息一目了然 阿里云HDM重磅发布MongoDB监控和诊断功能
混合云数据库管理(HDM)的监控和诊断功能新增了对MongoDB的支持。 通过直观的方式将MongoDB多个维度的负载信息统一整合,不仅可以清晰的查看实时负载信息,也可以方便的确认历史负载情况,同时也支持自定义性能监控大盘。
HDM
3967 0
|
SQL 监控 Java
dubbo2.5-spring4-mybastis3.2-springmvc4-mongodb3.4-redis3.2整合(二)之 JDBC连接池、监控组件 Druid
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010046908/article/details/53870144 1 Druid简介 Druid是阿里巴巴开源平台上的一个项目,整个项目由数据库连接池、插件框架和SQL解析器组成。
1084 0