Zabbix自定义python监控项脚本实现响应时间的监控(分主项依赖项)

参考文档
https://blog.csdn.net/voidfaceless/article/details/78219678 关于 sys.argv
https://www.jb51.net/article/96495.htm 关于命令行获取响应时间

整体思路: 通过python脚本获取五个数据,,脚本设置为监控主项,五个数据分别设置为五个监控依赖项

一、编写python脚本,上传至zabbix服务器指定目录并 chmod +x response_time.py赋予可执行权限

我这边是 /usr/lib/zabbix/externalscripts,

#!/usr/bin/python
#  -*- coding:utf-8 -*-

import os
import sys


def get_request_response():
    ip_addr = str(sys.argv[1])
    request_response = \
        os.popen('curl -o /dev/null -s -w %{time_namelookup}::%{time_connect}::%{time_starttransfer}::%{time_total}::%{speed_download} ' + ip_addr)\
            .read().split("::")

    data = {
        "time_namelookup": float(request_response[0]) * 1000,
        "time_connect": (float(request_response[1]) - float(request_response[0])) * 1000,
        "time_starttransfer": (float(request_response[2]) - float(request_response[1])) * 1000,
        "time_total": (float(request_response[3]) - float(request_response[2])) * 1000,
        "speed_download": float(request_response[4]) * 1000
    }
    print(str(data).replace("\'", "\""))


get_request_response()

注意:data是个字典,如果print(data),里面的双引号会变成单引号,而json要求里面的引号必须是双引号,,由于zabbix中会用到json相关操作,,这里将data转为字符串,并把所有单引号换成双引号,之后打印

二、zabbix中创建监控模板

模板名称,可见名称,选择群组,添加想要监控的主机(主机中需要添加对应该模板的宏) {$WEB_URL},,可以设置默认值模板在这里插入图片描述

定义一个宏,,用于脚本中接受参数,,这里接受一个IP地址或者域名,,对应脚本里面的sys.argv[1]
在这里插入图片描述
打开刚刚创建的模板,,点击监控项,,选择右上角创建监控项
在这里插入图片描述
进入创建监控项界面,,创建一个主项,,名为response_time, 类型是外部检查(因为是python脚本监控), 键值是 : 脚本名字(response_time.py)去掉后缀 + [定义的宏]
在这里插入图片描述

创建依赖项,,类型选择相关项目,,主要项就是刚才创建的主项,,点击选择刚才的主项
在这里插入图片描述
进程名称我选择json路径(解析刚才print的字典),参数格式参考 ,,例如
$.document.item.value -------- 将提取10自{“document”:{“item”:{“value”: 10}}}
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值