zabbix4.4监控案例之MySQL监控

zabbix监控MySQL数据库的流程和上一篇我们讲到的 zabbix4.4监控案例之Nginx监控 原理和流程基本类似、这里我们就不再过多介绍、直接开始配置。

1、MySQL监控项

MySQL数据库的监控项有:

  • 实例状态
  • 数据库连接数
  • 数据库流量
  • 数据库增删改查(select、update、delete、insert等)
  • 数据库缓冲池大小与利用率(MySQL的数据库引擎目前用的是InnoDB,InnoDB的缓存机制InnoDB Buffer Pool 是提高MySQL数据库性能的关键指标,通过监控缓存池的利用率、我们可以知道什么时候对缓存池进行缩扩容)

2、创建监控脚本

其实通过MySQL的系统变量我们也可以获取到我们需要的监控项、例如我们通过 show variables like “%max_c%”;命令就可以获取到MySQL的最大连接数;然后我们通过 show variables where Variable_name=’max_connections’; 命令就可以拿到MySQL的最大连接数了。

img

img

再比如、我们通过 show global status like ‘%conn%’; 命令获取到MySQL数据库的当前并发数量:

img

当然还可以获取到其他的很多监控项,这里我们就不再一一列举了。有了这种思想、我们就可以通过类似的方式获取到我们所需要的监控项及相关参数。首先我们去任意目录创建脚本文件、这里我们去 /usr/local/zabbix/alertscripts/ 脚本监控目录创建一个userparameter_mysql.conf文件,并插入如下内容(这里代码不能正常转义、请各位小伙伴自行手动输入):

image-20210301193249892

# 连接数
UserParameter=mysql.max_connections,echo "show variables where Variable_name='max_connections';" | mysql -N | awk '{print $2}'
UserParameter=mysql.current_connections,echo "show global status where Variable_name='Threads_connected';" |  mysql -N | awk '{print $2}'
# 缓冲池
UserParameter=mysql.buffer_pool_size,echo "show variables where Variable_name='innodb_buffer_pool_size';" | mysql -N |awk '{printf "%.2f",$2/1024/1024/1024}'
UserParameter=mysql.buffer_pool_usage_percent,echo "show global status where Variable_name='Innodb_buffer_pool_pages_free' or Variable_name='Innodb_buffer_pool_pages_total';" | mysql -N | awk '{a[NR]=$2}END{printf "%.1f",100-((a[1]/a[2])*100)}'
# 增删改查
UserParameter=mysql.status[*],echo "show global status where Variable_name='$1';" | mysql -N | awk '{print $$2}'
# 实例状态
UserParameter=mysql.ping,mysqladmin ping | grep -c alive
UserParameter=mysql.version,mysql -V

img

在开始之前我们先用 echo “show variables where Variable_name=’max_connections’;” | mysql -N | awk ‘{print $2}’ 命令测试一下是否能拿到我们需要的参数、执行之后发现需要用户名密码。

img

这里为了保证我们后期可以无需输入账号密码自动执行、我们提前把数据库账号密码配置在MySQL的配置文件中。编辑/etc/my.cnf 并在文件最上方插入如下内容:

这里我们单独创建一个数据库账号、不要使用root账号
[mysql]
host=localhost
user=zabbix
password=KbYKPJDwjjgdsss

[mysqladmin](mysqladmin是为了用来监测实例状态的)
host=localhost
user=zabbix
password=KbYKPJDwjjgdsss

img

添加完成之后我们再次验证一下是否能拿到我们需要的参数,发现已经成功拿到参数:

img

为了使脚本可以通过zabbix_agentd自动运行、这里我们直接把userparameter_mysql.conf文件移动到/usr/local/zabbix/etc/zabbix_agentd.conf.d/目录下面、因为我们之前在zabbix_agentd.conf配置文件中配置了配置文件的读取目录、这样zabbix_agentd会自动读取配置文件。

img

我们再次用zabbix_get命令测试一下、发现可以正常获取到参数、下面我们就可以去配置监控模板了:

img

3、创建监控模板

这里我们采用自定义监控模板的方式进行数据采集、模板创建过程我们这里就不再详细介绍了、有不清楚的小伙伴请移步前一节文章、里面已经介绍的比较详细了。我们具体的监控项如下(小伙伴们主要参考一下监控项的键值就可以了 、如果有不确定的键值或者配置之后拿不到数据、我们可以继续用/usr/local/zabbix/bin/zabbix_get -s 127.0.0.1 -p 10050 -k “mysql.buffer_pool_size” 这个命令测试、如果测试能拿到数据、而模板里面拿不到数据、那你就要好好检查键值了)、触发器可以根据实际需要进行配置(不会的小伙伴请自行百度吧、触发器这一块确实很简单):

img

这里因为是测试、所以我们随机挑选了一些变量进行监控。当然你也可以去MySQL数据库的官方文档 https://dev.mysql.com/doc/refman/5.6/en/server-status-variables.html 查看更多你需要的变量进行配置。

img

4、应用监控模板

模板创建好了之后、我们把模板添加到对应的主机上面:

img

然后就可以去仪表板里面自定义添加监控项的展示图表啦!

5、效果展示

img

推荐文章