Zabbix监控Mysql、Apache、Nginx应用实战案例

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

一、zabbix监控mysql应用实战

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

1)zabbix agent端安装mysql

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

[[email protected] ~]# ls mysql*
mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz  mysql.sh
[[email protected] ~]# sh mysql.sh
Starting MySQL. SUCCESS!
mysql: [Warning] Using a password on the command line interface can be insecure.
//出现此信息表示安装成功!
[[email protected] ~]# mysql -u root -p123   //脚本对应的root密码为123
mysql> grant all on *.* to [email protected]‘192.168.1.%‘ identified by ‘zabbix‘;
//创建测试用户

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

[[email protected] ~]# mkdir /etc/zabbix/shell
[[email protected] ~]# 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文件中
[[email protected] ~]# vim /etc/my.cnf
[mysqladmin]
user=zabbix
password=zabbix
[[email protected] ~]# chmod +x /etc/zabbix/shell/check_mysql.sh
[[email protected] ~]# chown zabbix.zabbix /etc/zabbix/shell/check_mysql.sh
[[email protected] ~]# sh /etc/zabbix/shell/check_mysql.sh Uptime
5260
//agent端测试脚本能否使用

3)zabbix agent端修改配置

[[email protected] ~]# 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
[[email protected] ~]# systemctl restart zabbix-agent
[[email protected] ~]# zabbix_get -s 192.168.1.8 -p 10050 -k "mysql.status[Uptime]"
5372
//zabbix server端测试能否获取到数据

4)zabbix web界面引入模板

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





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

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

5)查看监控状态数据

如图:


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

配置mysql监控完成!

二、zabbix监控apache应用实战

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

1)zabbix agent开启apache状态页

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

[[email protected] ~]# yum -y install httpd
[[email protected] ~]# vim /etc/httpd/conf/httpd.conf
//末尾添加以下内容
EnableSendfile on
<location /server-status>
SetHandler server-status
Require ip 127.0.0.1 192.168.1.10
</location>
[[email protected] ~]# 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状态页面配置完成后,接下来就需要编写获取状态数据的脚本了,脚本代码较多,大家可通过以下方式下载!

[[email protected] ~]# wget https://www.ixdba.net/zabbix/zabbix-apache.zip
[[email protected] ~]# unzip zabbix-apache.zip
[[email protected] ~]# 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所需的模板;
[[email protected] ~]# mv zapache /etc/zabbix/shell/
[[email protected] ~]# chmod 755 /etc/zabbix/shell/zapache
[[email protected] ~]# chown zabbix.zabbix /etc/zabbix/shell/zapache
[[email protected] ~]# vim /etc/zabbix/zabbix_agentd.d/userparameter_zapache.conf
//编写apache的模板文件,用于调取apache的监控脚本
UserParameter=zapache[*],/etc/zabbix/shell/zapache $1
[[email protected] ~]# systemctl restart zabbix-agent
[[email protected] ~]# zabbix_get -s 192.168.1.8 -p 10050 -k "zapache[BusyWorkers]"
1
//zabbix server测试是否可以获取数据

3)zabbix web页面导入模板

如图:



4)查看apache状态数据

如图:


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

配置apache监控完成!

三、zabbix监控Nginx应用实战

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

1)zabbix agent开启Nginx状态页

[[email protected] ~]# yum -y install pcre-devel zlib-devel openssl-devel
[[email protected] ~]# wget http://nginx.org/download/nginx-1.14.2.tar.gz
[[email protected] ~]# tar zxf nginx-1.14.2.tar.gz -C /usr/src
[[email protected] ~]# cd /usr/src/nginx-1.14.2/
[[email protected] nginx-1.14.2]#  ./configure --with-http_stub_status_module && make && make install
[[email protected] ~]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
[[email protected] ~]# 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地址
        }
[[email protected] ~]# nginx -t
[[email protected] ~]# nginx
[[email protected] ~]# 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模板

[[email protected] ~]# wget https://www.ixdba.net/zabbix/zabbix-nginx.zip
[[email protected] ~]# unzip zabbix-nginx.zip
[[email protected] ~]# 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:所需的模板
[[email protected] ~]# mv nginx_status.sh /etc/zabbix/shell/
[[email protected] ~]# chmod o+x /etc/zabbix/shell/nginx_status.sh
[[email protected] ~]# chown zabbix.zabbix /etc/zabbix/shell/nginx_status.sh
[[email protected] ~]# vim /etc/zabbix/zabbix_agentd.d/userparameter_nginx.conf
//编写nginx的模板文件,用于调取nginx的监控脚本
UserParameter=nginx.status[*],/etc/zabbix/shell/nginx_status.sh $1
[[email protected] ~]# systemctl restart zabbix-agent
[[email protected] ~]# zabbix_get -s 192.168.1.8 -p 10050 -k "nginx.status[active]"
1
//zabbix server测试是否可以获取数据

