美文网首页大数据 爬虫Python AI Sql
如何通过Python/Shell对HTTP服务状态的监控?

如何通过Python/Shell对HTTP服务状态的监控?

作者: 山禾家的猫 | 来源:发表于2019-01-07 15:08 被阅读1次

需求

相信很多运维童鞋都有遇到过这样的需求,需要监控某个网站或者URL的状态码,如果返回的不是指定的状态码,那就触发告警。今天一起学习下,怎么通过Python和Shell来实现该需求,并怎么整合到Zabbix当中去。

小编推荐大家可以加我的扣扣群 653466668 ,免费领取Python 学习资料

Shell

我们首先来看Shell版本如何实现吧。

#!/bin/bash

# 定义位置变量

url=$1

# 定义检查函数

monitor_http(){

status_code=$(curl -m 5 -s -o /dev/null -w %{http_code} $url)

echo $status_code

}

# 调用http监测函数

monitor_http

通过Shell的实现方式呢,主要就是curl的使用,来看看这几个参数的说明:

-m 设置curl不管访问成功或失败,最大消耗的时间为5秒,5秒连接服务为相应则视为无法连接

-s 设置静默连接,不显示连接时的连接速度、时间消耗等信息

-o 将curl下载的页面内容导出到/dev/null(默认会在屏幕显示页面内容)

-w 设置curl命令需要显示的内容%{http_code},指定curl返回服务器的状态码

Python

Python的版本可能相对复杂了一点点,这里我们主要通过urllib2模块来实现:

#!/usr/bin/python

# -*- coding: utf-8 -*-

import urllib2

import sys

def monitor_http(url):

response = None

try:

response = urllib2.urlopen(url,timeout=5)

#print response.info() # header

print response.getcode()

except urllib2.URLError as e:

if hasattr(e, ‘code’):

print e.code

elif hasattr(e, ‘reason’):

print e.reason

finally:

if response:

response.close()

url = sys.argv[1]

monitor_http(url)

代码其实还是很简单的,urllib2这里不多说了哈,也可以使用pyCurl模块来实现。

如何整合到Zabbix

整合到Zabbix,就可以实现告警了。

首先在ZabbixAgent配置文件中配置一条UserParameter,如下:

UserParameter=monitor.http[*],/data/app/zabbix/bin/monitor_http.py $1

然后配置item:

注意Key的配置:

monitor.http[http://www.qq.com]

接下来配置一个Trigger:

这里我们定义http状态码不为200时发出告警,其实整个配置都不难,这里也可以当作是Zabbix自定义监控的一个应用案例。

相关文章

  • 如何通过Python/Shell对HTTP服务状态的监控?

    需求 相信很多运维童鞋都有遇到过这样的需求,需要监控某个网站或者URL的状态码,如果返回的不是指定的状态码,那就触...

  • Python监控服务器利器--psutil

    服务器的监控通过安装一些常用的监控软件之外,有时也需要运行一些shell或Python脚本;shell下可以使用系...

  • 【Python】通过python hp ilo对机器的状态进行监

    <通过python hp ilo对机器的状态进行监控> 标签: <无> [代码][通过python hp ilo对...

  • 本地tensorboard监控远程训练

    场景: 服务器在远程,只能通过shell访问,如何通过tensorboard监控远程训练 解决: 将远程的tens...

  • 服务监控

    服务监控 利用swoole 通过linux来实现服务监控 通过模拟shell命令并使用swoole方法达到2秒执行...

  • shell脚本实战案例

    shell案例 1)监测一个机器存活状态 2)监控一个端口存活状态 等价于监控系统服务 3)找出使用CPU|mem...

  • Shell脚本检测HTTP服务状态

    编程需求: 在项目有web服务器的时候,监控服务器的状态是非常重要的一项任务,虽然可以通过手动执行命令来进行检测,...

  • Fiddler每个工具指令的使用以及含义

    Fiddler的工作原理: 通过在客户端和服务器之间创建一个代理服务器来对之间交互的HTTP进行监控,默认的监控端...

  • 监控端口状态

    监控主机服务状态监控目的监控方法监控实现一、监控目的实时掌握线上机器服务状态,保证服务正常运行 二、监控方法采用t...

  • Zabbix监控redis

    1. Redis监控(shell脚本) 监控原理示意图:监控原理Zabbix-server通过agent监控...

网友评论

    本文标题:如何通过Python/Shell对HTTP服务状态的监控?

    本文链接:https://www.haomeiwen.com/subject/llyurqtx.html