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

[经验分享] 一次有关nginx_status的测试,与check_nginx 插件的修改

[复制链接]

尚未签到

发表于 2018-11-8 07:15:09 | 显示全部楼层 |阅读模式
  最近版本发布比较多,nginx的vhost变动也很频繁,上周增加了几个vhost。结果昨天负责监控同事过来跟我说 cacti 的Nginx Clients Stat 模板没有数据了,
  nagios的check_nginx 也一直报警。我的第一反应是nginx是不是出问题了,可是最近网站一直都很正常啊,于是到cacti页面上看了一眼,所有web服务器除了Nginx Clients Stat以外的所有服务数据都很正常,可以排除snmp的问题了。通过网页访问了一下 http://www.xman.com/nginx_status(域名纯属虚构),发现可以正常访问,这是怎么回事呢?
  问题是上周最后一次更新后出现的,那次更新在所有vhost的最上面增加了一个vhost,会不会是这个vhost的问题呢?不过我通过其中一个vhost的域名访问 nginx_status 是正常的啊!
  抱着试试的心态查看了一下 这个新加的vhost配置文件,ufo.conf ,里面并没有设置 nginx_status 我忽然明白了,如果有多个vhost 的情况下,第一个vhost里面如果没有打开nginx_status
  则直接通过ip地址去访问网页的时候就会直接去访问第一个vhost,而新加入的vhost里面没有打开nginx_status ,结果就被404了。而cacti和nagios却恰恰是通过内网地址去访问nginx_status 的,
  结果就是我的同事说的那样,cacti不出图,nagios抓不到数据。而我刚开始检查的时候是通过vhost的域名来访问nginx_status 的,所以没有出现问题!
  为了证明我的想法我特意做了个实验,随意弄了4个vhost,前三个个不开nginx_status,最后一个打开nginx_status,通过域名来访问nginx_status,结果证明了我的猜测,后来我又
  进行了几个测试,纠正了我之前认识上的一个错误,我之前认为 如果哪个vhost打开了nginx_status ,我访问vhost域名的nginx_status时候就能得到这个域名的nginx连接状态,后来通过
  实验才知道原来不管你哪个vhost打开了nginx_status 访问他得到的值是整个nginx的状态,而不是某个vhost的连接状态。nginx wiki上面是这样描述nginx_status的
  This module provides the ability to get some status from nginx.
  This module is not compiled by default and must be specified using the
  --with-http_stub_status_module
  人家都说了是 get some status from nginx,而不是from nginx vhost,呵呵
  问题找到了,那就动手解决吧!其实很简单,在新加入的那个vhost里面把 nginx_status 打开就行了,问题很快就解决了。不过我又看了下nagios的check_nginx 脚本。原来check_nginx
  脚本是通过 wget 来得到nginx_status 状态的啊,里面是这样写的
  wget_opts="-O- -q -t 3 -T 3 --no-check-certificate"
  out1=`wget ${wget_opts} http://${hostname}:${port}/${status_page}`
  原来如此,不过遇到我碰上的那个问题这样肯定就不行了,于是做了下修改
  curl_opts="Host:www.ufo.com"
  out1=`curl -H${curl_opts} http://${hostname}:${port}/${status_page} -s`
  给curl的请求加一个头,这样就可以在访问ip地址的时候直接去请求打开nginx_status 的vhost了 (这里我非常感谢我的朋友hunter无私的帮助,在此对他表示真心的敬意)
  好了,问题解决了 实验也做到这里,希望这篇文章能对大家有所帮助 ^_^


运维网声明 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-632095-1-1.html 上篇帖子: Nginx基础入门nginx通用模板 下篇帖子: nginx(五)nginx与php的安装配置
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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