热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Telemetry获取网络设备CPU信息

交换机配置:intg100unshintvlani1ipadd192.168.56.177qstelseuser-iv4authaaaproinsshupl3qsshuserpyt

交换机配置:

int g1/0/0
un sh
int vlani 1
ip add 192.168.56.177
q
stel s e
user-i v 4
auth aaa
pro in ssh
u p l 3
q
ssh user python
ssh user python auth password
ssh user python ser stel
aaa
local-user python password irreversible-cipher Huawei@123
local-user python service-type ssh
local-user python user-group manage-ug
q
#进入Telemetry视图
telemetry
#配置设备推送目标,目标组Dest1,推送目标IP地址192.168.56.1,端口为20000
destination-group Dest1
ipv4-address 192.168.56.1 port 20000 protocol grpc no-tls
#配置设备采样数据
#当用户配置Telemetry静态订阅采样数据时,需要创建采样传感器组,并指定好采样路径。
#本例中创建采样组Sensor1,采样路径为CPU信息
#采样路径见:telemetry\CloudEngine 16800, 12800, 9800, 8800, 6800, 5800 V200R021C00 Telemetry性能指标集.xlsx
sensor-group Sensor1
sensor-path huawei-devm:devm/cpuInfos/cpuInfo
#创建订阅,将配置好的上送目标组和采样传感器组进行关联,完成数据上送。
#本例中关联目标组Dest1与传感器组Sensor1,并设置采样间隔为1000ms
subscription Sub1
destination-group Dest1
sensor-group Sensor1 sample-interval 1000
commit
q
q

  

 

配置步骤:
1、搭建环境,完成实验环境准备
2、配置设备Telemetry静态订阅方式想着配置,包括采集内容、推送对象和推送间隔
3、官网下载华为设备对应发布的.proto文件。
华为企业用户下载地址:http://support.huawei.com/enterprise
运营商用户下载地址:http://support.huawei.com/carrier
搜索相应的设备型号及版本号
软件——版本及补丁
采样路径见:telemetry\CloudEngine 16800, 12800, 9800, 8800, 6800, 5800 V200R021C00 Telemetry性能指标集.xlsx
编译proto文件得到服务端调用方法
本例中,使用run_codegen.py脚本编译proto文件。注意将所有.proto文件放入/protos目录
本脚本将一次编译huawei-grpc-dialout.proto、huawei-telemetry.proto和huawei-devm.proto
4、编写服务端代码,监听指定端口获取数据
5、根据上送数据的不同,选择对应的方法对数据内容进行解码

在文件目录下创建一个protos文件夹,将huawei-grpc-dialout.proto、huawei-telemetry.proto和huawei-devm.proto放到protos文件夹下

Generate_codes代码:编译.proto文件

#!/usr/bin
# _*_ coding: UTF-8 _*_
# Copyright (c) 2021 GengYu.All rights reserved
# @Create by gengyu
# @Create Time :2021/12/18
# @File Name : Generate_codes
# 打包命令 pyinstaller -F package\Generate_codes
"""
generates protocol messages and gRPC stubs.
"""
__author__ = 'Administrator'
from grpc_tools import protoc
protoc.main(
(
'',
'-I./protos',
'--python_out=.',
'--grpc_python_out=.',
'./protos/huawei-grpc-dialout.proto',#文件路径
)
)
protoc.main(
(
'',
'-I./protos',
'--python_out=.',
'--grpc_python_out=.',
'./protos/huawei-telemetry.proto',#文件路径
)
)
protoc.main(
(
'',
'-I./protos',
'--python_out=.',
'--grpc_python_out=.',
'./protos/huawei-devm.proto',#文件路径
)
)

 

telemetry_server.py代码:运行即可接收交换机推送的信息

