部署Mysql监控工具pmm


声明:这是我在大学毕业后进入第一家互联网工作学习的内容


背景

测试人员需要对项目进行压测,有需求查看mysql在高并发的场景下各个指标数据,我问了下公司的dba,推荐pmm这个工具

要求

  • mysql服务端需要以下要求:

centos:7.6

mysql:5.7.28

假设ip是172.31.26.11

  • grafana服务器需要以下要求

centos:7.6

docker:19.03

假设ip是172.31.26.12

建议grafana和mysql服务端放在不同的机器上,因为一个grafana可以监控好几个mysql服务端指标

安装grafana服务器

一共就3步

拉镜像

创建持久化存储卷

创建容器的运行实例

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:latest  /bin/true
docker  run  -d -p 80:80 --volumes-from pmm-data --name pmm-server --restart always  percona/pmm-server:latest

注意创建容器的时候要考虑到80端口是否被占用

安装percona到mysql服务端

下载percona到mysql服务端,如果有多个mysql服务端,需要每个都安装percona

pmm-admin config --server 指向grafana服务器的ip

–client-name 添加你的主机名,如果不定义就是本机的hostname

pmm-admin add 指向本机(mysql服务端)ip

wget https://www.percona.com/downloads/pmm-client/pmm-client-1.1.1/binary/tarball/pmm-client-1.1.1.tar.gz
tar -zxvf pmm-client-1.1.1.tar.gz
cd pmm-client-1.1.1
./install
pmm-admin config  --server 172.31.26.12 --client-name dev-mysql 
pmm-admin  add  mysql  --user  root  --password  '123456'    --host  172.31.26.11 --port  3306

添加完成后打开http://172.31.26.12:80

选择Mysql Overview看Mysql监控大盘即可

pmm.jpg

报错

在创建容器的时候报错

[root@localhost ~]# docker  run  -d -p 80:80 --volumes-from pmm-data --name pmm-server --restart always  percona/pmm-server:latest  
e6b329a2617e13ab96d7a3a99716e1c61a2680b26682a71d1631bc17828ec739
docker: Error response from daemon: driver failed programming external connectivity on endpoint pmm-server (7cd37db8f2b05e9232058ded5237c7e5tables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 80 -j DNAT --to-destination 172.17.0.4:80 ! -i docker0: iptables: No chain/target/match
 (exit status 1)).

百度了一下,大概原因就是使用的centos7服务器,在部署docker的过程中,因端口问题有启停firewalld服务,在centos7里使用firewalld代替了iptables。在启动firewalld之后,iptables还会被使用,属于引用的关系。所以在docker run的时候,iptables list里没有docker chain,重启docker engine服务后会被加入到iptables list里面。(有必要深入研究一下docker network)


解决方法

大部分说都是重启docker,我感觉很不靠谱,如果是生产环境,谁敢重启docker啊,然后再找了一下docker官网的排错指南,发现了这个问题。

答案特别简单,很有可能你意见关闭了防火墙,那么打开后再执行创建容器的命令,创建成功再关闭防火墙

[root@localhost ~]# systemctl start firewalld
[root@localhost ~]# docker  run  -d -p 80:80 --volumes-from pmm-data --name pmm-server --restart always  percona/pmm-server:latest  
e6b329a2617e13ab96d7a3a99716e1c61a2680b26682a71d1631bc17828ec739
[root@localhost ~]# systemctl stop firewalld

参考资料

iptables error when starting container with docker

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值