1.介绍
使用 zabbix_sender 发送采集的 WEB 状态值,使用 pycurl 来采集 WEB 状态
zabbix_sender发送数据,需保证主机名与zabbix server记录的主机名一致
2.实现
Python 脚本如下:

#!/usr/bin/env python
#coding=utf-8
import os
import sys
import fileinput
import pycurl
import logging
hostname = "\"Zabbix server\""
zabbix_server = "127.0.0.1"
zabbix_sender = "/usr/local/zabbix/bin/zabbix_sender"
list = ['www.ksgame.com','cdn.ksgame.com']
key = ['HTTP_ResSize','HTTP_ResTime','HTTP_ResCode','HTTP_ResSpeed']
log_file = "/tmp/HTTP_Response.log"
logging.basicConfig(filename=log_file,level=logging.INFO,filemode='w')
run_cmd="%s -z %s -i %s > /tmp/HTTP_Response.temp" % (zabbix_sender,zabbix_server,log_file)
print run_cmd class Test():
def __init__(self):
self.contents = ''
def body_callback(self,buf):
self.contents = self.contents + buf def Check_Http(URL):
t = Test()
#gzip_test = file("gzip_test.txt", 'w')
c = pycurl.Curl()
c.setopt(pycurl.WRITEFUNCTION,t.body_callback)
#请求采用Gzip传输
#c.setopt(pycurl.ENCODING, 'gzip')
try:
c.setopt(pycurl.CONNECTTIMEOUT, 60) #链接超时
c.setopt(pycurl.URL,URL)
c.perform() #执行上述访问网址的操作
except pycurl.error:
print "URL %s" % URL Http_Document_size = c.getinfo(c.SIZE_DOWNLOAD)
# Http_Download_speed = round((c.getinfo(pycurl.SPEED_DOWNLOAD) /1024),2)
Http_Download_speed = round((c.getinfo(pycurl.SPEED_DOWNLOAD) ),2)
Http_Total_time = round((c.getinfo(pycurl.TOTAL_TIME) * 1000),2)
Http_Response_code = c.getinfo(pycurl.HTTP_CODE)
logging.info(hostname +' ' +key[0] + '[' + k + ']' + ' '+str(Http_Document_size))
logging.info(hostname +' ' +key[1] + '[' + k + ']' + ' '+str(Http_Total_time))
logging.info(hostname +' ' +key[2] + '[' + k + ']' + ' '+str(Http_Response_code))
logging.info(hostname +' ' +key[3] + '[' + k + ']' + ' '+str(Http_Download_speed)) def runCmd(command):
for u in list:
URL = u
global k
if u.startswith('https:'):
k = u.split('/')[2]
else:
k=u.split('/')[0]
Check_Http(URL) for line in fileinput.input(log_file,inplace=1):
print line.replace('INFO:root:',''),
return os.system(command)
runCmd(run_cmd)

Check_HTTP_Response.py

如果需要监控多个网站,修改 list 里的网站地址 添加计划任务, 每 5 分钟采集一次
监控key:
响应时间:HTTP_ResTime[www.test.com]
状态码:HTTP_ResCode[www.test.com]
文档大小:HTTP_ResSize[www.test.com]
下载速度:HTTP_ResSpeed[www.test.com]
测试能否使用zabbix_sender正常工作:./zabbix_sender -s "Zabbix server" -z 127.0.0.1 -k HTTP_ResCode[www.test.com] -o 200
zabbix server 添加监控模板、监控项、触发器

若域名较多,且存在无法访问的情况,请注意修改脚本中的超时时间,避免长时间无法结束进程

