通过Python/Shell对HTTP服务状态的监控
来源:互联网 发布:淘宝大c家是正品吗 编辑:程序博客网 时间:2024/06/10 05:33
如何通过Python/Shell对HTTP服务状态的监控?
需求
相信很多运维童鞋都有遇到过这样的需求,需要监控某个网站或者URL的状态码,如果返回的不是指定的状态码,那就触发告警。今天一起学习下,怎么通过Python和Shell来实现该需求,并怎么整合到Zabbix当中去。
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服务状态的监控
- 自动监控apache服务状态并重启的shell脚本
- LR 8.1对IBM HTTP SERVER服务的监控环境
- Python对Windows服务进行监控
- zabbix通过简单shell命令监控elasticsearch集群状态
- zabbix3.0.4通过自定义shell脚本添加对关键日志文件的监控
- python的http服务
- Shell监控服务器状态
- 监控Nginx服务的Shell脚本
- 开发监控Web 服务的Shell脚本
- Nginx服务状态监控
- zabbix监控http状态
- shell脚本对服务器的监控
- 用Python对MySQL同步状态进行监控
- 通过JMX实现对ActiveMQ的监控
- shell脚本监控tomcat服务运行状态,服务关闭后进行重启
- Python:通过摄像头实现的监控功能
- Python:通过摄像头实现的监控功能
- 不懂小数定律,是产生偏见的根本原因
- 前端基础(5):html语法(4): <br> <td><tr><label>标签
- Java--Apache,nginx,tomcat比较
- 页面的FormValidator表单验证
- lodop实现打印,支持分页打印
- 通过Python/Shell对HTTP服务状态的监控
- 在假期如何不被工作打扰?
- java学习笔记(10)-Java 异常处理
- Linux下如何查看版本信息
- 2017/11/7日学习到的东西
- 批量创建KVM虚拟机与批量推公钥的shell脚本
- 深入理解Java虚拟机笔记1
- 数据结构与算法分析(Java语言描述)(11)—— 二叉堆(Binary Heap)
- 正方形构造