背景说明:

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

MySQL-MongoDB开源监控利器之PMM的更多相关文章

  1. MySQL连接线程kill利器之pt-kill

    如何每10秒检查一次,杀死指定用户超过100秒的查询? pt-kill \ --no-version-check \ --host 127.0.0.1 --port 3306 --user 'xxxx ...

  2. mysql/mongodb监控之Percona Monitoring and Management (PMM) 2.1.0安装使用

    Percona Monitoring and Management (PMM)是Percona Server一款开源的用于管理和监控MySQL和MongoDB性能的开源平台,通过PMM客户端收集到的D ...

  3. .NET Core开源组件:后台任务利器之Hangfire 转载 https://www.cnblogs.com/chenug/p/6655636.html

    .NET Core开源组件:后台任务利器之Hangfire   一.简述 Hangfire作为一款高人气且容易上手的分布式后台执行服务,支持多种数据库.在.net core的环境中,由Core自带的D ...

  4. MySQL MHA 运行状态监控

    一 项目描述 1.1 背景 MHA(Master HA)是一款开源的 MySQL 的高可用程序,它为 MySQL 主从复制架构提供了 automating master failover 功能.MHA ...

  5. Linux开源监控平台归总

    Linux开源监控平台归总 Cacti 偏向于基础监控.成图非常漂亮,需要php环境支持,并且需要mysql作为数据存储 Cacti是一个性能广泛的图表和趋势分析工具,可以用来跟踪并几乎可以绘制出任何 ...

  6. 基于Redis+MySQL+MongoDB存储架构应用

    摘  要: Redis+MySQL+MongoDB技术架构实现了本项目中大数据存储和实时云计算的需求.使用MongoDB切片的水平动态添加,可在不中断平台业务系统的同时保障扩容后的查询速度和云计算效能 ...

  7. 小米开源监控open-falcon

    小米开源监控系统Open-Falcon安装使用笔记 07net01.com 发布于 2016-10-25 18:42:03 分类:IT技术 阅读(88) 评论 前言 近期爆出Zabbix有严重bug, ...

  8. 一款软件同时管理MySQL,MongoDB数据库

    互联网应用开发日新月异,去年分布式应用都还大量使用springmvc+ zookeeper +dubbo,今年就被spring boot ,spring cloud微服务架构替换了,技术的更新换代太快 ...

  9. 大众点评CAT开源监控系统剖析

    参考文档: 大众点评的实时监控系统分析(一) CAT_source_analyze 透过CAT,来看分布式实时监控系统的设计与实现 深度剖析开源分布式监控CAT [分布式监控CAT] Client端源 ...

随机推荐

  1. Android(java)学习笔记122:BroadcastReceiver之 有序广播和无序广播(BroadcastReceiver优先级)

    之前我们在Android(java)学习笔记178中自定义的广播是无序广播,下面我们要了解一下有序广播: 1. 我们首先了解一下有序广播和无序广播区别和联系? (1)有序广播> 接受者有优先级, ...

  2. overloading and overriding

    What is the difference between method overloading and method overriding in Java? Differences between ...

  3. 01_11_SERVLET中使用javabean

    01_11_SERVLET中使用javabean 1. javabean 广义javabean = 普通java类 狭义javabean = 符合 Sun JavaBean标准的类 在Servlet中 ...

  4. 微信iOS多设备多字体适配方案总结

    一.背景 2014下半年,微信iOS版先后适配iPad, iPhone6/6plus.随着这些大屏设备的登场,部分用户觉得微信的字体太小,但也有很多用户不喜欢太大的字体.为了满足不同用户的需求,我们做 ...

  5. Objective-C实现一个简单的栈

    栈作为一种数据结构,是一种只能在一端进行插入和删除操作的特殊线性表.它按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出 ...

  6. 【Python学习之三】函数的参数

    在学习Python的过程中,我认为Python函数是很重要的一部分.其中参数的类型和数量,是一个比较容易弄混乱的点. 1.一般参数 首先,写一个计算两个数的和的函数: def addNum(x, y) ...

  7. php读取不到https的域名

    因测试环境php遇到无法正常读取到https的域名,但是域名配置了ssl证书,故做如下排查. php测试代码如下 $config['base_url'] = ''; #开启调试模式 #echo &qu ...

  8. jQuery发送ajax请求实现跨域访问

    Java代码的话,在返回响应之前调用如下代码中的allowCrossDomainAccess()方法: /** * 允许跨域访问 */ public void allowCrossDomainAcce ...

  9. ccf 201712-2 游戏(Python实现)

    一.原题 问题描述 试题编号: 201712-2 试题名称: 游戏 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 有n个小朋友围成一圈玩游戏,小朋友从1至n编号,2号小朋友坐 ...

  10. 运用Python制作你心目中的完美女神脸!

    简介 写这个项目的本来目的是通过构建一个神经网络来训练人脸图片,最后达到能根据图片自动判断美丑的效果.可能是因为数据集过小,或者自己参数一直没有调正确,无论我用人脸关键点训练还是卷积神经网络训练,最后 ...