当前位置:首页 > 文章列表 > 数据库 > MySQL > 如何使用Zabbix监控多个MySQL实例?

如何使用Zabbix监控多个MySQL实例?

来源:亿速云 2023-05-01 08:40:51 0浏览 收藏

数据库不知道大家是否熟悉?今天我将给大家介绍《如何使用Zabbix监控多个MySQL实例?》,这篇文章主要会讲到等等知识点,如果你在看完本篇文章后,有更好的建议或者发现哪里有问题,希望大家都能积极评论指出,谢谢!希望我们能一起加油进步!

如何使用Zabbix监控多个MySQL实例?

用到的主要工具: 宏(分为模板宏,主机宏,自动发现宏)

     主机宏格式:$MACRO   (直接就可以 填  值)
          自动发现宏:#MACRO    (需要配合 创建的 key 取值)

大体架构

1.agent主机 — agent 主机创建 宏变量 $MYSQLPORT ,宏变量的值为 Discovery rules的 自动发现脚本参数 2.模板 — 模板里创建自动发现规则,靠的是自动发现脚本,得到自动发现宏变量。 3.监控项– 在Discovery rules 里创建监控项,监控项名称和key值里都有自动发现宏变量,会自动生成相关端口的监控项 4.客户端 脚本和键创建,来支持整个架构运行

搭建步骤

1.创建模板
如何使用Zabbix监控多个MySQL实例?

因为这个模板是 克隆 的默认 mysql监控模板,可以忽略 items,triggers。 监控项都在 Discovery rules 里。

2.为模板添加 自动发现宏(自动发现宏声明的途径就是下图的脚本,脚本里只有生成固定的格式,zabbix就会认定他是 自动发现宏)
如何使用Zabbix监控多个MySQL实例?

上图 里的 mysql.discovery 就是获取 自动发现宏的 脚本,脚本是放在 agent端。

后面的 为此脚本执行时带的参数,MYSQLPORT 是主机宏。

discovery rule 右边的 filters 是过滤规则的意思,比方你 只想取脚本里的 某某 自动发现宏,就可以在里面设置。 这里就只有一个自动发现宏,所有不做 配置。

3.创建监控项(监控项和监控的脚本都是要改的,因为自动发现功能,至少脚本会多了一个参数)
如何使用Zabbix监控多个MySQL实例?
4.创建 主机宏
如何使用Zabbix监控多个MySQL实例?

点开主机,添加主机宏,宏名称是 自动发现脚本里的 参数, 宏的值就是 此 主机上需要监控的端口。

这样就实现了 只要改动主机宏的 值,就可以改变主机宏的监控项。

脚本展示

1.discovery_mysql.sh 自动发现端口脚本 (网上抄的脚本做了修改)

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"fidoneprintf '\t ]\n'printf '}\n'

执行实例: 以_ 为分隔符,格式化输出 自动发现宏 ./discovery_mysql.sh 3306_3307_3308

{
             "data":[
             {
                               "{#MYSQLPORT}":"3306"},
             {
                               "{#MYSQLPORT}":"3307"},
             {
                               "{#MYSQLPORT}":"3308"}
             ]
}

2.mysql_filestype.sh 监控mysql的一些挂载盘

var=$1MYSQL_PORT=$2MYSQL_NAME=`ps -ef |grep '/mysql/app/bin/mysqld'| grep "$MYSQL_PORT" |grep -v grep | awk -F" " '{print $11}' |awk -F"/" '{print $2}'` ;
MYSQL_SOCk_DIR="/$MYSQL_NAME/" ;
df -h "${MYSQL_SOCk_DIR}${var}" |grep -v Filesystem |awk -F" " '{print $5}' | awk -F"%" '{print $1}' ;

3.mysql_ping.sh 监控mysql状态

MYSQL_PORT=$1;

[ "${MYSQL_USER}"     = '' ] &&  MYSQL_USER=xxx
[ "${MYSQL_PASSWORD}" = '' ] &&  MYSQL_PASSWORD=xxxxx

mysqladmin=/mysql/app/bin/mysqladmin  ;

MYSQL_SOCk_DIR=`ps -ef |grep 'mysql'| grep "${MYSQL_PORT}" |grep -v 'grep' | awk -F" " '{print $16}'`  ;${mysqladmin}   -u${MYSQL_USER} -p${MYSQL_PASSWORD}  ${MYSQL_SOCk_DIR}  ping   2> /dev/null |grep 'alive'|wc -l  ;

注意: 这边连接实例 都是 mysql -u -p -S /xxx/mysql.sock

但是后来发现部分客户端总是无法正确显示值,而且就是这条 语句报错, 感觉是环境变量的问题

所以拿 –socket=/xxx/mysql.sock 来代替 -S/xxx/mysql.sock 。 这里的变量${MYSQL_SOCk_DIR} 就是–socket=/xxx/mysql.sock 。

4.mysql_repl.sh mysql主从状态监控

var=$1MYSQL_PORT=$2MYSQL_SOCk_DIR=`ps -ef |grep 'mysql'| grep "${MYSQL_PORT}" |grep -v 'grep' | awk -F" " '{print $16}'`  ;
mysql=/mysql/app/bin/mysql
[ "${MYSQL_USER}"     = '' ] &&  MYSQL_USER=xxx
[ "${MYSQL_PASSWORD}" = '' ] &&  MYSQL_PASSWORD=xxxx${mysql}  -u${MYSQL_USER} -p${MYSQL_PASSWORD} ${MYSQL_SOCk_DIR} -e "show slave status\G;"  2> /dev/null |grep "\b${var}\b"|awk -F" " '{print $2}'   ;

主从状态 有几个端口的值是 空的, 这个得 具体问题具体设置

