Zabbix低级主动发现之MySQL多实例

  接上篇:Zabbix自动发现与主动注册

  

  在一个agent安装一个maraidb

  拷贝一个原始配置文档并且修改配置用于开启多实例

  按照配置文件初始化数据库

1
2
mysql_install_db --user=mysql --defaults-file=/etc/my3307.cnf
mysql_install_db --user=mysql --defaults-file=/etc/my3308.cnf

  启动

1
2
mysqld_safe --defaults-file=/etc/my3307.cnf &
mysqld_safe --defaults-file=/etc/my3308.cnf &

  定义一个脚本/etc/zabbix/zabbix_agentd.d/discover_mysql.sh

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#!/bin/bash
#mysql low-lever discovery
res=`netstat -lntp|grep mysql |awk -F "[ :]+" '{print $5}'`
port=($res)
printf '{'
printf '"data":['
for key in ${!port[@]}
do
        if [[ "${#port[@]}" -gt 1 && "${key}"  -ne "$((${#port[@]}-1))" ]];then
                printf '{'
                printf "\"{#MYSQLPORT}\":\"${port[${key}]}\"},"
        else [[ "${key}" -eq "((${#port[@]}-1))" ]]
                printf '{'
                printf "\"{#MYSQLPORT}\":\"${port[${key}]}\"}"
        fi
done
printf ']'
printf '}'

  手动执行脚本

1
2
3
sh discover_mysql.sh
输出为
{"data":[{"{#MYSQLPORT}":"3306"},{"{#MYSQLPORT}":"3307"},{"{#MYSQLPORT}":"3308"}]}

  判断是不是json格式使用python里面的一个工具(能排版出来就是json)

1
sh discover_mysql.sh |python -m json.tool

  自定义key去调用脚本/etc/zabbix/zabbix_agentd.d/discover_mysql.conf

1
UserParameter=discover_mysql, sh /etc/zabbix/zabbix_agentd.d/discover_mysql.sh

  重启zabbix agent

  在server上面查看

1
zabbix_get -s 192.168.80.160 -k discover_mysql

   报错

  因为netstat -anlp加了参数p需要root权限,而在server上面获取使用zabbix用户执行

  在agent加修改

1
chmod u+s `which netstat`

  取值正确了

  在web创建模板 本次直接在主机上面创建discover规则

  创建items的原型

  修改配置文件/etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf

1
UserParameter=mysql.status[*],echo "show global status where Variable_name='$2';" | HOME=/var/lib/zabbix mysql -uroot -p123456 -h127.0.0.1 -P $1 -N | awk '{print $$2}'

  这里把密码固定了

  设置多实例的密码

1
2
3
mysqladmin -h 127.0.0.1 -uroot password '123456' -P3306
mysqladmin -h 127.0.0.1 -uroot password '123456' -P3307
mysqladmin -h 127.0.0.1 -uroot password '123456' -P3308

  修改完可以登录验证一下

  重启zabbix agent

  在zabbix server验证

1
zabbix_get -s 192.168.80.160 -k mysql.status[3306,Bytes_sent]

  创建items原型(可以参考系统自定义的mysql模板)这里传递的两个参数第一个是端口号使用定义的变量代替

 

   添加完克隆多个,为了区分不同端口名称可以加端口变量

  创建完毕就自动发现了

   下一篇:Zabbix分布式监控

     

posted @   minseo  阅读(264)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
点击右上角即可分享
微信分享提示