zabbix监控mysql实战_Zabbix监控Mysql、Apache、Nginx应用实战案例

Zabbix对第三方应用软件的监控,主要有两个工作难点:一个是编写自定义监控脚本;另一个是在编写模板并导入zabbix web中,编写脚本这个要根据监控需求定制即可,而编写模板文件则相对来说有点难度,不过网上已经有很多已经写好的模板,可以直接拿来使用。所以,Zabbix对应用软件的监控其实并不难。

一、zabbix监控mysql应用实战

本次博文首先介绍的是Zabbix对Mysql的监控,这个是最简单的,因为Zabbix已经自带了Mysql监控的模板,我们只需编写一个监控Mysql的脚本即可!以下操作均在zabbix agent端实现,具体步骤如下:

1)zabbix agent端安装mysql

由于mysql安装太浪费时间,本人提供一键安装mysql脚本,如下:

[root@agent ~]# ls mysql*

mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz mysql.sh

[root@agent ~]# sh mysql.sh

Starting MySQL. SUCCESS!

mysql: [Warning] Using a password on the command line interface can be insecure.

//出现此信息表示安装成功!

[root@agent ~]# mysql -u root -p123 //脚本对应的root密码为123

mysql> grant all on *.* to zabbix@'192.168.1.%' identified by 'zabbix';

//创建测试用户

2)zabbix agent端编写自定义监控mysql脚本

[root@agent ~]# mkdir /etc/zabbix/shell

[root@agent ~]# vim /etc/zabbix/shell/check_mysql.sh

#!/bin/bash

MYSQL_HOST='192.168.1.8' #指定mysql主机的IP地址

MYSQL_PORT='3306' #指定mysql主机的监听地址

MYSQL_CONN="/usr/local/bin/mysqladmin -h${MYSQL_HOST} -P${MYSQL_PORT}" #指定连接使用的工具

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

由于将用户名、密码信息写到脚本中不安全,所以将用户名、密码信息写到/etc/my.cnf文件中

[root@agent ~]# vim /etc/my.cnf

[mysqladmin]

user=zabbix

password=zabbix

[root@agent ~]# chmod +x /etc/zabbix/shell/check_mysql.sh

[root@agent ~]# chown zabbix.zabbix /etc/zabbix/shell/check_mysql.sh

[root@agent ~]# sh /etc/zabbix/shell/check_mysql.sh Uptime

5260

//agent端测试脚本能否使用

3)zabbix agent端修改配置

[root@agent ~]# vim /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf

//将原本的UserParameter全部注释,添加以下内容

UserParameter=mysql.status[*],/etc/zabbix/shell/check_mysql.sh $1

UserParameter=mysql.ping,HOME=/etc /usr/local/bin/mysqladmin ping | grep -c alive

UserParameter=mysql.version,/usr/local/bin/mysql -V

[root@agent ~]# systemctl restart zabbix-agent

[root@zabbix ~]# zabbix_get -s 192.168.1.8 -p 10050 -k "mysql.status[Uptime]"

5372

//zabbix server端测试能否获取到数据

4)zabbix web界面引入模板

zabbix自带了mysql监控的模板,因此只需将模板链接到对应的主机即可!如下:

5b67b5c14234e23e65550a7c78d0dff8.png

1f7427d5e059bd43fef0ec4b927b303f.png

3243accca48c34cc5ad1a01eef2045cf.png

195354f7f8d2ed0d9de8ad935e5ca8d2.png

9f4a00ce54495a96718c1bd74f1363a3.png

这里重点需要关注的是每个监控项名称对应的”键值“一列的配置,这里的键值,必须和agent端自定义的监控键值保持一致。另外,可以看到”mysql status“这个监控项有一个触发器,用于检查mysql的运行状态。最后,还需关注这些监控项的监控类型是”zabbix客户端“,所有监控项都存放在”MYSQL“应用集中。

以上设置完成,监控mysql的主机已经添加完成!

5)查看监控状态数据

如图:

96887254507c689c7159642314c700fc.png

f6fbff795f07f466f203752b5c9c43b3.png

从图中可以看出已经获取到数据!

配置mysql监控完成!

二、zabbix监控apache应用实战

zabbix对apache的监控,稍微复杂一些,但基本流程还是两个步骤:第一个是编写监控apache的监控脚本;第二个是创建apache监控模板。以下操作均在zabbix agent端实现,具体步骤如下:

1)zabbix agent开启apache状态页

要想监控apache的运行状态,需要在apache的配置中开启一个apache状态页面,然后再通过编写脚本获取这个状态页面的数据即可达到监控apache的目的!

[root@agent ~]# yum -y install httpd

[root@agent ~]# vim /etc/httpd/conf/httpd.conf

//末尾添加以下内容

EnableSendfile on

SetHandler server-status

Require ip 127.0.0.1 192.168.1.10

[root@agent ~]# systemctl start httpd

配置项中解释如下:

1)EnableSendfile on:表示开启扩展的status信息,但是开启后会降低服务器运行效率;

2) /server-status:则表示通过”http://ip/server-status“ 来访问,同时也可以通过”http://ip/server-status?refresh=N“ 的方式进行动态访问,N则表示N秒自动刷新一次;

3)Require ip 127.0.0.1 192.168.1.10:这是apache 2.4版本增加的一个新特效。即表示需要访问的IP地址;

Require常用的用法如下:

1)Require all granted:允许所有主机访问;

2)Require all denied:拒绝所有主机访问;

3)Require ip IP地址:允许某个IP访问;

4)Require not ip IP地址:禁止某个IP访问;

5)Require host 主机名:允许某个主机访问;

6)Require not host 主机名:禁止某个主机访问;

