热门标签 | 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 ________________________






推荐阅读
  • 基于.NET Core框架nacos的简单应用
    什么是Nacos?服务(Service)是Nacos世界的一等公民。Nacos支持 ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • 本文介绍了网页播放视频的三种实现方式,分别是使用html5的video标签、使用flash来播放以及使用object标签。其中,推荐使用html5的video标签来简单播放视频,但有些老的浏览器不支持html5。另外,还可以使用flash来播放视频,需要使用object标签。 ... [详细]
  • zuul 路由不生效_Zuul网关到底有何牛逼之处?竟然这么多人在用~
    作者:kosamino来源:cnblogs.comjing99p11696192.html哈喽,各位新来的小伙伴们,大家好& ... [详细]
  • 微服务之总体架构篇
    一、单体架构存在的问题缺点:1、难以维护:当单体应用业务不断迭代后代码量非常臃肿,模整个项目非常复杂,每次更改代码都可能带来新的bug;2、部署项目麻烦:庞大之后项目部署效率 ... [详细]
  • 阿里云监控URL的配置笔记
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了阿里云监控URL的配置笔记相关的知识,希望对你有一定的参考价值。有很多细节需要记录 ... [详细]
  • EPICS Archiver Appliance存储waveform记录的尝试及资源需求分析
    本文介绍了EPICS Archiver Appliance存储waveform记录的尝试过程,并分析了其所需的资源容量。通过解决错误提示和调整内存大小,成功存储了波形数据。然后,讨论了储存环逐束团信号的意义,以及通过记录多圈的束团信号进行参数分析的可能性。波形数据的存储需求巨大,每天需要近250G,一年需要90T。然而,储存环逐束团信号具有重要意义,可以揭示出每个束团的纵向振荡频率和模式。 ... [详细]
  • 解决github访问慢的问题的方法集锦
    本文总结了国内用户在访问github网站时可能遇到的加载慢的问题,并提供了解决方法,其中包括修改hosts文件来加速访问。 ... [详细]
  • 2018深入java目标计划及学习内容
    本文介绍了作者在2018年的深入java目标计划,包括学习计划和工作中要用到的内容。作者计划学习的内容包括kafka、zookeeper、hbase、hdoop、spark、elasticsearch、solr、spring cloud、mysql、mybatis等。其中,作者对jvm的学习有一定了解,并计划通读《jvm》一书。此外,作者还提到了《HotSpot实战》和《高性能MySQL》等书籍。 ... [详细]
  • 基于Socket的多个客户端之间的聊天功能实现方法
    本文介绍了基于Socket的多个客户端之间实现聊天功能的方法,包括服务器端的实现和客户端的实现。服务器端通过每个用户的输出流向特定用户发送消息,而客户端通过输入流接收消息。同时,还介绍了相关的实体类和Socket的基本概念。 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了软件测试知识点之数据库压力测试方法小结相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了SpringCloudRibbon部分源码相关的知识,希望对你有一定的参考价值。1:ribbon是提供通过servi ... [详细]
  • 在这分布式系统架构盛行的时代,很多互联网大佬公司开源出自己的分布式RPC系统框架,例如:阿里的dubbo,谷歌的gRPC,apache的Thrift。而在我们公司一直都在推荐使用d ... [详细]
  • 服务注册中心到底应该选AP模型还是CP模型?
    当下,分布式系统正变得越来越重要,大型网站几乎都是分布式的。分布式系统的最大难点,就是各个节点的状态 ... [详细]
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社区 版权所有