前言

数据库监控工具最常用的就是zabbix了,zabbix能将收集到的数据通过图表展示出来,并通过设置阈值及时告警。可zabbix对于文本的处理就不行了,比方说抓取数据库运行的sql,这个zabbix就无能为力。如果想看这段时间内执行的sql,常用的手段,对于oracle我们能通过拉取一段时间的awr报告进行分析,可mysql和mongodb没有类似的分析报告,只能去慢日志里面淘。接下来介绍一款监控mysql、mongodb的利器(PMM)。
(PMM)是一款开源的用于管理和监控MySQL和MongoDB性能的开源平台,通过PMM客户端收集到的DB监控数据用第三方软件Grafana画图展示出来。PMM除了能监控系统和数据库的一些指标以外,还能显示数据库指定时间范围内的慢日志,类似于Oracle中AWR的SQL ordered by Elapsed Time。
界面demo可以看官网:https://pmmdemo.percona.com/graph/

安装使用

pmm分为pmm-server和pmm-agent。pmm-server部署在单独的一台机器上,pmm-agent部署在被监控机上。下面是官网上介绍pmm的架构。

server端

安装的方式采用docker,我这里使用的环境是centos7(建议使用centos7)

关闭防火墙和selinux
systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config

安装docker
yum install docker -y

启动docker
service docker start

下载最新的镜像文件
docker pull percona/pmm-server:latest

查看镜像
docker tag percona/pmm-server percona/pmm-server:1.1.1  # 复制percona/pmm-server:latest镜像,并重命名为percona/pmm-server:1.1.1
docker images

创建容器
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.1.1 /bin/true

启动容器
docker run -d \
   -p 8080:80 \
   --volumes-from pmm-data \
   --name pmm-server \
   --restart always \
   percona/pmm-server:1.1.1

查看容器运行
docker ps

pmm-agent端

下载pmm-client(https://www.percona.com/downloads/pmm/),下载rpm包或二进制包都行,我这里使用的是二进制包



安装pmm-agent

tar -zxvf pmm-client-1.17.1.tar.gz
cd pmm-client-1.17.1
./install

连接PMM Server
./pmm-admin config --server 10.40.16.60:8080  #10.40.16.60为pmm-server的ip地址
增加MySQL监控服务
先创建一个监控用户,也可以用已经存在的用户
SQL> grant all on *.* to monitor@'%' identified by 'monitor';
./pmm-admin add mysql --user monitor --password monitor --host 10.30.10.50  #host为被监控机的ip地址

查看监控状态
./pmm-admin list

登陆网页

去浏览器打开http://10.40.16.60:8080  #10.40.16.60为pmm-server的ip地址
出现下面界面,接下来就是各种指标查看了,摸索去吧,有问题欢迎大家留言

最新文章

  1. BZOJ1800 [Ahoi2009]fly 飞行棋
  2. yum配置文件详解
  3. Linux磁盘操作命令
  4. shape的属性
  5. JavaWeb学习总结(三十五)——使用JDBC处理Oracle大数据
  6. Jquery操作单选按钮(Radio)的取值赋值实现代码
  7. 可以直接拿来用的15个jQuery代码片段
  8. QC 2.0为啥可以快充
  9. Ubunu下安装Docker
  10. 第一百一十二节,JavaScript浏览器检测
  11. Hibernate中关于HQL查询返回List<Object>数据的结果集问题
  12. C++函数式编程实现牛顿法
  13. Page_Load不要忘了if (!IsPostBack)
  14. Flask入门之开发简单登陆界面
  15. [Swift]LeetCode42. 接雨水 | Trapping Rain Water
  16. Oracle创建pfile spfile 文件及其恢复
  17. [PHP] 02 - Namespace & Class
  18. 全球最大的3D数据集公开了!标记好的10800张全景图
  19. Shell脚本中的并发(转)
  20. 微服务 Rpc和Rest协议

热门文章

  1. 25.md5 collision(NUPT_CTF)
  2. celery beat - 心跳包
  3. 荧屏弹幕_新增h5requestAnimationFrame实现
  4. go语言的常量
  5. SpringBoot控制台版图书借阅程序
  6. sql server判断表存在
  7. Java入门系列之包装类(四)
  8. 单片机固件烧录器 Firmware Writer Android APP
  9. WORD 和Uint16的区别
  10. 如何使用 TRANSPORTABLE = ALWAYS 将PDB移回Non-CDB (Doc ID 2027352.1)