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监控原理图
当客户端在进行查询时,被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
访问时需要用户名密码的验证,也就是上一步命令所创建的
成功访问后页面
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
为受监控的数据库实例,都是刚才添加过的
以下为受监控的系统当前性能
打开系统性能总览界面
可以看到性能包括CPU、MEM、NETWORK、DISK
选择mysql总览,查看受监控的MySQL
以下为监控到的MySQL性能,包括连接、表锁、临时对象、分类、命令处理、查询缓存等