Docker部署Zabbix监控MariaDB主从同步(Percona Monitoring Plugins for Zabbix)
一、安装Docker并部署Zabbix
建议先配置清华大学的docker-ce yum源,速度有保障:清华大学repo源
1.Zabbix Server节点配置
部署环境:
[root@server0 ~]# docker -v
Docker version 18.09., build 4c52b90
[root@server0 ~]# cat /proc/version
Linux version 3.10.-.el7.x86_64 (builder@kbuilder.dev.centos.org) (gcc version 4.8. (Red Hat 4.8.-) (GCC) ) # SMP Tue Aug :: UTC
[root@server0 ~]# cat /etc/redhat-release
CentOS Linux release 7.4. (Core)
启动并开机自运行Docker:
systemctl enable docker
systenctl start docker
部署MySQL Docker,提供Zabbix数据库服务:
~]$ docker container run --name zmysql-server \
--network zabbix \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="" \
-e MYSQL_ROOT_PASSWORD="" \
-v /data/zabbix-mysql:/var/lib/mysql \
--rm #根据需要也可以使用--restart=always
-d mysql:5.7
部署Zabbix_server和Zabbix_web:
~]$ docker container run --name zabbix-server-mysql \
--network zabbix -t \
-e DB_SERVER_HOST="172.20.0.2" \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="" \
-e MYSQL_ROOT_PASSWORD="" \
-p : \
--rm -d zabbix/zabbix-server-mysql:centos-3.0-latest
~]$ docker container run --name zabbix-nginx \
--network zabbix -t \
-e DB_SERVER_HOST="172.20.0.2" \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e ZBX_SERVER_HOST="172.20.0.3" \
-e MYSQL_PASSWORD="" \
-e MYSQL_ROOT_PASSWORD="" \
-e PHP_TZ="Asia/Shanghai" \
-p : --rm \
-d zabbix/zabbix-web-nginx-mysql:centos-3.0-latest
修改时区:
docker container exec -ti zabbix-server-mysql /bin/bash
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
访问宿主机的IP就能访问zabbix了,使用容器部署服务是非常方便快捷的。部署zabbix的自运行脚本放在了我的github,可以直接运行脚本启动安装Zabbix。
2.在MariaDB主从节点上部署Zabbix-agent
在MariaDB主从节点上设置授权zabbix能访问数据的账号,登录数据库执行:
> GRANT PROCESS,SUPER,REPLICATION CLIENT ON *.* TO zabbix@127.0.0.1 IDENTIFIED BY '';
配置zabbix官方yum源并安装zabbix-agent,PHP、php-mysql:
[zabbix]
name=Zabbix Official Repository - $basearch
baseurl=http://repo.zabbix.com/zabbix/3.0/rhel/7/$basearch/
enabled=
gpgcheck=
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX [zabbix-non-supported]
name=Zabbix Official Repository non-supported - $basearch
baseurl=http://repo.zabbix.com/non-supported/rhel/7/$basearch/
enabled=
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX
gpgcheck=
yum install -y zabbix-agent zabbix-senter php php-mysql
二、安装Percona Monitoring Plugins插件监控MariaDB
Percona Monitoring Plugins是一个很强大的数据库测试插件,我们这里只用它的MariaDB For Zabbix模板。
~]# rpm -ivh https://www.percona.com/redir/downloads/percona-release/redhat/latest/percona-release-0.1-6.noarch.rpm
~]# yum install percona-zabbix-templates -y
~]# rpm -ql percona-zabbix-templates #安装监控模板
/var/lib/zabbix/percona
/var/lib/zabbix/percona/scripts
/var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh
/var/lib/zabbix/percona/scripts/ss_get_mysql_stats.php
/var/lib/zabbix/percona/templates
/var/lib/zabbix/percona/templates/userparameter_percona_mysql.conf
/var/lib/zabbix/percona/templates/zabbix_agent_template_percona_mysql_server_ht_2.0.9-sver1.1.8.xml
修改模板文件配置参数(红色字体为要修改的部分):
~]# cp /var/lib/zabbix/percona/templates/userparameter_percona_mysql.conf /etc/zabbix/zabbix_agentd.d/
~]# vim /var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh
if [ "$ITEM" = "running-slave" ]; then
# Check for running slave
RES=`HOME=~zabbix /usr/bin/mysql -uzabbix -p123456 -e 'SHOW SLAVE STATUS\G' | egrep '(Slave_IO_Running|Slave_SQL_Running):' | awk -F: '{print $2}' | tr '\n' ','`
if [ "$RES" = " Yes, Yes," ]; then
echo
else
echo
fi
exit
~]# vim /var/lib/zabbix/percona/scripts/ss_get_mysql_stats.php
$mysql_user = 'zabbix';
$mysql_pass = '123456';
~]# systemctl restart zabbix-agent.service
测试,若以下命令返回任意数字,则说明模板配置成功:
~]# /var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh gg
~]# /var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh running-slave
~]# /usr/bin/php -q /var/lib/zabbix/percona/scripts/ss_get_mysql_stats.--host localhost --items gg
登录Zabbix页面并导入模板:

将xml模板文件上传至zabbix-server,由于官方的模板文件只支持zabbix2.0,这里提供修改后的3.0模板文件→→Zabbix Percona Template。导入后重zabbix-agent,添加主机和模板,设置触发器等等功能,然后就能监控MariaDB了。Percona的模板很详细,可以满足生产中决大部分MariaDB监控需求。

