mysql字段 序号函数 mysql编号_mysql


Zabbix 是一个企业级的、开源的、分布式的监控套件,能够监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。在目前生产环境中使用也是相当多,已成为了 Linux 运维从业人员的必学工具。

接下来,就一起来看看如何使用 Zabbix 自带的模版监控 MySQL 数据库吧!

该实践案例来自实验楼《楼+之Linux运维与DevOps实战》,所有实践操作均是在实验楼提供的在线环境完成。

1.在已安装 Zabbix 的环境中,启动相应的服务。


sudo service mysql start
sudo service zabbix-server start
sudo service zabbix-agent start
sudo service apache2 start


然后访问 http://localhost/zabbix就会跳转到首页,如下所示:


mysql字段 序号函数 mysql编号_mysql字段 序号函数_02


顺序点击屏幕上的 Configuration -> Templates,我们在搜索框中输入 MySQL 先查看一下系统是否存在 MySQL 模板。结果如下所示,可以看到存在一个名为 Template DB MySQL 的模板。


mysql字段 序号函数 mysql编号_mysql字段 序号函数_03


点击 Name 为 Template DB MySQL 的模板查看详情,进入详情页面再点击 Items 查看:


mysql字段 序号函数 mysql编号_mysql_04


2. 添加监控脚本

由于 zabbix-agent 没有直接提供对 MySQL 监控的 key,所以我们需要自定义 key 来应用这个模板。

根据前面看到的默认模板,也就是每个 Name 对应的 key,可以把 key 归为以下 3 类:

mysql.status[var]: 这个时候的 key 就取决于其中的参数 mysql.ping mysql.version 我们尝试来编写一个 key 的脚本。

在 MySQL 中可以执行命令 show status 来查看性能参数,然后取出对应的值:

进入 mysql


mysql -uroot


查看性能参数


show status


mysql字段 序号函数 mysql编号_MySQL_05


将这个脚本命名为 monitor_mysql.sh。执行如下命令新建脚本文件:


cd /etc/zabbix
sudo mkdir scripts && cd scripts
sudo touch monitor_mysql.sh


在环境中安装 jq,否则脚本内的变量类型转换语句会无法执行,会导致后面的 items 无法获取到正确的数据类型而报错:


sudo apt-get install jq


然后向 monitor_mysql.sh 文件中写入如下代码内容:


#!/bin/bash

# 用户名
MYSQL_USER='zabbix'
# 密码
MYSQL_PASSWORD='zabbix'
# 主机地址/IP
MYSQL_HOST='localhost'
# 端口
MYSQL_PORT='3306'
# 数据连接
MYSQL_CONN="/usr/bin/mysqladmin"

