Zabbix 监控Nginx服务状态

0.整体思路

使用zabbix监控nginx服务器的状态,使用nginx的status模块提供监控信息,使用shell脚本抓取nginx的状态信息,配置zabbix的钩子(key)

如下面所示,zabbix并不喜欢这么繁杂的信息,它只需要一个数字就可以完成监控。比如我要获取nginx服务的连接数,我们可以使用 curl localhost | awk '/Active/{print $NF}'

Active connections: 2 
server accepts handled requests
 2218 2218 1857 
Reading: 0 Writing: 1 Waiting: 1 

1.准备环境,部署nginx软件(在被监控的nginx服务器上操作)

 

1)安装nginx软件,开启status模块

  1. [root@zabbixclient_web1 nginx-1.12.2]# ./configure \
  2. > --with-http_stub_status_module
  3. [root@zabbixclient_web1 nginx-1.12.2]# make && make install
  4. [root@zabbixclient_web1 ~]# cat /usr/local/nginx/conf/nginx.conf
  5. … …
  6. location /status {
  7. stub_status on;
  8. }
  9. … …
  10. [root@zabbixclient_web1 ~]# curl localhost/status
  11. Active connections: 1
  12. server accepts handled requests
  13. 10 10 3
  14. Reading: 0 Writing: 1 Waiting: 0

2)自定义监控key

语法格式(带参数的监控key):

UserParameter=key,command

UserParameter=key[*],<command>

key里的所有参数,都会传递给后面命令的位置变量

如:

UserParameter=echo[*],echo $1

zabbix_get -s 127.0.0.1 -k 'echo[1]', 返回的结果都是1

也就是说,echo[*]只是一个接受参数的容器,而真正执行的操作是,echo $1.

注意:被监控端修改配置文件,注意要允许自定义key并设置Include!

创建自定义key

  1. [root@zabbixclient_web1 ~]# vim /usr/local/etc/zabbix_agentd.conf.d/nginx.status
  2. UserParameter=nginx.status[*],/usr/local/bin/nginx_status.sh $1
  3. [root@zabbixclient_web1 ~]# killall zabbix_agentd
  4. [root@zabbixclient_web1 ~]# zabbix_agentd

UserParameter=nginx.status[*],/usr/local/bin/nginx_status.sh $1

这句话的含义是设置一个接受容器nginx.status[*],执行带参数的脚本/usr/local/bin/nginx_status.sh $1

自定义监控脚本,我们在脚本中设置了获取三种数据的方式,获取连接数(Active connections),等待连接数(accepts ),接受请求数(accepts )

Active connections: 2

server accepts handled requests

2218     2218  1857

Reading: 0 Writing: 1 Waiting: 1

  1. [root@zabbixclient_web1 ~]# vim /usr/local/bin/nginx_status.sh
  2. #!/bin/bash
  3. case $1 in
  4. active)
  5. curl -s http://192.168.2.100/status |awk '/Active/{print $NF}';;
  6. waiting)
  7. curl -s http://192.168.2.100/status |awk '/Waiting/{print $NF}';;
  8. accepts)
  9. curl -s http://192.168.2.100/status |awk 'NR==3{print $2}';;
  10. esac
  11. [root@zabbixclient_web1 ~]# chmod +x /usr/local/bin/nginx_status.sh

测试效果:

  1. [root@zabbixclient_web1 ~]# zabbix_get -s 127.0.0.1 -k 'nginx.status[accepts]'
  2. 2218 

 

2.Zabbix配置监控项(在监控服务器上的web界面配置)

登陆Zabbix监控Web,创建监控项目item,点击Configuration(配置)-->Hosts(主机),点击主机后面的items(项目),点击Create item(创建项目)。

确认2个地方,一个是设置哪台主机(配置了key,也就是需要被监控的主机),一个是Item(需要创建一个Item监控项)

点击items

进去后点右上角创建监控项

配置三个监控项。为什么是三个?因为我们这里监控的就是三项(我们在脚本里写了三项数据的获取方式)

填写监控项名,方式和key,key一定要符合格式,也就是用zabbix_get -s 127.0.0.1 -k 'nginx.status[accepts]'能够测试出结果

点添加(需要创建三次)

查看最近数据图表,筛选图表,主机组,主机,监控项名,点击后面的Graph

本实验只是演示了一部分nginx的监控方式,但是看了此篇文章,应该能举一反三的提取出其他的nginx监控方法

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值