背景说明:

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. 【UML】部署图Deployment diagram(实现图)(转)

    http://blog.csdn.net/sds15732622190/article/details/49049665 前言 下面要介绍UML中的部署图,和构件图一样,它也属于实现图的一种,五种静态 ...

  2. 两个有序数列,求中间值 Median of Two Sorted Arrays

    原题: There are two sorted arrays nums1 and nums2 of size m and n respectively.Find the median of the ...

  3. js学习笔记-字符串

    1.需要注意的是,JavaScript 的字符串是不可变的(immutable),String 类定义的方法都不能改变字符串的内容.像 String.toUpperCase() 这样的方法,返回的是全 ...

  4. C++容器类-vector

    vecto之简单应用: #include<vector> #include<iostream> using namespace std; int main() { vector ...

  5. IDEA项目显示树形结构

  6. Spring中c3p0连接池的配置 及JdbcTemplate的使用 通过XML配置文件注入各种需要对象的操作 来完成数据库添加Add()方法

    通过配置文件XML方法的配置 可以使用非常简练的Service类 UserService类代码如下: package com.swift; public class UserService { pri ...

  7. 自定义AlertView的方法和改变Alert的弹出位置以及其宽度

    此方法在IOS7中不适合 一.自定义AlertView 1.首先新建一个OC类继承与AlertView. 2.然后再.m中添加方法 - (void)layoutSubviews 可以再这个方法里边改变 ...

  8. NOIP2016 toy

    题目描述 小南有一套可爱的玩具小人, 它们各有不同的职业. 有一天, 这些玩具小人把小南的眼镜藏了起来. 小南发现玩具小人们围成了一个圈,它们有的面朝圈内,有的面朝圈外.如下图: 这时singer告诉 ...

  9. 【Python学习之五】高级特性1(切片、迭代、列表生成器、生成器、迭代器)

    1.切片 有一个list—>L = [1,2,3,4,5,6,7]或tuple—>T = (1,2,3,4,5,6,7),如果想取得前三个元素,怎么操作? 硬方法,也是低效的方法是:L= ...

  10. Python全栈之jQuery笔记

    jQuery runnoob网址: http://www.runoob.com/jquery/jquery-tutorial.html jQuery API手册: http://www.runoob. ...