pmm

PMM数据库监控和管理

PMM相关

PMM(Percona Monitoring and Management),Percona监控和管理

主要为了监控MySQL和MongoDB的性能,专业的数据库监控

其他监控:Lepus(天兔)

​ 1、图形化界面简陋

​ 2、监控项少

​ 3、已停止更新

​ Zabbix

PMM监控:1、web界面比较炫酷

​ 2、监控项多(连接、线程、临时对象、慢查询、主机性能(CPU、MEM、DISK、THREAD))

PMM-Client组件

pmm-mysql-queries-0:负责收集MySQL查询性能

pmm-mongodb-queries-0:负责收集MongoDB查询性能

pmm-admin:客户端命令行工具,用于添加监控,删除监控

node-exporter:收集节点数据(主机性能)的组件

mysqld_exporter:收集MySQL性能的信息

mongodb_exporter:收集MongoDB性能的信息

proxysql_exporter:收集proxysql性能的信息

PMM-Server组件

Query Analytics:用来搜集指令并做查询性能分析

QAN API:作为数据库后端储存和读取Query资料用

QAN App:提供图形化查询性能分析界面

PMM Landing Page:生成监控页面,也是PMM的首页

Orchestrator:主从情况下生成拓扑关系图

Metrics Monitor:提供了MySQL和MongoDB历史监控信息,其他组件如下

Consul API:用于接收pmm-admin的接口,可以源端替Prometheus新增移除hosts,同时也储存了监控的元数据(是指数据的存储位置或者历史数据等等)

Consul Web UI:对监控主机的显示

Prometheus(普罗米修斯):一个开源的服务监控系统和时间序列数据库,连接到PMM-Client上的exporter聚集DB的监控数据。

Grafana:专业仪表板,图形构建器,提供给监控首页

PMM监控原理图

PMM_yuanli

当客户端在进行查询时,被agent代理收集到,发送到PMM Server的QAN API接口,由QAN App进行查询分析,并提供图形化界面,发布到PMM Landing Page(监控首页),首页也会将数据发送给Grafana来形成炫酷专业的仪表图形回馈给首页

如图所示的几个exporter,由Prometheus来收集正在使用的某一个的系统性能,将数据提交给Grafana形成图形化信息后,转交给PMM Landing Page

pmm-admin中输入的指令用来添加删除某主机监控,通过Consul API接口可以远程的替代Prometheus来对主机进行管理,由Consul Web UI形成每个主机的监控记录

部署PMM监控

实验环境

192.168.1.8(PMM Client):不能有原始MySQL

192.168.1.9(PMM Server):安装了docker

实验步骤

192.168.1.8

# 安装使用命令
rpm -ivh percona-release-latest.noarch.rpm # percona的yum源
rpm -ivh pmm-client-1.17.1-1.el7.x86_64.rpm  # pmm客户端

安装mysql

tar -xf mysql-5.6.bundle.tar # 这个里面是关于mysql的rpm包
cd mysql/  # 进入解压后的目录
yum -y localinstall *.rpm

安装对数据库深层次监控的组件

yum -y localinstall percona-toolkit-3.1.0-2.el7.x86_64.rpm

192.168.1.9(docker已启动,运行了阿里云镜像加速)

docker pull percona/pmm-server  # 下载pmm-server

Using default tag: latest
latest: Pulling from percona/pmm-server
ab5ef0e58194: Pull complete 
ae1dfe920435: Pull complete 
Digest: sha256:fe3f3ce1b4b54354b43adba1ff2e2f301648a2983c268dc385b669788b17311c
Status: Downloaded newer image for percona/pmm-server:latest
docker.io/percona/pmm-server:latest

创建卷容器

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

创建pmm-server的容器并设置登录docker的用户名密码

docker run -d -p 80:80 --volumes-from pmm-data \
--name pmm-server \
--restart always \
-e SERVER_USER=test -e SERVER_PASSWORD=123456 \
percona/pmm-server

