zoukankan      html  css  js  c++  java
  • zabbix用自带模板监控mysql

    本身zabbix-agent没有提供对mysql监控的key,所以需要自定义key来应用这个模板

    默认的模板有以下三类

    mysql.status[var]

    mysql.ping

    mysql.version

    MySQL的监控就是用show status命令查看相关的参数,取值

    在agent端编写key的监控脚本

    # vim /usr/local/zabbix/scripts/mysql.status.sh

    #!/bin/bash
    mysql=$(which mysql)
    var=$1
    MYSQL_USER=$2
    MYSQL_PASSWORD=$3
    MYSQL_HOST=$4

    [ "${MYSQL_USER}" = '' ] && MYSQL_USER=zabbix
    [ "${MYSQL_PASSWORD}" = '' ] && MYSQL_PASSWORD=123
    [ "${MYSQL_HOST}" = '' ] && MYSQL_HOST=localhost

    [ "${var}" = ' ' ] && echo ""||${mysql} -u${MYSQL_USER} -p${MYSQL_PASSWORD} -h${MYSQL_HOST} -e 'show status'|grep -v Variable_name|grep "${var}"|awk '{print $2}'

    修改权限

    # chmod 755 /usr/local/zabbix/scripts/mysql.status.sh

    测试脚本

    # /usr/local/zabbix/scripts/mysql.status.sh Uptime
    173778

    修改zabbix agent的配置文件

    # vim /usr/local/zabbix/etc/zabbix_agentd.conf

    Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/      --->配置文件key的路径

    UnsafeUserParameters=1                                            ---》允许特殊字符

    增加mysql key的配置文件

    # vim /usr/local/zabbix/etc/zabbix_agentd.conf.d/mysql.status.conf

    UserParameter=mysql.status[*],/usr/local/zabbix/scripts/mysql.status.sh $1

    UserParameter=mysql.ping,/usr/bin/mysqladmin -uzabbix -p123 ping|grep alive|wc -l

    UserParameter=mysql.version,mysql -V|cut -f6 -d" "|sed 's/,//'

    然后测试

    # /usr/local/zabbix/sbin/zabbix_agentd -t mysql.status[Uptime]
    mysql.status[Uptime] [t|174213]

    重启agent服务

    service zabbix_agentd restart

    服务器端测试

    # /usr/local/zabbix/bin/zabbix_get -s 192.168.1.237 -k mysql.status[Uptime]
    171895

    OK,在zabbix添加mysql模板或者等待约1分钟的更新周期查看即可

    mysql SHOW STATUS 详解 

    SHOW STATUS提供服务器的状态信息(象mysqladmin extended-status一样)。输出类似于下面的显示,尽管格式和数字可以有点不同:
    下列含义:

    Aborted_clients 由于客户没有正确关闭连接已经死掉,已经放弃的连接数量。
    Aborted_connects 尝试已经失败的MySQL服务器的连接的次数。
    Connections 试图连接MySQL服务器的次数。
    Created_tmp_tables 当执行语句时,已经被创造了的隐含临时表的数量。
    Delayed_insert_threads 正在使用的延迟插入处理器线程的数量。
    Delayed_writes 用INSERT DELAYED写入的行数。
    Delayed_errors 用INSERT DELAYED写入的发生某些错误(可能重复键值)的行数。
    Flush_commands 执行FLUSH命令的次数。
    Handler_delete 请求从一张表中删除行的次数。
    Handler_read_first 请求读入表中第一行的次数。
    Handler_read_key 请求数字基于键读行。
    Handler_read_next 请求读入基于一个键的一行的次数。
    Handler_read_rnd 请求读入基于一个固定位置的一行的次数。
    Handler_update 请求更新表中一行的次数。
    Handler_write 请求向表中插入一行的次数。
    Key_blocks_used 用于关键字缓存的块的数量。
    Key_read_requests 请求从缓存读入一个键值的次数。
    Key_reads 从磁盘物理读入一个键值的次数。
    Key_write_requests 请求将一个关键字块写入缓存次数。
    Key_writes 将一个键值块物理写入磁盘的次数。
    Max_used_connections 同时使用的连接的最大数目。
    Not_flushed_key_blocks 在键缓存中已经改变但是还没被清空到磁盘上的键块。
    Not_flushed_delayed_rows 在INSERT DELAY队列中等待写入的行的数量。
    Open_tables 打开表的数量。
    Open_files 打开文件的数量。
    Open_streams 打开流的数量(主要用于日志记载)
    Opened_tables 已经打开的表的数量。
    Questions 发往服务器的查询的数量。
    Slow_queries 要花超过long_query_time时间的查询数量。
    Threads_connected 当前打开的连接的数量。
    Threads_running 不在睡眠的线程数量。
    Uptime 服务器工作了多少秒。

    关于上面的一些注释:

    如果Opened_tables太大,那么你的table_cache变量可能太小。
    如果key_reads太大,那么你的key_cache可能太小。缓存命中率可以用key_reads/key_read_requests计算。
    如果Handler_read_rnd太大,那么你很可能有大量的查询需要MySQL扫描整个表或你有没正确使用键值的联结(join)。
    SHOW VARIABLES显示出一些MySQL系统变量的值,你也能使用mysqladmin variables命令得到这个信息。如果缺省值不合适,你能在mysqld启动时使用命令行选项来设置这些变量的大多数。

    SHOW PROCESSLIST显示哪个线程正在运行,你也能使用mysqladmin processlist命令得到这个信息。如果你有process权限,你能看见所有的线程,否则,你仅能看见你自己的线程。见7.20 KILL句法。如果你不使用FULL选项,那么每个查询只有头100字符被显示出来。

    SHOW GRANTS FOR user列出对一个用户必须发出以重复授权的授权命令 

  • 相关阅读:
    spring项目(springmvc)(多模块/单模块)maven打包引入第三方jar方式,使用scope:system配置systemPath编译,不用添加到本地仓库!
    Mysql 执行效率 性能综合贴
    前端Js框架 UI框架汇总 特性 适用范围 选择
    通用 正则表达式 C# (.NET)Regex 总结
    VSCode Node cannot launch program setting the 'outFiles' attribute might help
    CSS常见问题,定位技巧总结
    java 欢迎页 主页 设置为servlet的方法
    MSSQL Server 及 MSSQL Express版本 自动备份
    SQL Server 2008 R2 安装 下载
    mysql 日期计算集合
  • 原文地址:https://www.cnblogs.com/liqing1009/p/4230620.html
Copyright © 2011-2022 走看看