修改完成后重启apache服务生效!

2)zabbix agent获取apache的状态检测脚本和zabbix模板

apache状态页面配置完成后,接下来就需要编写获取状态数据的脚本了,脚本代码较多,大家可通过以下方式下载!

[root@agent ~]# wget https://www.ixdba.net/zabbix/zabbix-apache.zip

[root@agent ~]# unzip zabbix-apache.zip

[root@agent ~]# ll zapache*

-rw-r--r-- 1 root root 5792 1月 31 23:00 zapache

-rw-r--r-- 1 root root 52024 4月 22 2016 zapache-template.xml

//zapache:是监控apache所需的脚本;

//zapache-template.xml:是监控apache所需的模板;

[root@agent ~]# mv zapache /etc/zabbix/shell/

[root@agent ~]# chmod 755 /etc/zabbix/shell/zapache

[root@agent ~]# chown zabbix.zabbix /etc/zabbix/shell/zapache

[root@agent ~]# vim /etc/zabbix/zabbix_agentd.d/userparameter_zapache.conf

//编写apache的模板文件,用于调取apache的监控脚本

UserParameter=zapache[*],/etc/zabbix/shell/zapache $1

[root@agent ~]# systemctl restart zabbix-agent

[root@zabbix ~]# zabbix_get -s 192.168.1.8 -p 10050 -k "zapache[BusyWorkers]"

1

//zabbix server测试是否可以获取数据

3)zabbix web页面导入模板

如图:

4be00d9f3ac4d39b6e2c297816d3adaf.png

9775ce2c2f146cb953cd27af65640b58.png

1d68e9b7a3d00b635b77c9ff2c277415.png

4e55ec08b78588f2c452fd9f34311142.png

4)查看apache状态数据

如图:

e999e25469f07c6a6b74b0d41ca5e571.png

8df2585682bf6a11ea161883512cf807.png

从图中可以看出已经获取到数据!

配置apache监控完成!

三、zabbix监控Nginx应用实战

zabbix对Nginx的监控,与监控apache的方式完全一样,基本流程还是两个步骤:第一个是编写Nginx的脚本;第二个是创建Nginx监控模板。以下操作均在zabbix agent端实现,具体步骤如下:

1)zabbix agent开启Nginx状态页

[root@agent ~]# yum -y install pcre-devel zlib-devel openssl-devel

[root@agent ~]# wget http://nginx.org/download/nginx-1.14.2.tar.gz

[root@agent ~]# tar zxf nginx-1.14.2.tar.gz -C /usr/src

[root@agent ~]# cd /usr/src/nginx-1.14.2/

[root@agent nginx-1.14.2]# ./configure --with-http_stub_status_module && make && make install

[root@agent ~]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/

[root@agent ~]# vim /usr/local/nginx/conf/nginx.conf

//添加loaction规则

location /nginx-status {

stub_status on; //开启状态监控模块

access_log off; //关闭访问日志

allow 127.0.0.1;

allow 192.168.1.10; //允许访问的IP地址

deny all; //拒绝所有的IP地址

}

[root@agent ~]# nginx -t

[root@agent ~]# nginx

[root@agent ~]# curl 127.0.0.1/nginx-status

Active connections: 1

server accepts handled requests

1 1 1

Reading: 0 Writing: 1 Waiting: 0

输出的信息说明:

1)Active connections:对后端发起的活动链接数;

2)accepts:nginx总共处理了多少个连接;

3)handled:nginx成功创建了几次握手;

4)requests:nginx总共处理了多少请求;

5)Reading:nginx读取客户端的header数;

6)Writing:nginx返回给客户端的header数;

7)Waiting:nginx请求处理完成,正在等待下一请求指令的连接;

2)zabbix agent获取apache的状态检测脚本和zabbix模板

[root@agent ~]# wget https://www.ixdba.net/zabbix/zabbix-nginx.zip

[root@agent ~]# unzip zabbix-nginx.zip

[root@agent ~]# ll nginx_status.sh zbx*

-rw-r--r-- 1 root root 1106 11月 1 2018 nginx_status.sh

-rw-r--r-- 1 root root 20703 11月 1 2018 zbx_nginx_templates.xml

//nginx_status.sh:所需的脚本

// zbx_nginx_templates.xml:所需的模板

[root@agent ~]# mv nginx_status.sh /etc/zabbix/shell/

[root@agent ~]# chmod o+x /etc/zabbix/shell/nginx_status.sh

[root@agent ~]# chown zabbix.zabbix /etc/zabbix/shell/nginx_status.sh

[root@agent ~]# vim /etc/zabbix/zabbix_agentd.d/userparameter_nginx.conf

//编写nginx的模板文件,用于调取nginx的监控脚本

UserParameter=nginx.status[*],/etc/zabbix/shell/nginx_status.sh $1

[root@agent ~]# systemctl restart zabbix-agent

[root@zabbix ~]# zabbix_get -s 192.168.1.8 -p 10050 -k "nginx.status[active]"

1

//zabbix server测试是否可以获取数据

3)zabbix web页面导入模板

如图:

3e6ee841a14aad0a33848daa23a9d5f3.png

1caf4d47a98e74ad3318ddfc7c5b5021.png

a793e2f42c199f8e410a593cfbc0225d.png

0aa3f372028013daa75dbb2f1703c83f.png

4)查看nginx状态数据

如图:

1fcc1ee3e15e2ace7b954945cbbcfb2a.png

1b724b1a92f7b43743fda7bda9fcbbb7.png

从图中可以看出已经获取到数据!

配置nginx监控完成!

————————————本次博文到此结束,感谢阅读——————————————

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值