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

nagios和pycurl的超时时间

[复制链接]

尚未签到

发表于 2019-1-14 09:30:47 | 显示全部楼层 |阅读模式
线上使用自己开发的url monitor工具进行应用层面的监控,主要的原理使用nagios驱动pycurl做url的检测,url的检测属性(ip,port,url,httpcode等)是放在数据库里面的。
对于http code的监控,当获取的http code和期望的http code不一致时,产生报警邮件。
  最近发现在报警邮件中,有显示current http code是200,但是nagios的状态却是critical的情况。
  报警邮件:





  通过nagios的页面查看,确实看到了监控报错的情况:
  nagios页面:



  

  分析nagio的报判断的几种状态:

soft:监控项处于retry_check检测周期内的非正常状态
hard:监控项达到max_check_attempts最大次数后的非正常状态
常态:soft和hard之外的状态



线上关于这个service的配置:
                 check_interval         3           
                 retry_interval         1            
                 max_check_attempts     3   


即检测间隔为3分钟,检测间隔为1分钟,最大重试3次。当第一次失败后,进入soft1,间隔1分钟后继续检测,失败进入soft2,当第3次同样失败时,进入hard状态。
进入hard状态后,就会每间隔3分钟检测。(注:进入soft状态后, 按retry_interval的时间检测,不按check_interval的时间检测,直到恢复常态或hard )



从nagios的结果可以看出,是由于service check超时导致,nagios的service check和pycurl都是有超时设置的,产生这种问题的原因就是在nagios的超时时间内,pycurl没有正常返回值,导致nagios任务检测失败。但是pycurl的超时时间比较长,最终返回了正确的值update到了数据库,但是nagios确认为检测失败了。。


  在pycurl中控制超时的设置是CONNECTTIMEOUT(默认300s),TIMEOUT(永不超时)
  而nagios的模式设置service_check_timeout模式时60s.



解决方法:
对pycurl的超时参数做设置,小于nagios的超时时间即可。
  具体的pycurl的代码:
def check_server_url(proxy,url,location):
buf_header = cStringIO.StringIO()
c =  pycurl.Curl()
c.setopt(c.URL,url)
c.setopt(c.CONNECTTIMEOUT,20)
c.setopt(c.TIMEOUT,40)
if location == 0:
c.setopt(c.FOLLOWLOCATION,0)
else:
c.setopt(c.FOLLOWLOCATION,1)
c.setopt(c.PROXY,proxy)
c.setopt(c.HEADERFUNCTION,buf_header.write)
c.setopt(c.NOBODY,True)
try:
c.perform()
http_code = c.getinfo(c.HTTP_CODE)
print http_code
http_hearder = buf_header.getvalue()
except pycurl.error:
http_code = "-1"
c.close()
buf_header.close()
return http_code  

  其实最根本的rc还是业务响应慢导致(最终定位为db的响应慢)。





运维网声明 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-663034-1-1.html 上篇帖子: nagios部署安装下篇 下篇帖子: Icinga classic gui and Icinga web installation with pnp4nagios and nagvis integr
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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