首页 > 其他分享 >zabbix agent自定义监控项,监控交换机vlan流量

zabbix agent自定义监控项,监控交换机vlan流量

时间:2023-04-18 11:58:19浏览次数:62  
标签:自定义 text vlan agent zabbix client command 监控

脚本目的:

需要对华为ac中的ssid流量进行监控,但ac web页面中与snmp取值差异很大。
正好ac的用户流量配置了本地转发,用户vlan的网关在一台交换机上。交换机可以配置vlan statistic以统计vlan内的流量。
但vlan流量统计后,没有对应的snmp oid,考虑使用python脚本来进行取值。

在zabbix server中定义一个脚本,并增加可执行权限

#!/usr/bin/python3
import paramiko
import time

# Connect information:
ip = '172.16.*.*'
username = 'user'
password = 'Password'

# Create SSH client:
client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())

# Connect device:
client.connect(hostname=ip, username=username, password=password)
time.sleep(0.5)

# Execute command:
command=client.invoke_shell(width=300)
output = ''
for vlan in [1006,1800]:
    command.send('\n')
    command.send(f'dis vlan {vlan} statistics\n')
    time.sleep(2)
    command.send('q\n')
    
output=command.recv(65535).decode('utf-8')
# Shutdown ssh connection
client.close()
print(output)

使用agent调用:

修改 /etc/zabbix/zabbix_agentd.conf
# Default:
# Timeout=3 默认超时时间太短,需要延长为30秒:
Timeout=30
# 自定义脚本对应的键值,需要唯一。逗号之后是脚本的路径:
UserParameter=py.network.vlan.traffic,/data/zabbix_compose/externalscripts/hwSsidTraffic.py

# 测试脚本的运行,返回值是一个列表:
$ zabbix_agentd -t py.network.vlan.traffic
py.network.vlan.traffic                       [t|
Info: The max number of VTY users is 10, and the number
……omit

# 需要重启zabbix-agent以重新加载用户自定义参数,官方提供的zabbix_agentd -R命令执行不成功

在zabbix web中新建监控项

【直接在zabbix snmp设备中调用此键值不成功,测试在zabbix agent所在的服务器调用,是可以的】:
注意:在调用前,zabbix server的Timeout也需要增加。
image

对数据进行预处理:

# value返回的文本大概这样:
…omit…
 VLAN : 1006 
 ---------------------------------------------------------------------------------
 Item                                          Packets                       Bytes
                                                   pps                         bps
 ---------------------------------------------------------------------------------
 Inbound                                   234,949,790              92,944,972,527
                                                10,456                  29,035,080
 Outbound                                  359,318,367             297,770,911,350
                                                18,965                 173,139,000
…omit…

#在预处理中的javascript脚本:
// 删除所获取文本的前4行【登录提示等无用数据】:
text = value.split('\n').slice(4).join('\n');
// 替换所有的',':
text = text.replace(/,/g, "");
// 输出处理过的数值:
return text;

提取需要的数据

因为要监控的数值有多个,需要增加依赖项目【zabbix 6.4新增功能】来对数值分别处理【键值自定义】:
image

预处理用的javascript脚本,其它监控项的脚本中需要修改vlan id和Inbound/outbound来提取收发流量:

// 使用正则对获取到的值进行处理, 匹配VLAN 1006前的瞬时数值, 即Outbound之后的第4段数字(瞬时发送流量):
text = value.match(/VLAN : 1800[\s\S]*?Outbound\s+\d+\s+\d+[\s\S]*?\d+\s+(\d+)[\s\S]*?: 1800/)[1];
return text;

最后增加一个图形来进行展示:
image

参考:https://www.zabbix.com/documentation/6.0/zh/manual/config/items/userparameters/extending_agent

标签:自定义,text,vlan,agent,zabbix,client,command,监控
From: https://www.cnblogs.com/feifei6779/p/17329058.html

相关文章

  • js将后端返回的文件流导出,并自定义下载文件名(pdf导出)
    这里调接口时记得加上responseType:'blob'/***@description:下载文件*@param{string}data文件流*@param{string}filename文件名*@return{*}*/exportfunctiondownloadFile(data:string,filename:string){constblob=newBlob([data])const......
  • Three.js教程:自定义顶点UV坐标
    推荐:将NSDT场景编辑器加入你的3D工具链其他工具集:NSDT简石数字孪生自定义顶点UV坐标学习自定义顶点UV坐标之前,首先保证你对BufferGeometry的顶点数据、纹理贴图都有一定的理解。#顶点UV坐标的作用顶点UV坐标的作用是从纹理贴图上提取像素映射到网格模型Mesh的几何体表面上。浏览器......
  • 使用whoops作为tp6的自定义异常
    安装composerrequirefilp/whoops在app/ExceptionHandle.php中的renderpublicfunctionrender($request,Throwable$e):Response{//添加自定义异常处理机制if(ENV('APP_DEBUG')){//如果是HttpResponseException异常则原样输出//JUMP插......
  • 实时Oracle 监控和性能分析工具
    概述 MyOra是一种先进的Oracle数据库监控工具,具有最快的响应时间并提供对Oracle数据库的即时可见性。该工具简单、快速且易于使用,无需安装,无需Oracle客户端,也无需互联网连接。下载MyOra并实时监控数据库性能。也可将MyOra用作DBA工具或SQL查询工具。   ......
  • 自动化脚本:一键安装python自定义版本
     1:环境:centos7python2.72:脚本内容:#!/usr/bin/envpythonimportosimportsysimportrequestsimporttarfileimportshutilimportsubprocess#Installnecessarypackagestry:subprocess.check_call(["yum","install","-y&qu......
  • oracle open_cursor监控
    SELECTmax(a.value)ashighest_open_cur,p.valueasmax_open_curFROMv$sesstata,v$statnameb,v$parameterpWHEREa.statistic#=b.statistic#andb.name='openedcursorscurrent'andp.name='open_cursors'groupbyp.value;mos......
  • 自定义bpmn 属性面板
    点击查看代码<template><divclass="custom-properties-panelmy-card"><divv-if="selectedElements.length<=0"class="empty">请选择一个节点</div><divv-else-if="selectedElements.length>1&......
  • JMeter 逻辑控制器、定时器、分布式、报告、并发数计算方法、性能监控
    一、逻辑控制器可以按照设定的逻辑控制取样器的执行顺序1、IF控制器(没有else,如果有其他分支,则一直加IF控制器即可)控制它下面的测试元素是否运行位置:测试计划---线程组---(右键添加)逻辑控制器---如果(IF)控制器参数: 案例:(用......
  • angular项目国际化yaml自定义配置(ngx-translate)
    angular国际化配置很简单,但是想不用json文件用yaml文件,并且同一语言分label.jp.yaml和message.jp.yaml两个文件分开管理。1、下载ngx-translate的依赖库npminstall@ngx-translate/core--savenpminstall@ngx-translate/http-loader--save2、app.module.ts 中引入TranslateMo......
  • npm自定义模块及发布模块NodeJS
    在模块目录下执行:npminit(可以加--yes一键生成)新建文件index.jsvaryunan='helloyunan';module.exports=yunan;然后将文件夹放到node_modules可以用下面方法使用试试constyunan=require('huyunan');console.log('yunan',yunan);//yunanhelloyunan发布之前......