设为首页 收藏本站
查看: 1750|回复: 0

[经验分享] 通过zabbix 3.2监控nginx活动状态

[复制链接]

尚未签到

发表于 2018-11-9 08:21:02 | 显示全部楼层 |阅读模式
  第一:安装nginx
  1.通过yum源安装(也可以通过编译安装,这里介绍yum源安装)
rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm  
yum install nginx
  默认安装目录为/etc/nginx,可以通过rpm -qc nginx 或 rpm -ql nginx 查看。
  第二:查看、启用、验证nginx状态
  1.查看nginx状态模块是否安装
  命令:/sbin/nginx -V
  查看结果中是否包括:--with-http_stub_status_module 这个内容,包括就说明状态模块已安装;
  2.启用状态模块
  命令:vim /etc/nginx/nginx.conf
  找到server{}内容,在该内容最后添加如下内容
  location = /nginx-status {
  stub_status on;
  access_log off;
  allow 127.0.0.1;
  allow zabbix-server-ip;
  deny all;
  }
  说明:(1)/nginx-status为虚拟路径,在进行http访问查看nginx状态时,需要输入的路径;
  (2)allow和deny用于安全访问目的,可以根据自己的安全需求进行自定义;
  3.验证nginx状态是否可以访问(验证前重启下nginx)
  命令:curl http://ip:port/nginx-status  #这是linux下的访问命令#
  http://ip:port/nginx-status #这是windows下的访问URL#
  可以正常显示结果,则表示以上配置正确;否则,检查配置;
  第三:编写脚步,增加配置文件,重启zabbix
  1.编辑脚步
  脚步保存路径(这里是我的,您的可以自定义):/etc/zabbix/zabbix_agentd.d/scripts/
  脚步内容如下:
  #!/bin/bash
  #script to fetch nginx statuses for tribily monitoring systems
  # Author: 54808898@qq.com
  # License: none
  # Set Variables
  #BKUP_DATE='/bin/date +%Y%m%d`\'
  #LOG="/var/log/zabbix/webstatus.log"
  HOST=127.0.0.1
  PORT="81"
  # Functions to return nginx stats
  function active {
  /usr/bin/curl "http://$HOST:$PORT/nginx-status" 2>/dev/null| grep 'Active' | awk '{print $NF}'
  }
  function reading {
  /usr/bin/curl "http://$HOST:$PORT/nginx-status" 2>/dev/null| grep 'Reading' | awk '{print $2}'
  }
  function writing {
  /usr/bin/curl "http://$HOST:$PORT/nginx-status" 2>/dev/null| grep 'Writing' | awk '{print $4}'
  }
  function waiting {
  /usr/bin/curl "http://$HOST:$PORT/nginx-status" 2>/dev/null| grep 'Waiting' | awk '{print $6}'
  }
  function accepts {
  /usr/bin/curl "http://$HOST:$PORT/nginx-status" 2>/dev/null| awk NR==3 | awk '{print $1}'
  }
  function handled {
  /usr/bin/curl "http://$HOST:$PORT/nginx-status" 2>/dev/null| awk NR==3 | awk '{print $2}'
  }
  function requests {
  /usr/bin/curl "http://$HOST:$PORT/nginx-status" 2>/dev/null| awk NR==3 | awk '{print $3}'
  }
  # Run the requested function
  $1
  保存后,给该脚步添加可执行权限:chmod a+x 脚步名称
  2.增加配置文件
  配置文件增加位置(这里我增加的位置,您的可以自定义,但是一定要让zabbix_agentd.conf包含该文件):/etc/zabbix/zabbix_agentd.d/
  内容如下:
  UserParameter=nginx.accepts,/etc/zabbix/zabbix_agentd.d/scripts/nginx_monitor.sh accepts
  UserParameter=nginx.handled,/etc/zabbix/zabbix_agentd.d/scripts/nginx_monitor.sh handled
  UserParameter=nginx.requests,/etc/zabbix/zabbix_agentd.d/scripts/nginx_monitor.sh requests
  UserParameter=nginx.active,/etc/zabbix/zabbix_agentd.d/scripts/nginx_monitor.sh active
  UserParameter=nginx.reading,/etc/zabbix/zabbix_agentd.d/scripts/nginx_monitor.sh reading
  UserParameter=nginx.writing,/etc/zabbix/zabbix_agentd.d/scripts/nginx_monitor.sh writing
  UserParameter=nginx.waiting,/etc/zabbix/zabbix_agentd.d/scripts/nginx_monitor.sh waiting
  上述中包含方法,编辑/etc/zabbix/zabbix_agentd.conf,默认情况下,会有该语句:Include=/etc/zabbix/zabbix_agentd.d/*.conf,您可以根据自己的配置文件所在的目录修改此语句或增加新的语句。
  3.重启zabbix agent
  由于我采用的是yum源安装,重启方法很简单:systemctl restart zabbix-agent
  第四:验证zabbix get可以获取nginx状态数据
  1.安装zabbix get
  安装命令:rpm -ivh http://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-get-3.2.1-1.el7.x86_64.rpm
  2.测试方法:
  命令:zabbix_get -s nginx服务ip -p 10050 -k "nginx.connections.active"
  说明:如果不通,请检查防火墙是否开放了10050端口
  第五:配置zabbix模版
  1. Configuration -> Templates -> Create template
  Template name : Template App Nginx Service
  Groups In groups : Templates
  Add
  2. 创建应用分组
  ## 现在又回到了模板页,跟我一起点 Template App Nginx Service 模板后面的 Applications -> Create application
  Name : Nginx status
  Add
  3. 创建监控项
  ## 现在的位置是 Template App Nginx Service 模板中的 Applications 页面,跟我一起点击刚创建的 Nginx status 后面的 Items -> Create item
  Name : nginx active     ## 监控项名称
  Type : Zabbix agent    ## 监控类型,默认被动模式
  Key : nginx.active       ## 由于是自定义 Key ,所以要自己写上去。如果使用自带的 Key ,点击 Select 选择就可以了
  Type of information : Numeric( unsiqned )     ## 数据在进行类型转化之后存入数据库
  Numeric( unsiqned ) : 64 位无符号整数
  Numeric( float ) : 浮点数类型
  Character :  字符串类型数据,限制为 255B
  Log : 日志文件,必须使用的 Key 为 log[]
  Text : 文本,不限制大小
  Data type : Decimal     ## 数据类型用于存储 Items 中 Key 所获取的数值值,存储在不同的表中,如:history 、history_str 等表
  Boolean : 在数据存储时将原本的值替换为 0 或 1,TRUE 存储为 1 ,FALSE 存储为 0 ,所有的值都区分大小写( 任何非零都为 TRUE ,0 为 FALSE )
  Octal : 八进制数的数值格式
  Decimal : 十进制数的数值格式
  Hexadecimal : 十六进制数的数值格式
  ## Zabbix 自动执行数据类型的格式转换
  Units : 留空                                ## 单位符号,Zabbix 会自动处理接收到的数据,并且把数据转换为需要显示的格式
  Use custom multiplier : 不勾选     ## 如果开启,所接收到的数据会被乘以整数或浮点数。该选项用于单位换算,KB 、MBps 换为 B 、Bps 等
  Update interval( in sec ) : 30      ## 间隔多长时间通过 Items 收集数据,单位 秒
  Flexible intervals :                 ## 用于设置不同时间段收集数据的间隔不同,如果设置,则此时间段按这个间隔,其余的按上面参数的间隔
  New flexible interval Interval( in sec ) : 50 Period 1-7,00:00-24:00 Add :     ## 通过这里来添加一个新的时间段
  History storage period( in days ) : 90     ## 历史数据保留时间
  Trend storage period( in days ) : 365     ## 趋势数据保留时间
  Store value : As is     ## 数据存储时的类型
  As is : 无预处理
  Delta( speed per second ) : 显示每秒速率的值( 例如网卡流量 )
  Delta( simple change ) : 显示本次数值与上次数值的差值
  Show value : As is                  ## 无预处理( 数据显示时的类型,值映射:将接收到的值映射为一个状态,不改变原值,只改变显示结果,例如将 1 映射为 Nginx service states )
  New application : 留空             ## 创建一个新的应用分组
  Applications : Nginx status     ## 选择一个已有的应用分组
  Populates host inventory field : None     ## 将此 Item 分配给某个资产管理组
  Description : 留空                                ## 对 Item 的描述信息
  Enabled : 勾选                                    ## 开启此 Item
  Add
  #根据以上方法分别定义 active | accepts | handled | requests | reading | writing | waiting 监控项
  第六:将模版应用与被监控主机
  应用完成后,就可以查看nginx状态数据了



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-632604-1-1.html 上篇帖子: 用RHEL6.4(64bit)Nginx+Keepalived实现Nginx进程的主从、双主高可用 下篇帖子: keepalived+nginx+apache主备及双活搭建测试
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表