#!/usr/bin
# _*_ coding: UTF-8 _*_
# Copyright (c) 2021 GengYu.All rights reserved
# @Create by gengyu
# @Create Time :2021/12/18
# @File Name : telemetry_server
# 打包命令 pyinstaller -F package\telemetry_server
"""
"""
__author__ = 'Administrator'
import doctest
from concurrent import futures
import time
import importlib
import grpc#pip 安装
import huawei_grpc_dialout_pb2_grpc#generate_codes.py生成
import huawei_telemetry_pb2#generate_codes.py生成
_ONE_DAY_IN_SECOnDS= 60 * 60 * 24
def tele_server():
#创建一个grpc server对象
server = grpc.server(futures.ThreadPoolExecutor(max_workers=10))
#注册huawei的telemetry 数据监听服务
huawei_grpc_dialout_pb2_grpc.add_gRPCDataserviceServicer_to_server(
Telemetry_CPU_Info(),server)
#设置socket监听端口和PC的IP地址,与交换机中推送目标IP地址一致
server.add_insecure_port('192.168.56.1:20000')
#启动 grpc server
server.start()
#死循环监听
try:
while True:
time.sleep(_ONE_DAY_IN_SECONDS)
except KeyboardInterrupt:
server.stop(0)
#创建类继承huawei_grpc_dialout_pb2_grpc中的Servicer方法
class Telemetry_CPU_Info(huawei_grpc_dialout_pb2_grpc.gRPCDataserviceServicer):
def __init__(self):
return
def dataPublish(self, request_iterator, context):
for i in request_iterator:
print('________________________ start ________________________')
telemetry_data = huawei_telemetry_pb2.Telemetry.FromString(i.data)
print(telemetry_data)
for row_data in telemetry_data.data_gpb.row:
print('________________________')
print('The proto path is :' + telemetry_data.proto_path)
print('________________________')
module_name = telemetry_data.proto_path.split('.')[0]
root_class = telemetry_data.proto_path.split('.')[1]
#动态加载telemetry 获取数据的对应模块,本例中为:
decode_module = importlib.import_module(module_name + '_pb2')
print(decode_module)
#定义解码方法:getattr获取动态加载的模块中的属性值,调用此属性的解码方法FromString
decode_func = getattr(decode_module,root_class).FromString
print('________________________ content is ________________________\n')
#将row_data中的content中的内容使用此方法解码,并输出
print(decode_func(row_data.content))
print('________________________ done ________________________')
if __name__ == "__main__":
tele_server()

 

 

运行结果:

________________________ start ________________________
node_id_str: "HUAWEI"
subscription_id_str: "Sub1"
sensor_path: "huawei-devm:devm/cpuInfos/cpuInfo"
collection_id: 13
collection_start_time: 1639850454743
msg_timestamp: 1639850454847
data_gpb {
row {
timestamp: 1639850454743
content: "*\022\n\020\"\0011\010\201\200\204\010(\n\030Z0K\020\010"
}
row {
timestamp: 1639850454743
content: "*\023\n\021\"\00217\010\201\200\304\010(\013\030Z0K\020\010"
}
}
collection_end_time: 1639850454743
current_period: 10000
except_desc: "OK"
product_name: "CE12800"
proto_path: "huawei_devm.Devm"

________________________
The proto path is :huawei_devm.Devm
________________________

________________________ content is ________________________

cpuInfos {
cpuInfo {
entIndex: 16842753
interval: 8
ovloadThreshold: 90
position: "1"
systemCpuUsage: 10
unovloadThreshold: 75
}
}

________________________ done ________________________
________________________
The proto path is :huawei_devm.Devm
________________________

________________________ content is ________________________

cpuInfos {
cpuInfo {
entIndex: 17891329
interval: 8
ovloadThreshold: 90
position: "17"
systemCpuUsage: 11
unovloadThreshold: 75
}
}

________________________ done ________________________






