我的编程空间,编程开发者的网络收藏夹
学习永远不晚

zabbix监控MySQL多实例实践

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

zabbix监控MySQL多实例实践

一、实践背景:
一台机器上部署了多个MySQL实例,每个实例使用不同的端口,需要通过zabbix将其都纳入监控中。

二、实践方法及原理说明:
1.在Zabbix上创建监控MySQL数据库使用的模版,导入案例模版:
链接: https://pan.baidu.com/s/1nXooNPMXrmaAQidRrxVOLg 提取码: ure1

2.在模版上创建自动发现的规则,在自动发现规则中需要定义两个东西:
a.键值 用来自动获取MySQL实例的端口,需要使用到主机宏{$MYSQLPORT}
zabbix监控MySQL多实例实践

b.监控项原型 根据获取的端口来生成对应的监控项,需要使用到自动发现宏{#MYSQLPORT}
zabbix监控MySQL多实例实践

3.在需要监控的主机上定义一个宏{$MYSQLPORT},对应要监控的端口,如3306_3307
zabbix监控MySQL多实例实践

4.在Zabbix agent上创建自动发现端口的脚本、状态监控脚本。

原理说明:
通过自动发现规则来获取MySQL实例的端口,自动发现规则上的{$MYSQLPORT}是要传递给agent自动发现脚本的参数,这个值是从主机定义的宏{$MYSQLPORT}获取过来的,自动发现的脚本将其解析成{#MYSQLPORT}: 端口的形式,监控项原型再根据{#MYSQLPORT}的值来生成监控项,大致流程如下:
主机定义宏{$MYSQLPORT}->自动发现规则键值{$MYSQLPORT}->调用agent上自动发现脚本并解析成{#MYSQLPORT} : 端口 ->监控项原型{#MYSQLPORT}->自动生成主机监控项

三、环境说明:
OS:CentOS Linux release 7.6.1810 (Core)
Zabbix Server 版本:4.2.4
MySQL端口:3306,3307
3306 socket:/tmp/mysql3306.sock
3307 socket:/tmp/mysql3307.sock
脚本路径:/etc/zabbix/scripts/

四、在agent创建监控用的脚本
1.自动发现脚本:/etc/zabbix/scripts/discovery_mysqlport.sh
#!/bin/bash
res=`echo $1| sed "s/
/\n/g"`;
port=($res)
printf '{\n'
printf '\t"data":[\n'
for key in ${!port[@]}
do
if [[ "${#port[@]}" -gt 1 && "${key}" -ne "$((${#port[@]}-1))" ]];
then
printf '\t {\n'
printf "\t\t\t\"{#MYSQLPORT}\":\"${port[${key}]}\"},\n"

else [[ "${key}" -eq "((${#port[@]}-1))" ]]
printf '\t {\n'
printf "\t\t\t\"{#MYSQLPORT}\":\"${port[${key}]}\"}\n"
fi
done
printf '\t ]\n'
printf '}\n'

执行效果
zabbix监控MySQL多实例实践

2.状态检查脚本:/etc/zabbix/scripts/mysql_status.sh
#!/bin/bash
var=$1
MYSQL_USER="zabbix"
MYSQL_PASSWORD=123456
MYSQL_SOCK_DIR="/tmp/mysql$2.sock"

${mysql} -u${MYSQL_USER} -p${MYSQL_PASSWORD} -S ${MYSQL_SOCK_DIR} -e "show global status;" 2> /dev/null |grep -v Variable_name|grep "\b${var}\b"|awk '{print $2}'

3.在agent上添加监控项
UserParameter=mysql_discovery[],/etc/zabbix/scripts/discovery_mysql_port.sh $1
UserParameter=mysql.status[
],/etc/zabbix/scripts/mysql_status.sh $1 $2

4.重启agent服务
systemctl restart zabbix-agent

自动生成的监控项效果图:
zabbix监控MySQL多实例实践

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

zabbix监控MySQL多实例实践

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Zabbix实现监控多个mysql过程解析

一台服务器上开启了3个mysql实例进程,占用不同的端口 3306、3307、3308 原理说明:通过自动发现规则来获取MySQL实例的端口,自动发现规则上的{$MYSQLPORT}是要传递给agent自动发现脚本的参数,这个值是从主机定义
2022-05-15

Kubernetes监控实践

一、Kubernetes介绍Kubernetes(K8s)是一个开源平台,能够有效简化应用管理、应用部署和应用扩展环节的手动操作流程,让用户更加灵活地部署管理云端应用。作为可扩展的容错平台,K8s几乎能够部署在所有基础设施中,与Google
2023-06-04

shell监控脚本实例—监控mysql主从复制

本节内容:监控mysql主从复制的shell脚本。 说明:监控脚本在 rhel5 下测试正常,其它版本的linux 系统请自行测试,需要的一些准备工作可以查看这篇文章 代码:#监控mysql 主从复制cat chk_mysql_rep.sh
2022-06-04

Zabbix基于snmp实现监控linux主机

前言:linux主机的话还是比较好处理的,无论是安装agent代理程序还是使用snmp,都是比较方便的,本文旨在介绍通过snmp使client与server进行连接。 环境:server:192.168.249.1www.cppcns.co
2022-06-04

JMX 实践:使用 Java 监控和管理的真实案例

Java 监控和管理:JMX 实践指南
JMX 实践:使用 Java 监控和管理的真实案例
2024-02-19

如何监控和管理多个Prometheus实例

要监控和管理多个Prometheus实例,可以考虑以下方法:使用Prometheus Federation:Prometheus支持Federation机制,可以将一个Prometheus实例的数据发送到另一个Prometheus实例进行集
如何监控和管理多个Prometheus实例
2024-03-04

zabbix中如何使用SNMPTRAP实现主动监控

在Zabbix中使用SNMP Trap实现主动监控,需要进行以下步骤:1. 配置SNMP Trap接收器:- 在Zabbix服务器上安装SNMP Trap接收器,例如snmptrapd。- 配置SNMP Trap接收器的监听IP和端口。2.
2023-09-14

怎么实现zabbix自定义监控nginx状态

这篇文章主要介绍“怎么实现zabbix自定义监控nginx状态”,在日常操作中,相信很多人在怎么实现zabbix自定义监控nginx状态问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么实现zabbix自定义
2023-06-25

SequoiaDB监控与开发实践分析

使用背景 公司近期上线了一个新应用,底层数据库采用了国产的分布式数据库 – SequoiaDB。   因为需要将 SequoiaDB 集群纳入到公司的整个监控体系中,所以需要对 SequoiaDB 的状态、性能指标等信息收集起来,然后提供监控系统使用。   S
SequoiaDB监控与开发实践分析
2019-02-26

编程热搜

目录