背景说明:
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 www.mhylpt.com 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=www.xinghenyule.com 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是容器运行命令
如果此步报错,则需要FQ下载,因国内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://www.dasheng178.com/ 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.fengshen157.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 上通过同样的用户采集信息
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
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