推荐阅读
  • Python第三方库安装的多种途径及注意事项
    本文详细介绍了Python第三方库的几种常见安装方法,包括使用pip命令、集成开发环境(如Anaconda)以及手动文件安装,并提供了每种方法的具体操作步骤和适用场景。 ... [详细]
  • 尽管深度学习带来了广泛的应用前景,其训练通常需要强大的计算资源。然而,并非所有开发者都能负担得起高性能服务器或专用硬件。本文探讨了如何在有限的硬件条件下(如ARM CPU)高效运行深度神经网络,特别是通过选择合适的工具和框架来加速模型推理。 ... [详细]
  • 如何使用PyCharm及常用配置详解
    对于一枚pycharm工具的使用新手,正确了解这门工具的配置及其使用,在使用过程中遇到的很多问题也可以迎刃而解,文中有非常详细的介绍, ... [详细]
  • 深入解析Redis内存对象模型
    本文详细介绍了Redis内存对象模型的关键知识点,包括内存统计、内存分配、数据存储细节及优化策略。通过实际案例和专业分析,帮助读者全面理解Redis内存管理机制。 ... [详细]
  • 本文详细探讨了网站流量统计中常用的三个关键指标:页面浏览量(PV)、独立访客数(UV)和独立IP数(IP)。通过分析这些指标的定义、计算方法及其应用场景,帮助网站运营者更好地理解用户行为,优化网站内容与用户体验。 ... [详细]
  • 使用Pandas高效读取SQL脚本中的数据
    本文详细介绍了如何利用Pandas直接读取和解析SQL脚本,提供了一种高效的数据处理方法。该方法适用于各种数据库导出的SQL脚本,并且能够显著提升数据导入的速度和效率。 ... [详细]
  • 本文将介绍网易NEC CSS框架的规范及其在实际项目中的应用。通过详细解析其分类和命名规则,探讨如何编写高效、可维护的CSS代码,并分享一些实用的学习心得。 ... [详细]
  • 本文详细探讨了 Django 的 ORM(对象关系映射)机制,重点介绍了其如何通过 Python 元类技术实现数据库表与 Python 类的映射。此外,文章还分析了 Django 中各种字段类型的继承结构及其与数据库数据类型的对应关系。 ... [详细]
  • 本文探讨了如何在日常工作中通过优化效率和深入研究核心技术,将技术和知识转化为实际收益。文章结合个人经验,分享了提高工作效率、掌握高价值技能以及选择合适工作环境的方法,帮助读者更好地实现技术变现。 ... [详细]
  • 2018年3月31日,CSDN、火星财经联合中关村区块链产业联盟等机构举办的2018区块链技术及应用峰会(BTA)核心分会场圆满举行。多位业内顶尖专家深入探讨了区块链的核心技术原理及其在实际业务中的应用。 ... [详细]
  • 对于许多初学者而言,遇到总线错误(bus error)或段错误(segmentation fault/core dump)是极其令人困扰的。本文详细探讨了这两种错误的成因、表现形式及解决方法,并提供了实用的调试技巧。 ... [详细]
  • 2017年苹果全球开发者大会即将开幕,预计iOS将迎来重大更新,同时Siri智能音箱有望首次亮相,AI技术成为大会焦点。 ... [详细]
  • 智慧城市建设现状及未来趋势
    随着新基建政策的推进及‘十四五’规划的实施,我国正步入以5G、人工智能等先进技术引领的智慧经济新时代。规划强调加速数字化转型,促进数字政府建设,新基建政策亦倡导城市基础设施的全面数字化。本文探讨了智慧城市的发展背景、全球及国内进展、市场规模、架构设计,以及百度、阿里、腾讯、华为等领军企业在该领域的布局策略。 ... [详细]
  • 力扣93:复原IP地址问题解析(Golang实现)
    本文探讨了力扣平台上的第93号问题——复原IP地址。该问题要求从给定的纯数字字符串中,通过添加分隔符‘.’来构建所有可能的有效IP地址。有效IP地址由四个介于0至255之间的整数组成,不允许出现前导零。 ... [详细]
  • 本文介绍了两种在Android设备上获取MAC地址的有效方法,包括通过Wi-Fi连接和使用移动数据流量的情况。第一种方法依赖于Wi-Fi连接来获取MAC地址,而第二种方法则无需Wi-Fi,直接通过网络接口获取。 ... [详细]
author-avatar
乐在TV
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有