21.2zabbix低级自动发现-mysql多实例

配置mysql多实例

注释:自动发现:创建监控主机;低级自动发现:创建监控项
mysql单实例是直接yum安装,开启mysql多实例
准备配置文件

#mysql3307实例
cp /etc/my.cnf /etc/my3307.cnf
vim /etc/my3307.cnf
[mysqld]
datadir=/data/3307/
socket=/data/3307/mysql.sock
port=3307
user=mysql
symbolic-links=0
[mysqld_safe]
log-error=/data/3307/mysqld.log
pid-file=/data/3307/mysqld.pid

#mysql3308实例
cp /etc/my3307.cnf /etc/my3308.cnf
sed -i 's#3307#3308#g' /etc/my3308.cnf

#创建mysql实例路径
mkdir -p /data/{3307,3308}

初始化数据库3307
mysql_install_db --user=mysql --defaults-file=/etc/my3307.cnf
启动数据
mysqld_safe --defaults-file=/etc/my3307.cnf &


初始化数据库3308
mysql_install_db --user=mysql --defaults-file=/etc/my3308.cnf
启动数据
mysqld_safe --defaults-file=/etc/my3308.cnf &

检查多实例mysql状态正常,多实例mysql准备完成。
在这里插入图片描述

配置低级自动发现

创建一个键值,定义key就是mysql.discovery

vim /etc/zabbix/zabbix_agentd.d/mysql.discovery.conf 
UserParameter=mysql.discovery,/bin/bash /server/scripts/mysql.discovery.sh
#创建脚本实现json格式的文件内容
vim /server/scripts/mysql.discovery.sh 
#!/bin/bash
#mysql low-level discovery
res=`netstat -lntp|awk -F "[ :\t]+" '/mysqld/{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 '}\n'

执行脚本mysql.discovery.sh实现json格式内容,实现对应的mysql端口
在这里插入图片描述

测试取值成功,注意:默认情况下载,zabbix会以zabbix用户的身份执行刚才的discover.sh脚本, netstat -lntup需要root用户的权限,所以这里我们使用suid来解决这个问题
chmod u+s /usr/bin/netstat
在这里插入图片描述

zabbix界面上创建自动发现规则
在这里插入图片描述

规则创建完成,如果要给mysql.discovery该规则添加一个过滤器,则需要创建一个正则表达式
在这里插入图片描述

配置一个过滤器的正则表达式,结果为假,意思就是说,将3306该MySQL的端口去掉。
在这里插入图片描述

标签里面的宏值,就是上面执行脚本输出的json格式内容的{#MYSQLPORT}
在这里插入图片描述

配置监控原型

我这里调用原来配置文件:userparameter_mysql.conf里面的key就是mysql.status[*]
在这里插入图片描述

拿出一条对应参考,到命令行中执行测试,

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

测试取值成功
$1就是zabbix系统中模板对应的mysql的键值内容;
$$2就是防止出现与系统中的变量发生冲突。
home就是一个变量,没有实际意义
在这里插入图片描述

其他说明,命令行中直接获取数据库中信息,两个中方法:

#方法一:
echo "select version()" |mysql
#方法二:
mysql -e "select version()"

在这里插入图片描述

数据库中查看sock文件路径

#进入指定的数据库
mysql -h 127.0.0.1 -P 3307
#查看sock文件路径
show VARIABLES like '%sock%';

在这里插入图片描述

修改配置文件:userparameter_mysql.conf,加入指定的主机的地址和指定端口,端口使用$2进行传参即可。
在这里插入图片描述

重启zabbix-agent服务器

systemctl restart zabbix-agent.service
#测试取值3307和3308均有值
zabbix_get -s 127.0.0.1 -k  mysql.status[Uptime,3307]

解释:根据配置文件中对应:mysql.status[*]定义一个key
Uptime(启动时间)传参$1
3307传参为$2
在这里插入图片描述

创建监控项原型名称不能一致,键值里面,启动时间一个,mysql端口是变量,因有过滤3306。所以每个uptime对应两个值。
添加一个应用集mysqls。然后点击添加
在这里插入图片描述

验证,查看监测-最新数据,选择对应主机和应用集,查看最新数据即可,对应两条监控项,包含3307和3308数据库。
在这里插入图片描述

  • 24
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

愿听风成曲

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值