3)zabbix web页面导入模板

如图:



4)查看nginx状态数据

如图:


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

配置nginx监控完成!

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

原文地址:https://blog.51cto.com/14157628/2468718

时间: 2024-10-10 13:56:31

Zabbix监控Mysql、Apache、Nginx应用实战案例的相关文章

zabbix监控mysql,nginx

刚开说mysql监控的时候 很容易遇到问题 而问题大部分出现在mysql的配置上面,看到我下面做的希望对你们有所帮助,哈哈 不聊了 好好学习 现在开始 1.创建mysql用户[[email protected] ]# groupadd mysql[[email protected] ]# mkdir -pv /data/mysql[[email protected] ]# useradd -r -g mysql -d /data/mysql/ -s /sbin/nologin mysql2.获取

部署zabbix监控mysql (一) 安装zabbix

部署zabbix监控mysql (1)安装LAMP环境 [[email protected] ~]# yum -y installmysql-server http php (2)安装zabbix web所需要的依赖包 [[email protected] ~]# yum -y installmysql-dev gcc net-snmp-devel curl-devel perl-DBI php-gd php-mysql php-bcmathphp-mbstring php-xml 安装Fpin

Zabbix监控mysql配置及故障告警配置

本文主要介绍zabbix监控mysql的配置,包含使用zabbix自带模板监控mysql相关信息及自定义key监控mysql同步情况.同时介绍了触发器的创建及zabbix通过邮件方式告警配置. 一.配置自带模板监控mysql 1.提供配置文件模板 文件位置在源码包/usr/local/src/zabbix-3.0.4/conf/zabbix_agentd/userparameter_mysql.conf #cp/usr/local/src/zabbix-3.0.4/conf/zabbix_age

zabbix监控mysql性能

今天来看看zabbix如何监控mysql性能,这边使用mysql自带的模板,可以监控如下内容:OPS(增删改查).mysql请求流量带宽,mysql响应流量带宽,最后会附上相应的监控图! 编写check_mysql.sh脚本 用于获取mysql性能指标数据,你需要修改相应的数据库信息 # vim /usr/local/zabbix-2.4.4/scripts/chk_mysql.sh #脚本如下: #!/bin/bash # -----------------------------------

zabbix 监控MySQL

文章:http://blog.sctux.com/?p=396 现在我来说一下我的监控环境 zabbix-3.0.3 MySQL-5.6.23 1.首先我们要登录MySQL,创建一个监控MySQL的用户 grant replication client on *.* to [email protected]'localhost'  IDENTIFIED BY 'lybackup'; 2.根据zabbix监控MySQL的key改写脚本 *******************************

使用zabbix监控mysql主从状态

公司mysql架构为一主多从.在日常使用过程中我们经常会遇到主从不同步的情况,为了及时处理此问题现使用zabbix监控mysql主从状态并设置触发器,如有异常则发送邮件报警. 我们都知道使用命令"show slave status \G"可以查看mysql从的状态,下面用脚本方式检查其状态. 在mysql-slave中进入zabbix-agent目录创建脚本文件. cat mysql_slave_status.sh #!/bin/bash /usr/local/mysql/bin/my

Zabbix 监控Mysql数据库及主从数据库

Zabbix监控mysql主从数据库在脚步出现用户名和密码是会出现如下报错"Warning: Using a password on the command line interface can be insecure",报错原因是mysql 5.6版本增加了密码安全策略,之前版本可以使用的命令行里加上密码就会强制报错,所以使用zabbix监控mysql的时候,就会由于收到zabbix客户端日志报错信息.结合了网友的解决方案,现将整理出来供大家参考. 一,zabbix被监控端的设置:

Zabbix 监控 Mysql 状态

简介: 如何使用 Zabbix 来监控 Mysql 状态 ? Zabbix 有自带监控 Mysql 的模板,但是却不能直接使用.. 需要我们根据模板提供的 Key 自己写脚本获取数据 1.查看都有哪些 Key > Configuration -> Templates ## 在此模板页中,可以看到 Template App MySQL 模板中有 14 个 Items ,我们需要自己写脚本获取这 14 个值 ## 分别是:Com_select.Com_insert .Com_update .Com

zabbix监控mysql+报警

zabbix监控mysql性能 在Zabbix的监控系统中通常是由Zabbix Server与Zabbix Agent一起配合实现监控,在Zabbix Agent内置了很多监控基础的监控项. 这些监控项都是CPU, 文件系统, 网络,磁盘等基础的监控项,对于自己开发服务的监控,Zabbix提供了良好框架为用户实现监控和报警,下面将以为MySQL添加监控为例,介绍如何添加自定义监控. 实验环境 1.NySQL 192.168.2.6 (agent) 2.Zabbix Server 172.30.1