共计 5707 个字符,预计需要花费 15 分钟才能阅读完成。
自动写代码机器人,免费开通
今天就跟大家聊聊有关使用 zabbix 怎么对 mysql 进行监控,可能很多人都不太了解,为了让大家更加了解,丸趣 TV 小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
zabbix 监控 mysql1、监控规划
在创建监控项之前要尽量考虑清楚要监控什么,怎么监控,监控数据如何存储,监控数据如何展现,如何处理报警等。要进行监控的系统规划需要对 Zabbix 很了解,这里只是提出监控的需求。
需求一:监控 MySQL 的状态,当状态发生异常,发出报警;
需求二:监控 MySQL 的操作,并用图表展现;
2、自定义脚本监控扩展 Agent
Zabbix Server 与 Agent 之间监控数据的采集主要是通过 Zabbix Server 主动向 Agent 询问某个 Key 的值,Agent 会根据 Key 去调用相应的函数去获取这个值并返回给 Server 端。Zabbix 2.4.7 的 Agent 本并没有内置 MySQL 的监控功能(但是 Server 端提供了相应的 Template 配置),所以我们需要使用 Zabbix 的 User Parameters 功能,为 MySQL 添加监控脚本。
3、授权 mysql 登录用户(agent 端)
mysql grant usage on *.* to zabbix@127.0.0.1 identified by 123456
mysql flush privileges;
4、agent 端配置存活检测
利用 UserParameter 参数自定义 Agent Key。
对于需求一,我们采用 mysqladmin 这个工具来实现,命令如下:
# mysqladmin -h 127.0.0.1 -u zabbix -p123456 ping
mysqld is alive
如果 MySQL 状态正常,会显示 mysqld is alive,否则会提示连接不上。对于服务器端,mysqld is alive 这样的句子不好理解,服务器端最好只接收 1 和 0,1 表示服务可用,0 表示服务不可用。那么再改进一下这个命令,如下:
# mysqladmin -h 127.0.0.1 -u zabbix -p123456 ping |grep -c alive
1
用户名和密码放在命令中对于以后的维护不好,所以我们在 /var/lib/zabbix/ 下创建一个包含 MySQL 用户名和密码的配置文件“.my.cnf”,如下:
user=zabbix
host=127.0.0.1
password= 123456
有了这个文件后的命令变更为
HOME=/var/lib/zabbix/ mysqladmin ping |grep -c alive
1
做完这一步后需要做的就是,将这个监控命令添加到 Zabbix Agent 中,并与一个 Key 对应,这样 Zabbox Server 就能通过这个 Key 获取 MySQL 的状态了。我们使用 mysql.ping 作为 MySQL 状态的 Key。
首先在去除 /etc/zabbix/zabbix_agentd.conf 中
“Include=/etc/zabbix_agentd.d/”这一行的注释符。
其次,在 /etc/zabbix/zabbix_agentd.d/ 目录下创建 userparameter_mysql.conf 文件。在文件中添加如下命令:
UserParameter=mysql.ping,HOME=/var/lib/zabbix mysqladmin ping | grep -c alive
使用下面的命令测试是否正常工作。
# /usr/sbin/zabbix_agentd -t mysql.ping
mysql.ping [t|1]
其他性能指标 1. 添加 userparameter_mysql
vim /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf
#### 监控 mysql 性能的脚本
UserParameter=mysql.status[*],/etc/zabbix/zabbix_agentd.d/check_mysql.sh $1
#####mysql 版本
UserParameter=mysql.version,mysql -V
2.check_mysql.sh
#!/bin/bash
# -------------------------------------------------------------------------------
# FileName: check_mysql.sh
# Revision: 1.0
# -------------------------------------------------------------------------------
# Copyright:
# License: GPL
# 用户名
MYSQL_USER= zabbix
# 密码
MYSQL_PWD= zabbix@123
# 主机地址 /IP
MYSQL_HOST= ip
# 端口
MYSQL_PORT= 3306
# 数据连接
MYSQL_CONN= /usr/bin/mysqladmin -u${MYSQL_USER} -p${MYSQL_PWD} -h${MYSQL_HOST} -P${MYSQL_PORT}
# 参数是否正确
if [ $# -ne 1 ];then
echo arg error!
# 获取数据
case $1 in
Uptime)
result=`${MYSQL_CONN} status 2 /dev/null |cut -f2 -d : |cut -f1 -d T `
echo $result
Com_update)
result=`${MYSQL_CONN} extended-status 2 /dev/null |grep -w Com_update |cut -d | -f3`
echo $result
Slow_queries)
result=`${MYSQL_CONN} status 2 /dev/null |cut -f5 -d : |cut -f1 -d O `
echo $result
Com_select)
result=`${MYSQL_CONN} extended-status 2 /dev/null |grep -w Com_select |cut -d | -f3`
echo $result
Com_rollback)
result=`${MYSQL_CONN} extended-status 2 /dev/null |grep -w Com_rollback |cut -d | -f3`
echo $result
Questions)
result=`${MYSQL_CONN} status 2 /dev/null |cut -f4 -d : |cut -f1 -d S `
echo $result
Com_insert)
result=`${MYSQL_CONN} extended-status 2 /dev/null |grep -w Com_insert |cut -d | -f3`
echo $result
Com_delete)
result=`${MYSQL_CONN} extended-status 2 /dev/null |grep -w Com_delete |cut -d | -f3`
echo $result
Com_commit)
result=`${MYSQL_CONN} extended-status 2 /dev/null |grep -w Com_commit |cut -d | -f3`
echo $result
Bytes_sent)
result=`${MYSQL_CONN} extended-status 2 /dev/null |grep -w Bytes_sent |cut -d | -f3`
echo $result
Bytes_received)
result=`${MYSQL_CONN} extended-status 2 /dev/null |grep -w Bytes_received |cut -d | -f3`
echo $result
Com_begin)
result=`${MYSQL_CONN} extended-status 2 /dev/null |grep -w Com_begin |cut -d | -f3`
echo $result
echo Usage:$0(Uptime|Com_update|Slow_queries|Com_select|Com_rollback|Questions|Com_insert|Com_delete|Com_commit|Bytes_sent|Bytes_received|Com_begin)
esac
3. 授权:
chmod +x /etc/zabbix/zabbix_agentd.d/check_mysql.sh
Chown zabbix.zabbix /etc/zabbix/zabbix_agentd.d/check_mysql.sh
4. zabbix_agent 上测试:
zabbix_agentd -t mysql.ping
5.Zabbix_server 测试
zabbix_get -s ip -P 端口 -k mysql.ping
5、在 web 端进行配置
** 创建主机 **
关联模板
创建监控项
创建图形
查看监控图像
其他监控项以此配置完成
6、zabbix 自带 mysql 监控项
version: 数据库版本
key_buffer_size:myisam 的索引 buffer 大小
sort_buffer_size: 会话的排序空间(每个线程会申请一个)join_buffer_size: 这是为链接操作分配的最小缓存大小,这些连接使用普通索引扫描、范围扫描、或者连接不适用索引
max_connections: 最大允许同时连接的数量
max_connect_errors:允许一个主机最多的错误链接次数,如果超过了就会拒绝之后链接(默认 100)。可以使用 flush hosts 命令去解除拒绝
open_files_limits: 操作系统允许 mysql 打开的文件数量,可以通过 opened_tables 状态确定是否需要增大 table_open_cache, 如果 opened_tables 比较大且一直还在增大说明需要增大 table_open_cache
max-heap_tables_size: 建立的内存表的最大大小(默认 16M)这个参数和 tmp_table_size 一起限制内部临时表的最大值 ( 取这两个参数的小的一个),如果超过限制,则表会变为 innodb 或 myisam 引擎,(5.7.5 之前是默认是 myisam,5.7.6 开始是 innodb,可以通过 internal_tmp_disk_storage_engine 参数调整)。max_allowed_packet: 一个包的最大大小
##########GET INNODB INFO
#INNODB variables
innodb_version:
innodb_buffer_pool_instances:将 innodb 缓冲池分为指定的多个(默认为 1)innodb_buffer_pool_size:innodb 缓冲池大小、5.7.5 引入了 innodb_buffer_pool_chunk_size,
innodb_doublewrite:是否开启 doublewrite(默认开启)innodb_read_io_threads:IO 读线程的数量
innodb_write_io_threads:IO 写线程的数量
########innodb status
innodb_buffer_pool_pages_total:innodb 缓冲池页的数量、大小等于 innodb_buffer_pool_size/(16*1024)
innodb_buffer_pool_pages_data:innodb 缓冲池中包含数据的页的数量
########## GET MYSQL HITRATE
1、查询缓存命中率
如果 Qcache_hits+Com_select 0 则为 Qcache_hits/(Qcache_hits+Com_select),否则为 0
2、线程缓存命中率
如果 Connections 0, 则为 1 -Threads_created/Connections,否则为 0
3、myisam 键缓存命中率
如果 Key_read_requests 0, 则为 1 -Key_reads/Key_read_requests,否则为 0
4、myisam 键缓存写命中率
如果 Key_write_requests 0, 则为 1 -Key_writes/Key_write_requests,否则为 0
5、键块使用率
如果 Key_blocks_used+Key_blocks_unused 0,则 Key_blocks_used/(Key_blocks_used+Key_blocks_unused),否则为 0
6、创建磁盘存储的临时表比率
如果 Created_tmp_disk_tables+Created_tmp_tables 0, 则 Created_tmp_disk_tables/(Created_tmp_disk_tables+Created_tmp_tables),否则为 0
7、连接使用率
如果 max_connections 0,则 threads_connected/max_connections,否则为 0
8、打开文件比率
如果 open_files_limit 0,则 open_files/open_files_limit,否则为 0
9、表缓存使用率
如果 table_open_cache 0,则 open_tables/table_open_cache,否则为 0
看完上述内容,你们对使用 zabbix 怎么对 mysql 进行监控有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注丸趣 TV 行业资讯频道,感谢大家的支持。
向 AI 问一下细节