背景

通过 SNMP 无法获取 华为 healthcheck 健康监测状态,本机建介绍PRTG脚本 通过 EXE 脚本自定义监控参数,该传感器可以接受 json 或者 xml 格式,下来来看看如何是先吧~~~

要监控的信息

环境及配置依赖

  • 系统:win-11
  • python : 3.10.7
pip install paramiko
pip install textfsm

编写脚本

python 脚本

import paramiko
import time
import textfsm
import json
import sys# 连接设备
def connect_device(ip, link_name):ip = iplink_name = link_namessh_client = paramiko.SSHClient()ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())# 替换你的账户及密码 'name', 'password'ssh_client.connect(ip, 22, 'name', 'password', look_for_keys=False)command = ssh_client.invoke_shell()time.sleep(0.5)command.send('screen-length 0 temporary \n')time.sleep(1)command.send('display healthcheck name {} \n'.format(link_name))time.sleep(1)command.send('display healthcheck name {} verbose \n'.format(link_name))time.sleep(1)command_result = command.recv(65535).decode(encoding='utf-8').lower()ssh_client.close()# 通过textfsm模块获取数据, textfsm建议使用绝对路径tex_temp = open(open('C:\Program Files (x86)\PRTG Network Monitor\Custom Sensors\EXEXML\huawei_health_check_temp.txt', encoding='utf-8'), encoding='utf-8')result = textfsm.TextFSM(tex_temp).ParseTextToDicts(command_result)return result# 传感器是从回显中获取信息的,将处理后的信息打印处理
def print_result(dev_result, data):# 获取health_check的状态dev_state = dev_result[0]link_state = {"Channel": "{} Statu".format(dev_state['line_Name']),"CustomUnit": "#","Mode": "Absolute"}# 定义状态信息,0 为正常,1 为部分地址探测异常,2 为healthcheck探测失败if dev_state['All_State'] == 'up' and dev_state['line_down'] == '0':link_state["Value"] = 0data['prtg']['text'] = "Link State: up"elif dev_state['All_State'] == 'up' and dev_state['line_down'] != '0':link_state["Value"] = 1data['prtg']['text'] = "Link State: Some lines are abnormal"data['prtg']['Warning'] = 1else:link_state["Value"] = 2data['prtg']['text'] = "Link State: down"data['prtg']['Error'] = 1data['prtg']['result'].append(link_state)# 处理每个目的地址监测状态for one_line in dev_result:one_link_state = {"Channel": "{} Check Statu".format(one_line['One_Destination']),"CustomUnit": "#","Mode": "Absolute",}if one_line['One_State'] == 'up':one_link_state['Value'] = 0else:one_link_state['Value'] = 2data['prtg']['result'].append(one_link_state)print(json.dumps(data, sort_keys=True, indent=2))def main():data = {"prtg": {"result": []}}try:# 通过sys接受外部数据,设备地址及接口名称device_ip = sys.argv[1]link_name = sys.argv[2]result = connect_device(device_ip, link_name)print_result(result, data)except Exception as e:data['prtg']['text'] = "Link State: {}".format(e)print(json.dumps(data, sort_keys=True, indent=2))if __name__ == '__main__':main()

Python 获取到的数据

{"prtg": {"Warning": 1,"result": [{"Channel": "telecom-china-check Statu","CustomUnit": "#","Mode": "Absolute","Value": 1},{"Channel": "59.36.211.193 Check Statu","CustomUnit": "#","Mode": "Absolute","Value": 0},{"Channel": "223.6.6.6 Check Statu","CustomUnit": "#","Mode": "Absolute","Value": 2},{"Channel": "8.8.8.8 Check Statu","CustomUnit": "#","Mode": "Absolute","Value": 0}],"text": "Link State: Some lines are abnormal"}
}

textfsm模板

Value Filldown line_Name (\S+)
Value Filldown line_member (\w+)
Value Filldown All_State (up|down)
Value Filldown line_init (\d+)
Value Filldown line_down (\d+)
Value Filldown line_up (\d+)
Value One_State (up|down)
Value Required One_Destination (\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3})Start^${line_Name}\s+${line_member}\s+${All_State}\s+${line_up}\s+${line_down}\s+${line_init}^\s+state\s+:\s+${One_State}^\s+\w+\s+\S+\s+\w+\s+\S\s+ip\S${One_Destination} -> Record

bat文件

使用本地python环境调用脚本

@echo off
"C:\Users\quzq\AppData\Local\Programs\Python\Python310\python.exe" "C:\Program Files (x86)\PRTG Network Monitor\Custom Sensors\EXEXML\huawei_health_check.py" %1 %2

将文件放置PRTG探针

目录为:C:\Program Files (x86)\PRTG Network Monitor\Custom Sensors\EXEXML

配置监信息

点击添加探针选高级exe脚本

配置相关参数

定义告警信息


当探针有一个线路异常时探诊状态为警告

查看线路异常通道,值显示为2的为down状态

参考链接

传感器介绍 https://www.paessler.com/manuals/prtg/exe_script_advanced_sensor
传感器字段介绍 https://www.paessler.com/manuals/prtg/custom_sensors#command_line