关于Zabbix的基础配置可参阅我的文章---->Zabbix监控原理及架构、Zabbix3.0基础教程之一:系统监控,zabbix安装与基本配置、Zabbix3.0基础教程之二:item、trigger、action、graph配置
Docker部署Zabbix监控MariaDB主从同步(Percona Monitoring Plugins for Zabbix)的更多相关文章
- 修正Percona Monitoring Plugins for Zabbix的一处脚本Bug
今天小试了一把Percona Monitoring Plugins for Zabbix模板,自己辛辛苦苦写的那一大堆Python脚本,貌似用这个模板全都覆盖到了.但是,我也发现最新的版本percon ...
- zabbix监控mysql主从同步和延迟
https://blog.csdn.net/natmazz/article/details/90581490 https://www.cnblogs.com/01-single/p/10602610. ...
- Zabbix 3.x中使用Percona Monitoring Plugins监控MySQL
1.下载安装percona-zabbix-templates-1.1.7-2.noarch.rpm 下载地址:https://www.percona.com/downloads/percona-mon ...
- zabbix监控mysql主从同步
获取主从复制sql线程和I/O线程状态是否为yes #!/bin/bash HOSTNAME="数据库IP" PORT="端口" USERNAME=" ...
- zabbix利用percona-toolkit工具监控Mysql主从同步状态
一.下载percona-toolkit工具包 percona-toolkit是一组高级命令行工具的集合,可以查看当前服务的摘要信息,磁盘检测,分析慢查询日志,查找重复索引,实现表同步等等. [root ...
- zabbix3.0.4监控mysql主从同步
zabbix3.0.4监控mysql主从同步 1.监控mysql主从同步原理: 执行一个命令 mysql -u zabbix -pzabbix -e 'show slave status\G' 我们在 ...
- Zabbix 3.2.6-Mysql多实例监控-Percona Monitoring Plugins自动发现
mysql多实例监控实录 系统环境: cat /etc/redhat-release CentOS Linux release 7.3.1611 (Core) 内核版本: uname -r 3.1 ...
- 监控mysql主从同步状态脚本
监控mysql主从同步状态脚本 示例一: cat check_mysql_health #!/bin/sh slave_is=($(mysql -S /tmp/mysql3307.sock -uroo ...
- 监控mysql主从同步状态
在高并发网站架构中,MySQL数据库主从同步是不可或缺的,不过经常会发生由于网络原因或者操作错误,MySQL主从经常会出现不同步的情况,那么如何监控MySQL主从同步,也变成网站正常运行的重要环节. ...
随机推荐
- BZOJ_2734_[HNOI2012]集合选数_构造+状压DP
BZOJ_2734_[HNOI2012]集合选数_构造+状压DP 题意:<集合论与图论>这门课程有一道作业题,要求同学们求出{1, 2, 3, 4, 5}的所有满足以 下条件的子集:若 x ...
- [Noi2015]软件包管理器 BZOJ4196
分析:水题 每次安装的时候和根节点求lca的过程中区间覆盖+区间查询 每次删除的时候查询子树中安装的数量+区间覆盖 附上代码: #include <cstdio> #include < ...
- (1)STM32使用HAL库操作GPIO
一 初始化GPIO 使用HAL库的优点在于不用手动添加初始化的代码了,CubeMX会根据软件设置自动生成. 自动生成的HAL库GPIO初始化代码: static void MX_GPIO_Init( ...
- React Native开发 - 搭建React Native开发环境
移动开发以前一般都是原生的语言来开发,Android开发是用Java语言,IOS的开发是Object-C或者Swift.那么对于开发一个App,至少需要两套代码.两个团队.对于公司来说,成本还是有的. ...
- Spark学习之在集群上运行Spark
一.简介 Spark 的一大好处就是可以通过增加机器数量并使用集群模式运行,来扩展程序的计算能力.好在编写用于在集群上并行执行的 Spark 应用所使用的 API 跟本地单机模式下的完全一样.也就是说 ...
- 使用CompletableFuture实现异步编程
在开发中会碰到一种场景,如下 Object result1 = service1.func1();//执行80ms Object result2 =service2.func2();//执行50ms ...
- phper的Go之旅(-)--书写前言
前言:由于我使用的主力机是mac,所以整系列教程都以mac为主,后期可能会更新windows,有时间的话,截止写这篇博客的时间我是一个全职php开发工程师,之所以要写这篇 教程原因就是现在技术语言层出 ...
- 【.NET异步编程系列1】:await&async语法糖让异步编程如鱼得水
前导 Asynchronous programming Model(APM)异步编程模型以BeginMethod(...) 和 EndMethod(...)结对出现. IAsyncResult Beg ...
- 优雅地 `async/await`
async/await 虽然取代了回调,使用类似同步的代码组织方式让代码更加简洁美观,但错误处理时需要加 try/catch. 比如下面这样,一个简单的 Node.js 中使用 async/await ...
- 《HelloGitHub》第 34 期
公告 新年快乐!大家的年终奖都发了啥? <HelloGitHub>第 34 期 兴趣是最好的老师,HelloGitHub 就是帮你找到兴趣! 简介 分享 GitHub 上有趣.入门级的开源 ...