## 测试zabbix_sender
[zabbix_sender](https://www.zabbix.com/documentation/3.0/manpages/zabbix_sender)
> 模版中的监控项的监控类型需改为 "Zabbix 采集器"
配置 -> 模板 -> Template OS Linux -> 监控项 -> "Checksum of /etc/passwd" -> 类型 -> 选择"Zabbix 采集器"
```
# 测试修改密码后是否有告警
# -s, 测试告警机器的主机名
# -z, --zabbix-server server (Hostname or IP address of Zabbix server.)
./zabbix_sender -s "Zabbix server" -z 127.0.0.1 -k "vfs.file.cksum[/etc/passwd]" -o 1198677232
```
测试完成后还原监控类型

zabbix 监控 WEB 应用性能的更多相关文章

  1. zabbix 监控web网站性能

    一直在纠结用什么实例来给大家演示呢?想来想去还是官方的好,那我们怎么用zabbix监控web性能和可用性呢?我们这边分为几个步骤:打开网站.登陆.登陆验证.退出,一共4个小step,看实例. 检测流程 ...

  2. zabbix监控WEB网站性能

    一直在纠结用什么实例来给大家演示呢?想来想去还是官方的好,那我们怎么用zabbix监控web性能和可用性呢?我们这边分为几个步骤:打开网站.登陆.登陆验证.退出,一共4个小step,看实例. 检测流程 ...

  3. 自学Zabbix4.1 zabbix监控web服务器访问性能

    自学Zabbix4.1 zabbix监控web服务器访问性能 使用Zabbix实现对web性能的监控,通过它可以了解web站点的可用性以及性能.最终将各项指标绘制到图形中,这样我们可以了解到一个站点的 ...

  4. 自学Zabbix4.3 zabbix实战监控Web网站性能

    自学Zabbix4.3 zabbix实战监控Web网站性能 用zabbix如何监控web性能和可用性呢?一般分为四个步骤:打开网站.登陆.登陆验证.退出,看实例. 1. 检测流程 1. 打开网站:如果 ...

  5. (40)zabbix监控web服务器访问性能

    zabbix web监控介绍 在host列可以看到web(0),在以前的版本这项是独立出来的,这个主要实现zabbix对web性能的监控,通过它可以了解web站点的可用性以及性能. 最终将各项指标绘制 ...

  6. zabbix如何监控WEB应用性能

    HTTP服务目前最流行的互联网应用之一,如何监控服务的健康状态对系统运维来说至关重要.   Zabbix本身提供了对WEB应用程序的监控,比如监控WEB程序的Download Speed,Respon ...

  7. Zabbix监控web,MySQL,TCP状态,Nginx

    接上篇Zabbix使用SMTP发送邮件报警并且制定报警内容 Zabbix怎么设置声音告警 web监控 在zabbix server选择web 创建一个监控web的场景 添加后这里有数字1 查看 假如在 ...

  8. zabbix监控nginx的性能

    1.nginx配置 需要使用zabbix监控nginx,首先nginx需要配置ngx_status,在nginx的配置文件中加入红框中的配置,然后重启nginx如下图所示: location /ngx ...

  9. (41)zabbix监控api接口性能及可用性 天气预报api为例

    现在各种应用都走api,例如淘宝,天气预报等手机.pad客户端都是走api的,那么平时也得对这些api做监控了.怎么做呢?zabbix的web监控是不二选择了.今天就以天气预报api作为一个例子. 天 ...

随机推荐

  1. PEP 8 python编程规范

    一 代码编排 缩进.4个空格的缩进(编辑器都可以完成此功能),不使用Tap,更不能混合使用Tap和空格. 每行最大长度79,换行可以使用反斜杠,最好使用圆括号.换行点要在操作符的后边敲回车. 类和to ...

  2. RabbitMQ 安装与使用

    RabbitMQ 安装与使用   前言 吃多了拉就是队列,吃饱了吐就是栈 使用场景 对操作的实时性要求不高,而需要执行的任务极为耗时:(发送短信,邮件提醒,更新文章阅读计数,记录用户操作日志) 存在异 ...

  3. Docker bridge br0 pipework

    Docker Centos7 下建立 Docker 桥接网络 - weifengCorp - 博客园https://www.cnblogs.com/weifeng1463/p/7468497.html ...

  4. WIN10 devtoolsuser

    visual studio - UWP: What is the DevToolsUser Password? - Stack Overflowhttps://stackoverflow.com/qu ...

  5. 关于PHP批量图片格式转换的问题--本文转成webp, 其他过程格式一样

    最近要把项目中的图片全部生成webp格式, 过程整理一下,    (直接存在本地,或者图片链接存在数据库都可以看看) 首先,肯定是批量处理, 一个php处理不了这么多, 会爆内存的, 个人建议用aja ...

  6. Java 获取当前日期的四种方法

    //1 通过Date类来获取当前时间,通过SimpleDateFormat来设置时间格式 SimpleDateFormat dateFormat = new SimpleDateFormat(&quo ...

  7. vue-cli 上传图片上传到OSS(阿里云)

    https://help.aliyun.com/document_detail/32068.html?spm=5176.doc32069.6.304.Qc4SUs(看) https://help.al ...

  8. VUE.JS 使用axios数据请求时数据绑定时 报错 TypeError: Cannot set property 'xxxx' of undefined 的解决办法

    正常情况下在data里面都有做了定义 在函数里面进行赋值 这时候你运行时会发现,数据可以请求到,但是会报错 TypeError: Cannot set property 'listgroup' of ...

  9. YAML配置:mapping values are not allowed here

    在配置Eureka服务器配置文件的时候,出现了mapping values not allowed here的错误,原因是的冒号 ”:“后面没有空格. 原因分析:yml文件中,键值对是以": ...

  10. linux上如何让other用户访问没有other权限的目录

    目前遇到一个问题,一个other用户要访问一个目录,他需要在这个目录下创建文件,因此这个目录需要一个写权限,于是就给了这个目录777的权限,这样这个权限有点太大了,很容易出现安全问题,那我们应该怎么办 ...