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

python——nagios监控nginx日志 request_time

[复制链接]

尚未签到

发表于 2019-1-12 15:02:22 | 显示全部楼层 |阅读模式
  遇到问题:nginx日志包含非常重要的信息。比如upstream_response_time 和request_time。现需求监控改值。
  解决问题:编写python脚本,通过nagios check_nrpe 插件完成监控。
  

  前提了解: nginx日志格式:
log_format  main  '$remote_addr |$time_local| $request | $status | $body_byte
s_sent | $http_referer | $http_user_agent | $upstream_response_time | $request_t
ime | $upstream_addr';
  

  日志范例:
10.113.205.117 |13/Sep/2016:21:24:07 +0800| POST /test/test HTTP/1.0 | 200 | 223 | - | Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727) | 0.034 | 0.042 | 10.156.168.193:8001


通过观察nginx日志范例,于是有了监控脚本的思路。 监控日志的最后输出一行,将倒数第二列和倒数第三列拎出来做值的比较大小。值大于10s,则表示该站点响应较慢,应及时报警。 nagios会对脚本执行返回的状态码有一个反馈。返回0,nagios 显示ok;返回2,nagios显示critial,并触发报警。
  

  nagios客户端操作:
  nagios客户端添加脚本,python脚本如下:
  

#!/usr/bin/python
# -*- coding:UTF-8 -*-


import subprocess
import os
import sys


api = ("tail -n 1 /mnt/log/nginx/test.test.cn.log")


def testtime():
    child= subprocess.Popen(api,shell=True,stdout=subprocess.PIPE)
    line = child.stdout.readline()
    upstream_response_time = float(line.split("|")[-3].strip())
    request_time = float(line.split("|")[-2].strip())
    line = line.replace('|','')



    if upstream_response_time < 10 or request_time < 10 :
        print "OK - api.test.cn request time ok"
        sys.exit(0)
    else:
        print "CRITIAL- api.test.cn %s %s " % (upstream_response_time ,request_time),"Link is: ",line,
        sys.exit(2)


if __name__ == '__main__':
    testtime()
  

  将该脚本添加到 插件目录下,并给执行权限。
[root@nginx101 mcSitesConf]# ll /usr/local/nagios/libexec/check_requestime_test.py
-rwxr-xr-x 1 root root 716 Sep 13 14:03 /usr/local/nagios/libexec/check_requestime_test.py
[root@nginx101 mcSitesConf]#
  

  nrpe 配置文件添加监控命令:
command[check_requestime_test]=/usr/local/nagios/libexec/check_requestime_test.py
  

  添加完成,重启客户端的nrpe
  ps aux | grep nrpe
  杀死进程id
  启动如下:
/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d
  

  至此,nagios客户端添加完成。可在服务端验证是否成功

  

  nagios服务端操作:
[root@monitor101 ~]# /usr/lib64/nagios/plugins/check_nrpe -H 10.134.6.129 -c check_requestime_test
OK - api.test.cn request time ok
  

  验证成功,开始添加监控服务文件
/etc/nagios/conf.d/services/nginx101.cfg 添加以下内容
define service{
        hostgroup_name          nginx.linux
        service_description     check_requestime_test status
        use                     system-level-service
        check_command           check_nrpe!check_requestime_test
        }
  

  检查nagios配置文件是否正确,并重启nagios
service nagios checkconfig
service nagios reload
  


  

  注:以上涉及到某些自认为私密的链接和ip稍作修改,代码和监控方法正确,供参考。




运维网声明 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.yunweiku.com/thread-662471-1-1.html 上篇帖子: nagios自动安装脚本 下篇帖子: nagios 配置和使用
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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