通过 PRTG EXE 高级监控脚本 + python 监控华为防火墙线路健康状态相关推荐

  1. 编写监控脚本,监控集群内所有服务存活状态,内存、磁盘剩余率检测,异常则发送报警邮件...

    发送邮件Python程序 #!/usr/bin/python # -*- coding: UTF-8 -*- import sys import smtplib import email.mime.m ...

  2. tomcat监控脚本(监控进程,测试接口,告警动作为发送邮件)

    服务器环境:centos7.2 64位 tomcat8.5.6 tomcat 监控功能共需要两个脚本,如下: initMonitor.sh #!/bin/sh #初始化监控脚本相关变量 export ...

  3. python移动端内存、电量监控脚本

    python移动端内存.电量监控脚本,自动输出到本地txt adb命令查电量 adb shell dumpsys battery 电量监控脚本 内存监控脚本,适用于监控内存泄漏 第一次写博客,大家凑合 ...

  4. 在python中使用linux命令写一个监控脚本

    编写python监控脚本,监控/和/boot分区的使用率,/ 大于60%就告警,在屏幕上输出内容,具体自己定义 /boot分区大于50%就告警 脚本名monitor_partition.py 将磁盘的 ...

  5. shell监控脚本-监控mysql 主从复制

    注意:请先参考 shell监控脚本-准备工作,监控脚本在 rhel5 下测试正常,其它版本的linux 系统请自行测试 #监控mysql 主从复制 cat chk_mysql_rep.sh #!/bi ...

  6. python监控进程状态_python监控进程脚本

    本文实例为大家分享了python监控进程脚本的具体代码,供大家参考,具体内容如下 原理: 监控一个指定进程,每隔5秒钟获取其CPU.内存使用量超过60%即kill掉该进程,获取其句柄数,超过300也k ...

  7. 【逗老师带你学IT】PRTG监控通过Python+Modbus RTU获取温湿度传感器数据

    前文[逗老师带你学IT]PRTG监控通过Python+TCP Modbus获取温湿度传感器数据中我们讲了如何通过Python读取支持TCP Modbus的传感器数据.本章我们讲解下如何读取Modbus ...

  8. 【逗老师带你学IT】PRTG监控通过Python通过串口监控UPS运行状态,PRTG值查询功能定义

    本文主要介绍,如何通过串口获取UPS主机的运行状态,并通过PRTG统计监控和告警. 不同UPS主机厂的串口通信协议不同,但是市面上有一种比较通用的协议,如果你使用的是EATON,山特等等国产UPS,大 ...

  9. 【逗老师带你学IT】PRTG监控通过Python+TCP Modbus获取温湿度传感器数据

    本文介绍,Python如何通过TCP Modbus协议获取温湿度传感器数据.并在PRTG监控系统中呈现. 本文主要涉及知识点: 1.Python的ModbusTCP客户端实现 2.常见温湿度传感器中, ...

最新文章

  1. 网页左下角蒲公英动画
  2. Linux学习笔记 -- 文本编辑器之 vi与vim
  3. 韦东山驱动视频笔记——3.字符设备驱动程序之poll机制
  4. 今天发现新大陆:haml和Emmet
  5. 运行yum时出现错误,缺失libsasl2.so.2文件
  6. opencv16-Sobel算子
  7. bzoj1211 [HNOI2004]树的计数 prufer序列+组合数
  8. 苹果首款自研芯片Mac成本可能上升 因设计改变
  9. SetLayeredWindowAttributes 设置窗口透明
  10. python字典长度可变吗_[python] 根据字典中的信息生成列表,每次都会额外变长。...
  11. Atitit 数据查询法 目录 1. 数据查询语言QL (推荐) 1 1.1. Sql 1 1.2. 对象查询语言(OQL) 1 1.3. Atitit QL查询语言总结Jpql Ongl
  12. 计算机组成原理(白中英) 第二章 课后题答案
  13. 保险公司智能运营系统——软件需求规格说明
  14. 『学习资料推荐』百家讲坛中国历史音频珍藏版
  15. Python 实现发送QQ邮件(可加附件)
  16. 图文结合带你搞懂InnoDB MVCC
  17. 2020最新版影评小程序搭建教程(附源码获取渠道)
  18. 华为:海思坚持研发尖端半导体,不会进行任何重组或裁员;百度网盘下线SVIP会员免第三方广告特权;一加宣布与OPPO合并...
  19. 不错的google搜索地址
  20. ICSharpCode.SharpZipLib压缩的文件不能解压的原因

热门文章

  1. collection集合 厂家_一篇搞定Java集合类原理-WEB资讯专栏-DMOZ中文网站分类目录
  2. 5-3 区块链与供应链金融
  3. python 画不同形状的曲线
  4. 计算机老是蓝屏需要重新启动3,电脑经常蓝屏,需要重启,怎么办?
  5. 读书笔记——极简算法史:从数学到机器的故事 - 吕克·德·布拉班迪尔
  6. 小程序预览加载不出图片
  7. 微擎url模式解读_微擎常用开发文档
  8. Openwrt编译feeds机制
  9. 基于小波的图像边缘检测,小波变换边缘检测原理
  10. Linux关于ssh: connect to host xxx.xxx.xxx.xxx port 22: Operation timed out问题