MySQL-MongoDB开源监控利器之PMM

背景说明:

PMM是percona公司提供的一个对于MySQL和MongoDB的监控和管理平台。PMM有两部分组成PMM Client和PMM Server

PMM Client:安装在每一台需要进行监控的数据库主机中,包括以下工具

. pmm-admin:pmm客户端客理工具,用于增加或是删除需要监控的数据库实例

. percona-qan-agent:用于搜集数据库性能数据

. node_exporter :用于搜集常用的系统指标

. mysqld_exporter:用于搜集MySQL性能指标

. mongodb_export:用于搜集MongoDB性能指标

. proxysql_export:用于搜集proxySQL性能指标

PMMServer: 搜集和分析各个数据库转输的数据,包括以下组件

. Query Analytics(QAN):按时间周期查询MySQL性能,同客户端的qan agent通讯包括两个组件 。qan api 和qan web app

. Metrics Monitor(MM):提供MySQL和mongo的性能历史视图

部署环境说明

mysql 一台机器

pmm server 一台机器

操作系统都是centos 7.x

安装PMM

安装docker

yum install docker
考虑到后期监控数据的收集可能会占用一定磁盘,想把docker 的数据存储从系统盘放到挂载磁盘 /data 目录下
docker info
默认docker 存储位置在/var/lib 下
cd /var/lib
cp  docker docker.bkp
mv docker  /data
ln -s /data/docker  docker

启动docker 服务

systemctl start docker.service

systemctl start docker

systemctl enable docker

 systemctl restart docker.service
Job for docker.service failed because the control process exited with error code. See "systemctl status docker.service" and "journalctl -xe" for details.
[root@192-168-1-34 home]# systemctl status docker.service
● docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)
   Active: failed (Result: exit-code) since 四 2018-06-21 16:18:49 CST; 3s ago
     Docs: http://docs.docker.com
  Process: 18954 ExecStart=/usr/bin/dockerd-current --add-runtime docker-runc=/usr/libexec/docker/docker-runc-current --default-runtime=docker-runc --exec-opt native.cgroupdriver=systemd --userland-proxy-path=/usr/libexec/docker/docker-proxy-current --init-path=/usr/libexec/docker/docker-init-current --seccomp-profile=/etc/docker/seccomp.json $OPTIONS $DOCKER_STORAGE_OPTIONS $DOCKER_NETWORK_OPTIONS $ADD_REGISTRY $BLOCK_REGISTRY $INSECURE_REGISTRY $REGISTRIES (code=exited, status=1/FAILURE)
 Main PID: 18954 (code=exited, status=1/FAILURE)

6月 21 16:18:48 192-168-1-34 systemd[1]: Starting Docker Application Container Engine...
6月 21 16:18:48 192-168-1-34 dockerd-current[18954]: time="2018-06-21T16:18:48.357879787+08:00" level=warning msg="could not change group /var/ru...t found"
6月 21 16:18:48 192-168-1-34 dockerd-current[18954]: time="2018-06-21T16:18:48.358289625+08:00" level=info msg="libcontainerd: new containerd pro...: 18959"
6月 21 16:18:49 192-168-1-34 dockerd-current[18954]: time="2018-06-21T16:18:49.363904011+08:00" level=warning msg="overlay2: the backing xfs filesystem i...
6月 21 16:18:49 192-168-1-34 dockerd-current[18954]: Error starting daemon: SELinux is not supported with the overlay2 graph driver on this kerne...d=false)
6月 21 16:18:49 192-168-1-34 systemd[1]: docker.service: main process exited, code=exited, status=1/FAILURE
6月 21 16:18:49 192-168-1-34 systemd[1]: Failed to start Docker Application Container Engine.
6月 21 16:18:49 192-168-1-34 systemd[1]: Unit docker.service entered failed state.
6月 21 16:18:49 192-168-1-34 systemd[1]: docker.service failed.
Hint: Some lines were ellipsized, use -l to show in full.

 

centos7 启动docker失败--selinux-enabled=false

centos7,执行完安装命令: yum install docker

执行启动命令: systemctl   start docker  ,报下面错误:

Error starting daemon: SELinux is not supported with the overlay2 graph driver on this kernel. Either boot into a newer kernel or disable selinux in docker (--selinux-enabled=false)

 

重新编辑docker配置文件:

vi /etc/sysconfig/docker

# /etc/sysconfig/docker

# Modify these options if you want to change the way the docker daemon runs

OPTIONS='--selinux-enabled=false  --log-driver=journald --signature-verification=false'
if [ -z "${DOCKER_CERT_PATH}" ]; then
    DOCKER_CERT_PATH=/etc/docker
fi

 

systemctl  restart  docker

下载容器镜像

docker pull percona/pmm-server:latest

 

创建数据容器:

 

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

如果再本地找不到,Docker会从Dockerhub拉取image
确保你在使用最新版本的Docker
上述命令执行以下工作:
    docker create命令指示Docker守护程序从映像创建一个容器.
    -v选项初始化容器的数据卷.
    --name选项为可用于引用Docker网络中的容器的容器分配一个自定义名称。 在次数为:pmm-data.
    percona/pmm-server:1.2.0是导出容器的映像的名称和版本标签.
    /bin/true是容器运行命令

如果此步报错,则需要翻墙下载,因国内GFW问题,通过docker pull percona/pmm-server 先把docker pmm-server的镜像拉取下来,再创建容器

创建pmm-server容器:

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

或者