# 参数是否正确
if [ $# -ne "1" ];then
    echo "arg error!"
fi

# 获取数据
case $1 in
    Uptime)
        result=`${MYSQL_CONN} status|cut -f2 -d":"|cut -f1 -d"T"`
        echo $result
        ;;
    Com_update)
        result=`${MYSQL_CONN} extended-status |grep -w "Com_update"|cut -d"|" -f3`
        echo $result
        ;;
    Slow_queries)
        result=`${MYSQL_CONN} status |cut -f5 -d":"|cut -f1 -d"O"`
        echo $result
        ;;
    Com_select)
        result=`${MYSQL_CONN} extended-status |grep -w "Com_select"|cut -d"|" -f3`
        echo $result
        ;;
    Com_rollback)
        result=`${MYSQL_CONN} extended-status |grep -w "Com_rollback"|cut -d"|" -f3`
        echo $result
        ;;
    Questions)
        result=`${MYSQL_CONN} status|cut -f4 -d":"|cut -f1 -d"S"`
        echo $result
        ;;
    Com_insert)
        result=`${MYSQL_CONN} extended-status |grep -w "Com_insert"|cut -d"|" -f3`
        echo $result
        ;;
    Com_delete)
        result=`${MYSQL_CONN} extended-status |grep -w "Com_delete"|cut -d"|" -f3`
        echo $result
        ;;
    Com_commit)
        result=`${MYSQL_CONN} extended-status |grep -w "Com_commit"|cut -d"|" -f3`
        echo $result
        ;;
    Bytes_sent)
        result=`${MYSQL_CONN} extended-status |grep -w "Bytes_sent" |cut -d"|" -f3`
        echo $result
        ;;
    Bytes_received)
        result=`${MYSQL_CONN} extended-status |grep -w "Bytes_received" |cut -d"|" -f3`
        echo $result
        ;;
    Com_begin)
        result=`${MYSQL_CONN} extended-status |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


给脚本赋予可执行权限:


sudo chmod 755 monitor_mysql.sh
验证脚本是否可行:

./monitor_mysql.sh Uptime


使用 sudo vim /etc/zabbix/zabbix_agentd.conf 命令修改 zabbix 的配置文件,将其中的两项配置修改为如下所示:


# 配置文件路径
Include=/etc/zabbix/zabbix_agentd.conf.d/
# 允许特殊字符
UnsafeUserParameters=1


然后在自定义的配置文件路径下面新建 mysql_status.conf 文件:


cd /etc/zabbix
sudo mkdir zabbix_agentd.conf.d && cd zabbix_agentd.conf.d
sudo touch mysql_status.conf


mysql_status.conf 文件中写入如下内容,用于定义 key 的名称:


UserParameter=mysql.status[*],/etc/zabbix/scripts/monitor_mysql.sh $1
UserParameter=mysql.ping,/usr/bin/mysqladmin -uzabbix -pzabbix ping|grep alive|wc -l
UserParameter=mysql.version,mysql -V | cut -f6 -d" " | sed 's/,//'


同时在环境中安装 zabbix-get 进程以便 zabbix agent 监控代理采集数据,在终端执行如下命令进行安装:


sudo apt-get install zabbix-get


重启 zabbix-agent:


sudo service zabbix-agent restart


进行测试:


zabbix_get -s 127.0.0.1 -p 10050 -k mysql.version
zabbix_get -s 127.0.0.1 -p 10050 -k mysql.ping
zabbix_get -s 127.0.0.1 -p 10050 -k "mysql.status[Bytes_sent]"


mysql字段 序号函数 mysql编号_mysql字段 序号函数_06


3. 使 MySQL 自带的监控模板生效

首先新建一个 MySQL host,顺序点击屏幕上的 Configuration -> Hosts -> Create host 进入新建页面:


mysql字段 序号函数 mysql编号_mysql字段 序号函数_07


页面默认自动选择了上方导航栏中的 Host,在 Host name 中填写 MySQLGroups 中把 Other groups 中的 Templates/Databases 移动到左边的 In groups 中。注意:在 Agent interfacesIP address 默认为 127.0.0.1Port 也默认为 10050,因为我们检测的是本地进行的测试。


mysql字段 序号函数 mysql编号_mysql_08


最后点击页面左下方的 Add 保存修改,然后页面就跳转到 Hosts 界面如下:


mysql字段 序号函数 mysql编号_mysql字段 序号函数_09


再一次点击 NameMySQL 的条目,在屏幕选择 MySQL 条目下的 Templates,在 Link new templates 中选择默认的 MySQL 模板 Template DB MySQL 并点击下方的 Add 按钮,效果如下所示:


mysql字段 序号函数 mysql编号_mysql字段 序号函数_10


顺序点击屏幕上的 Configuration -> Templates,选择 Template DB MySQL,在 Template 选项栏的下方,Other | group 中选择 Templates/Databases,看到下方列表栏中出现 MySQL,选择 MySQL 点击向左的箭头,将其移动到 Hosts/templates 中,然后点击左下方的 Update 按钮进行更新:


mysql字段 序号函数 mysql编号_mysql字段 序号函数_11


这个时候我们再查看 Configuration -> Hosts 下的 MySQL 可以看到对应的监控项已经生效:


mysql字段 序号函数 mysql编号_MySQL_12


查看监控的 Items


mysql字段 序号函数 mysql编号_mysql字段 序号函数_13


同时也可以看到对应的可视化图像,依次点击 Monitoring -> Graphs,在 Host中选择 MySQL,在 Graph 中可以选择 MySQL bandwidth 或是 MySQL operations,它们对应的图像分别为:


mysql字段 序号函数 mysql编号_mysql字段 序号函数_14


mysql字段 序号函数 mysql编号_mysql字段 序号函数_15


4.添加自定义的监控项

前面,我们让默认的 MySQL 监控模板生效了,接下来中我们来自定义监控总的连接次数 Connections

使用 Clone 的方式来完成这一项监控的设置。

任意单击 MySQL 模板中的一个 item,比如我这里选择 MySQL version,然后下拉页面到最底部,点击 Clone 按钮:


mysql字段 序号函数 mysql编号_mysql字段 序号函数_16


mysql字段 序号函数 mysql编号_MySQL_17


然后在新页面中将一些参数值修改为如下所示:


mysql字段 序号函数 mysql编号_MySQL_18


最后点击下方的 Add 按钮进行添加。

经过上面的步骤,我们就配置好了 MySQL 的系统监控,大家可以对 MySQL 数据库进行一些操作,然后查看对应的数据和图表是否有相应的变化,也可以在这个基础上继续按照实际的需求修改监控配置。