重启docker

systemctl restart docker

然后就可以直接访问服务端的ip了

http://192.168.1.9

访问时需要用户名密码的验证,也就是上一步命令所创建的

image-20200303104839650

成功访问后页面

image-20200303105058871

192.168.1.8

启动客户端mysql

systemctl start mysqld
mysqladmin -uroot password 123.com

使用pmm-admin登录服务端

pmm-admin config --server 192.168.1.9 --server-user test --server-password 123456

OK, PMM server is alive.

PMM Server      | 192.168.1.9 (password-protected)
Client Name     | 192.168.1.8
Client Address  | 192.168.1.8 

pmm-admin常用命令

pmm-admin ping # 检测服务端是否存活
pmm-admin check-network # 检测客户端和服务端之间的网络连接
pmm-admin add 监控项   # 添加监控
如 pmm-admin add linux:metrics # 添加客户端主机的监控
pmm-admin rm 监控项  # 删除监控
pmm-admin list  # 列出为客户端添加的所有监控
pmm-admin info # 列出客户端信息
pmm-admin show-passwords # 显示连接服务端时使用的密码
pmm-admin config # 用户配置客户端如何与服务端进行通讯
pmm-admin start/stop 监控项 # 开始停止某个监控项

编辑mysql配置文件

vim /etc/my.cnf
# [mysqld_safe]模块下添加
log_output=file    # 日志存储方式是文件
slow_query_log=ON   # 打开慢查询日志
long_query_time=0   # 慢查询阈值
log_slow_rate_limit=100  # 记录1%的查询,每100个查询记录一次
log_slow_rate_type=query # 只记录查询
# 如果是主从结构的mysql,会记录主从慢查询语句的访问
log_slow_admin_statements=ON
log_slow_slave_statements=ON
# 慢查询日志的写入时间间隔为1s
slow_query_log_always_write_time=1
# 记录全局慢查询日志
slow_query_log_use_global_control=1
# 开启InnoDB监控来监控mysql性能
innodb_monitor_enable=ON
# 记录用户登录失败的次数
userstat=1

重启mysql

systemctl restart mysqld

登录mysql

mysql -uroot -p123.com
/*授权监控用户,ip为本机ip*/
GRANT ALL ON *.* TO 'pmm'@'192.168.1.8' IDENTIFIED BY '123.com';

添加对mysql的监控,用户密码是mysql中经过授权的,ip都是本机的,端口可不写

pmm-admin add mysql:metrics --user pmm --password 123.com --host 192.168.1.8 --port 3306
# 显示ok即成功

添加对mysql查询的监控

pmm-admin add mysql --query-source auto --user pmm --password 123.com --host 192.168.1.8 --port  3306
# 显示ok即成功

然后通过web页面来查看已经监控的内容

如果没有变化,请检查客服端(192.168.1.8)防火墙,要么关闭,要么放行对应端口,以下端口,也可以通过查看pmm-admin list

firewall-cmd --add-port=42000/tcp 
firewall-cmd --add-port=42002/tcp 
firewall-cmd --add-port=42001/tcp 
firewall-cmd --add-port=3306/tcp 
firewall-cmd --add-port=80/tcp 

如图所示,Systems under monitoring为受监控的系统。Monitored DB Instances为受监控的数据库实例,都是刚才添加过的

monitor_xingneng

以下为受监控的系统当前性能

system_moni

打开系统性能总览界面

system_over

可以看到性能包括CPU、MEM、NETWORK、DISK

system_over_1

选择mysql总览,查看受监控的MySQL

mysql_mon_1

以下为监控到的MySQL性能,包括连接、表锁、临时对象、分类、命令处理、查询缓存等

mysql_mon

评论




正在载入...
PoweredHexo
HostedAliyun
DNSAliyun
ThemeVolantis
UV
PV
BY-NC-SA 4.0