docker run -d \

   -p 80:80 \
   --volumes-from pmm-data \
   --name pmm-server \
   -e SERVER_USER=jsmith \
   -e SERVER_PASSWORD=pass1234 \
   --restart always \

   percona/pmm-server:1.2.0

上述命令执行以下工作:

    docker run命令指示docker守护程序从映像运行容器。
    -d选项以分离模式(即后台)启动容器。
    -p选项映射用于访问PMM服务器Web UI的端口。 例如,如果端口80不可用,则可以使用-p 8080:80将着陆页映射到端口8080。
    --volumes-from选项从pmm-data容器中装载卷(请参阅步骤1.创建一个PMM数据容器)。
    —name选项为可用于引用Docker网络中的容器的容器分配一个自定义名称。 在这种情况下:pmm-server。
    —restart选项定义容器的重新启动策略。 设置它始终确保Docker守护程序在启动时启动容器,并在容器退出时重新启动它。
    percona / pmm-server:1.2.0是导出容器的映像的名称和版本标签。
    -e是为了安全,设置访问PMM web页面所需的用户名和密码
    https://www.percona.com/doc/percona-monitoring-and-management/security.html

此时输入机器IP,就可以看到如下页面了。https://ip:port,需要注意如果你的端口不是80,比如上面的是-p 8080:80,那么需要输入https://ip:8080。
上面是可以输入的网址,192.168.100.1是我本地的IP

升级PMM服务器:

docker stop pmm-server  # 先停
docker rm pmm-server    # 再删,如果如要保留收集数据,不要执行此操作
docker run -d \
   -p 80:80 \
   --volumes-from pmm-data \
   --name pmm-server \
   --restart always \
   --init \
   percona/pmm-server:1.2.0

2、安装pmm client

参考地址:percona官方部署文档

安装percona源
rpm -ivh https://www.percona.com/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpm
sudo yum install pmm-client

$ wget https://www.percona.com/downloads/pmm-client/pmm-client-1.1.1/binary/tarball/pmm-client-1.1.1.tar.gz

$ tar zxf pmm-client-1.1.1.tar.gz

$ cd pmm-client-1.1.1

$ ./install

 

3、配置连接到pmm-server
参考地址:percona官方部署文档

  pmm-admin config --server server端IP地址 --bind-address=client地址 --client-address=client地址 

在安装完PMM Client后,它并不会自动连接PMM Server.
Connect PMM Client to PMM Server
要将客户端连接到PMM服务器,请使用pmm-admin config –server命令指定IP地址。 例如,如果PMM服务器在192.168.1.72上运行,并且在IP 192.168.1.247的计算机上安装了PMM Client:
root@storm-master-01:/home#pmm-admin config --server 192.168.1.72 --server-user jsmith --server-password pass1234
OK, PMM server is alive.

PMM Server      | 192.168.1.72 (password-protected)
Client Name     | storm-master-01
Client Address  | 192.168.1.247
root@storm-master-01:/home#

 

增加数据项

sudo pmm-admin add mysql --user=*** --password=*** --port=3306 

在slave 上执行
pmm-admin add mysql --user=pmm --password=Pmm&2017 --socket=/data/mysql/3306/mysql.sock
这里的user 和password 是之前master创建,已同步到slave ,所以slave 上通过同样的用户采集信息

pmm-admin config --server ip:8080 --server-user username --server-password password

pmm-admin add mongodb --cluster rs1 --uri mongodb://admin:123456@localhost:27017

ex: pmm-admin  add mongodb --cluster shardsvr --uri mongodb://gaoze:gaolaoban@192.168.56.81:20000

sudo pmm-admin add mongodb --uri mongodb://username:password@IP:port/?authMechanism=SCRAM-SHA-1 

列出当前监控项

pmm-admin list 

pmm-admin check-network

 

添加一台机器中的其它实例:

pmm-admin add mysql:metrics mysqldocker –user root –password root –host IP –create-user

 

2)监控mysql
#主数据库添加监控用户并授权(该用户名和密码会同步到从库,切记不要在从库授权)
MariaDB [(none)]> grant SELECT,RELOAD,SUPER,PROCESS,REPLICATION CLIENT on *.* to pmm@"127.0.0.1" identified by ‘xxxxxxxxxx‘;
添加监控:
#pmm-admin add mysql --service-port 42002 --user pmm --password xxxxxx --host 127.0.0.1 --port 3306  主机名 --query-source slowlog
3)监控mongodb
#pmm-admin add mongodb  --service-port 42003 --uri mongodb://用户名:密码@127.0.0.1:27017/admin
#pmm-admin add mongodb:metrics  --service-port 42003 --uri mongodb://用户名:密码@127.0.0.1:27017/admin
#第一个会添加服务器和mongodb两个监控,第二个只会监控mongodb。--service-port 指定服务端口。

pmm-admin add mongodb --uri mongodb://username:password@IP:port/?authMechanism=SCRAM-SHA-1

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-admin 常用命令介绍

# 添加监控服务                            

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服务器上的度量数据               

pmm-admin remove, pmm-admin rm            

# 删除监控服务                            

pmm-admin repair                          

# 重启pmm                                 

pmm-admin restart                         

# 打印PMM Client使用的密码                

pmm-admin show-passwords                  

# 开启监控服务                            

pmm-admin start                           

# 停止监控服务                            

pmm-admin stop                            

# 在卸载之前清理PMM Client                

pmm-admin uninstall            
 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值