5.mysql_status2 mysql性能之类的监控

mysql=/mysql/app/bin/mysql
var=$1MYSQL_PORT=$2[ "${MYSQL_USER}"     = '' ] &&  MYSQL_USER=xxx
[ "${MYSQL_PASSWORD}" = '' ] &&  MYSQL_PASSWORD=xxxxx

MYSQL_SOCk_DIR=`ps -ef |grep 'mysql'| grep "${MYSQL_PORT}" |grep -v 'grep' | awk -F" " '{print $16}'`  ;${mysql}  -u${MYSQL_USER} -p${MYSQL_PASSWORD} ${MYSQL_SOCk_DIR} -e "show global status;" 2> /dev/null |grep -v Variable_name|grep "\b${var}\b"|awk '{print $2}'   ;

发现有些监控项 或因为数字过长而无法显示,待解决

6.mysql_version.sh mysql版本监控

MYSQL_PORT=$1;

MYSQL_SOCk_DIR=`ps -ef |grep 'mysql'| grep "${MYSQL_PORT}" |grep -v 'grep' | awk -F" " '{print $16}'`  ;

mysql=/mysql/app/bin/mysql ;

[ "${MYSQL_USER}"     = '' ] &&  MYSQL_USER=xxx
[ "${MYSQL_PASSWORD}" = '' ] &&  MYSQL_PASSWORD=xxxx${mysql}  -u${MYSQL_USER} -p${MYSQL_PASSWORD} ${MYSQL_SOCk_DIR}  -e "select version();" 2> /dev/null |awk 'END {print}'

7.mysql_status_many.conf 生成可用键 配置文件

UserParameter=mysql.discovery[*],/patrol/zabbix/bin/duoshili_discovery/discovery_mysql.sh $1  
UserParameter=mysql.status_many[*],/patrol/zabbix/bin/duoshili_discovery/mysql_status2 $1 $2UserParameter=mysql.ping_many[*],/patrol/zabbix/bin/duoshili_discovery/mysql_ping.sh $1UserParameter=mysql.version_many[*],/patrol/zabbix/bin/duoshili_discovery/mysql_version.sh $1UserParameter=mysqlcheck_repl[*],/patrol/zabbix/bin/duoshili_discovery/mysql_repl.sh $1 $2UserParameter=mysql.filestyle_many[*],/patrol/zabbix/bin/duoshili_discovery/mysql_filestype

本篇关于《如何使用Zabbix监控多个MySQL实例?》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于数据库的相关知识,请关注golang学习网公众号!

版本声明
本文转载于:亿速云 如有侵犯,请联系study_golang@163.com删除
CentOS 7安装MySQL和MySQLClient时遇到的问题及解决方法CentOS 7安装MySQL和MySQLClient时遇到的问题及解决方法
上一篇
CentOS 7安装MySQL和MySQLClient时遇到的问题及解决方法
MySQL数据同步至Elasticsearch的常用方式有哪些?
下一篇
MySQL数据同步至Elasticsearch的常用方式有哪些?
查看更多
最新文章
查看更多
课程推荐
  • 前端进阶之JavaScript设计模式
    前端进阶之JavaScript设计模式
    设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
    542次学习
  • GO语言核心编程课程
    GO语言核心编程课程
    本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
    511次学习
  • 简单聊聊mysql8与网络通信
    简单聊聊mysql8与网络通信
    如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
    498次学习
  • JavaScript正则表达式基础与实战
    JavaScript正则表达式基础与实战
    在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
    487次学习
  • 从零制作响应式网站—Grid布局
    从零制作响应式网站—Grid布局
    本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
    484次学习
查看更多
AI推荐
  • 千音漫语:智能声音创作助手,AI配音、音视频翻译一站搞定!
    千音漫语
    千音漫语,北京熠声科技倾力打造的智能声音创作助手,提供AI配音、音视频翻译、语音识别、声音克隆等强大功能,助力有声书制作、视频创作、教育培训等领域,官网:https://qianyin123.com
    163次使用
  • MiniWork:智能高效AI工具平台,一站式工作学习效率解决方案
    MiniWork
    MiniWork是一款智能高效的AI工具平台,专为提升工作与学习效率而设计。整合文本处理、图像生成、营销策划及运营管理等多元AI工具,提供精准智能解决方案,让复杂工作简单高效。
    155次使用
  • NoCode (nocode.cn):零代码构建应用、网站、管理系统,降低开发门槛
    NoCode
    NoCode (nocode.cn)是领先的无代码开发平台,通过拖放、AI对话等简单操作,助您快速创建各类应用、网站与管理系统。无需编程知识,轻松实现个人生活、商业经营、企业管理多场景需求,大幅降低开发门槛,高效低成本。
    166次使用
  • 达医智影:阿里巴巴达摩院医疗AI影像早筛平台,CT一扫多筛癌症急慢病
    达医智影
    达医智影,阿里巴巴达摩院医疗AI创新力作。全球率先利用平扫CT实现“一扫多筛”,仅一次CT扫描即可高效识别多种癌症、急症及慢病,为疾病早期发现提供智能、精准的AI影像早筛解决方案。
    166次使用
  • 智慧芽Eureka:更懂技术创新的AI Agent平台,助力研发效率飞跃
    智慧芽Eureka
    智慧芽Eureka,专为技术创新打造的AI Agent平台。深度理解专利、研发、生物医药、材料、科创等复杂场景,通过专家级AI Agent精准执行任务,智能化工作流解放70%生产力,让您专注核心创新。
    174次使用
微信登录更方便
  • 密码登录
  • 注册账号
登录即同意 用户协议隐私政策
返回登录
  • 重置密码