美文网首页
zabbix4.0 mysql监控

zabbix4.0 mysql监控

作者: Daisy小朋友 | 来源:发表于2020-03-09 14:30 被阅读0次
1 添加帐户密码

mysql> GRANT USAGE ON . TO 'mysqlcheck'@'localhost' IDENTIFIED BY 'mysqlcheck';
mysql> FLUSH PRIVILEGES;

USAGE ON*.* 表示该用户对任何数据库和任何表都没有权限。
登陆后只可以查看到information_schema这个表
information_schema 数据库跟 performance_schema 一样,都是 MySQL 自带的信息数据库。其中 performance_schema 用于性能分析,而 information_schema 用于存储数据库元数据(关于数据的数据),例如数据库名、表名、列的数据类型、访问权限等
2 创建.my.cnf或者直接将用户名密码写入到/etc/my.cnf中

创建隐藏文件在某个目录,如/etc/zabbix

[root@zabbix zabbix]# cat .my.cnf   注意权限zabbix:zabbix
#Zabbix Agent 
[client]
host=127.0.0.1
user=mysqlcheck
password=mysqlcheck

3 修改agent端自带脚本

ls -al /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf
注意修改HOME=/etc/zabbix 这个地址,就是.my.cnf所在位置
比如:mysql.version这个是zabbix中监控的值,mysql -V就是获取的值

[root@zabbix zabbix_agentd.d]# cat userparameter_mysql.conf 
# For all the following commands HOME should be set to the directory that has .my.cnf file with password information.

# Flexible parameter to grab global variables. On the frontend side, use keys like mysql.status[Com_insert].
# Key syntax is mysql.status[variable].
UserParameter=mysql.status[*],echo "show global status where Variable_name='$1';" | HOME=/etc/zabbix mysql -N | awk '{print $$2}'

# Flexible parameter to determine database or table size. On the frontend side, use keys like mysql.size[zabbix,history,data].
# Key syntax is mysql.size[<database>,<table>,<type>].
# Database may be a database name or "all". Default is "all".
# Table may be a table name or "all". Default is "all".
# Type may be "data", "index", "free" or "both". Both is a sum of data and index. Default is "both".
# Database is mandatory if a table is specified. Type may be specified always.
# Returns value in bytes.
# 'sum' on data_length or index_length alone needed when we are getting this information for whole database instead of a single table
UserParameter=mysql.size[*],bash -c 'echo "select sum($(case "$3" in both|"") echo "data_length+index_length";; data|index) echo "$3_length";; free) echo "data_free";; esac)) from information_schema.tables$([[ "$1" = "all" || ! "$1" ]] || echo " where table_schema=\"$1\"")$([[ "$2" = "all" || ! "$2" ]] || echo "and table_name=\"$2\"");" | HOME=/etc/zabbix mysql -N'

UserParameter=mysql.ping,HOME=/etc/zabbix mysqladmin ping | grep -c alive
UserParameter=mysql.version,mysql -V

mysql.size[]
mysql.ping
mysql.version
后面的是命令,添加了生产数据库但是可能是用户没有那个权限,mysql.version这个都可以获取,部分mysql.ping这个可以获取,mysql.size[
]不可以获取
[应该是和mysqlcheck这个用户的添加和权限有关系,因为大家都在用我就先不动了]
自己测试注意一些

4 自带模版添加

Template DB MYSQL Active
如果是zabbix客户端主动式需要修改监控项的获取方式。
自带模版含义


image.png

zabbix中每秒删除/插入/回滚/更新计算方法:


图片.png
QPS 指标主要体现实例的实际处理能力
5 增加慢查询数|全盘扫描数|连接数监控

全盘扫描
全表扫描是数据库搜寻表的每一条记录的过程,直到所有符合给定条件的记录返回为止。通常在数据库中,对无索引的表进行查询一般称为全表扫描;然而有时候我们即便添加了索引,但当我们的SQL语句写的不合理的时候也会造成全表扫描。
可参考:
https://yq.aliyun.com/articles/658369

云数据库 MySQL CPU 占比过高的常见原因和解决方法?

1 慢查询堆积,请查看实例监控上的慢查询和全表扫描,结合慢查询日志(控制台可下载)进行分析优化,若监控上没有慢查询只有全表扫描,建议在控制台将 long_query_time 调小至1s - 2s,使用一段时间后再分析慢查询。
2 没有慢查询堆积,请查看实例监控上的内存占用,若超出实例规格很多,并且磁盘读写量明显增大,表明内存遇到瓶颈,建议升级内存。
3 一般是睡眠连接过多,严重消耗mysql服务器资源(主要是cpu, 内存),并可能导致mysql崩溃
show PROCESSLIST语句,先查看看哪条sql占用过多
https://blog.csdn.net/shenshouer/article/details/22745539
4 其它原因参考
https://www.cnblogs.com/zh94/p/12019333.html
5 mysql优化以及参数参考
https://www.cnblogs.com/mylele/articles/3291438.html
https://www.cnblogs.com/saneri/p/6963583.html
6 腾讯云数据库监控数据参考
https://cloud.tencent.com/document/product/236/8455#.E7.9B.91.E6.8E.A7.E6.8C.87.E6.A0.87

参考:https://www.cnblogs.com/zeq912/p/10595169.html
https://www.zabbix.com/integrations/mysql

相关文章

网友评论

      本文标题:zabbix4.0 mysql监控

      本文链接:https://www.haomeiwen.com/subject/ohqwrhtx.html