jsp页面判断输入编号已存在mysql中_使用 Zabbix 监控 MySQL 数据库

7861ea3b42564f4999acc9e856262cc2.png

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就会跳转到首页,如下所示:

5a9baaa17eee4cac24ff8fdb004c2266.png

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

a662c7afc16112cb6c25c7eac4815a7a.png

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

f73efdba7cc95c31efe7b78805c8ba88.png

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

2a749f9684b8ea3c582a898eeb3e2b10.png

将这个脚本命名为 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]"

02426ffe1d5b47a70ab23771fff303ae.png

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

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

74a476c7acc135144d6d33437ca3796b.png

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

b091a054b0c791cc73d9fc77cc6c53e7.png

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

08cd6ba8c78e9a66a299d5f67d25d26b.png

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

27d319114f0c2286387b74f3fad6375f.png

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

76ddf28d7f38f9f277d618f24c64ba9c.png

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

c7515828ff4b105940a11ca11f49c8b2.png

查看监控的 Items

74be57012b317de101a25fb9ab07d921.png

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

4ceda730967a6122264fde8d89690523.png

45429814c6ee06994389d8a0f6ad25b9.png

4.添加自定义的监控项

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

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

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

2a06088a5e7ced8f9840e0296100ac65.png

3ffbdcda012e7343f9b74bd0e202a200.png

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

42b0185faa5e59a39ceb28554ea19e11.png

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

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

另外社区还提供了强有力的 Percona 监控插件作为补充工具,它比 zabbix 自带的监控模板要强大的多,采集的数据更加全面。在《楼+之Linux运维与DevOps实战》第 5 周的内容中有详细的讲解说明,感兴趣的同学可以关注。


楼+「Linux运维与Devops实战 」有 120 余实验+50 余挑战+190 余实验视频+挑战解析视频的课程内容,涵盖了「 Linux基础、Shell编程、应用服务运维、数据库运维、日志与监控、Python自动化运维、Docker自动化运维、Jenkins持续集成、云计算运维、网络与安全 」等技能。硬扛 11 周,认认真真完成所有内容的学习,轻松胜任月薪「 8—15K 」初级运维工程师。更多课程信息与优惠,请添加助教小姐姐微信(sylmm002)咨询。

2884930ac64518c9e99051e3e4190152.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值