使用zabbix怎么对mysql进行监控

40次阅读
没有评论

共计 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

使用 zabbix 怎么对 mysql 进行监控

5.Zabbix_server 测试

zabbix_get -s ip -P 端口 -k mysql.ping

使用 zabbix 怎么对 mysql 进行监控

5、在 web 端进行配置

** 创建主机 **

使用 zabbix 怎么对 mysql 进行监控
使用 zabbix 怎么对 mysql 进行监控
关联模板

使用 zabbix 怎么对 mysql 进行监控

创建监控项

使用 zabbix 怎么对 mysql 进行监控

创建图形

使用 zabbix 怎么对 mysql 进行监控
查看监控图像

使用 zabbix 怎么对 mysql 进行监控

其他监控项以此配置完成

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 问一下细节

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-12-04发表,共计5707字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)