当前位置: 首页 > news >正文

zabbix 监控 WEB 应用性能

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 添加监控模板、监控项、触发器

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

转载于:https://www.cnblogs.com/Mrhuangrui/p/7428856.html

相关文章:

  • 工作英文
  • 什么是RESTFUL协议?
  • distinct
  • 基础学习问题
  • 动态sql语句基本语法(字段名,表名,数据库名之类作为变量时,必须用动态SQL如ALTER TABLE中使用程序传递的参数)...
  • 从几幅架构图中偷得半点海量数据处理经验
  • 17软工 第一次作业
  • [水一下]哈,露股沟
  • APUE 1 - Unix数据结构
  • stlport 编译方法
  • 自动在多个DB上执行同一条sql语句
  • this指向
  • ASCII码表
  • 扫雷游戏制作过程(C#描述):第三节、雷区绘制
  • 使用SQL中的ROW_NUMBER()和while循环对每一行执行操作
  • avalon2.2的VM生成过程
  • C学习-枚举(九)
  • Essential Studio for ASP.NET Web Forms 2017 v2,新增自定义树形网格工具栏
  • Linux后台研发超实用命令总结
  • PermissionScope Swift4 兼容问题
  • SpiderData 2019年2月23日 DApp数据排行榜
  • SpringCloud(第 039 篇)链接Mysql数据库,通过JpaRepository编写数据库访问
  • WePY 在小程序性能调优上做出的探究
  • 第13期 DApp 榜单 :来,吃我这波安利
  • 工作手记之html2canvas使用概述
  • 关于字符编码你应该知道的事情
  • 嵌入式文件系统
  • 时间复杂度与空间复杂度分析
  • 问:在指定的JSON数据中(最外层是数组)根据指定条件拿到匹配到的结果
  • 一天一个设计模式之JS实现——适配器模式
  • #绘制圆心_R语言——绘制一个诚意满满的圆 祝你2021圆圆满满
  • ( 用例图)定义了系统的功能需求,它是从系统的外部看系统功能,并不描述系统内部对功能的具体实现
  • (C语言)共用体union的用法举例
  • (附源码)springboot车辆管理系统 毕业设计 031034
  • (附源码)流浪动物保护平台的设计与实现 毕业设计 161154
  • (九)c52学习之旅-定时器
  • (数据结构)顺序表的定义
  • (四)JPA - JQPL 实现增删改查
  • (详细版)Vary: Scaling up the Vision Vocabulary for Large Vision-Language Models
  • (学习日记)2024.04.10:UCOSIII第三十八节:事件实验
  • (一一四)第九章编程练习
  • .bat批处理(七):PC端从手机内复制文件到本地
  • .NET Core 成都线下面基会拉开序幕
  • [ C++ ] STL priority_queue(优先级队列)使用及其底层模拟实现,容器适配器,deque(双端队列)原理了解
  • [ 蓝桥杯Web真题 ]-Markdown 文档解析
  • [20181219]script使用小技巧.txt
  • [Android 13]Input系列--获取触摸窗口
  • [C++]18:set和map的使用
  • [FUNC]判断窗口在哪一个屏幕上
  • [Godot] 3D拾取
  • [HDU] 1054 Strategic Game 入门树形DP
  • [iOS]随机生成UUID通用唯一识别码
  • [jquery]this触发自身click事件,当前控件向上滑出
  • [Linux](15)线程基础,线程控制,线程的互斥与同步
  • [Nginx]反向代理Node将3000端口访问转换成80端口