请求协助:Logstash解码思科设备GPB-KV二进制数据失败
思科GPB-KV编码数据Logstash解码故障排查方案
一、验证Proto文件与生成代码一致性
- 确保使用指定的
telemetry.proto文件生成Ruby代码,执行正确的protoc命令:protoc --ruby_out=. telemetry.proto - 检查生成的
telemetry_pb.rb,确认包含Telemetry、TelemetryField等GPB-KV核心消息结构体定义。
二、Logstash配置修正(结合截图逻辑)
- 用绝对路径引入生成的Ruby文件,避免相对路径导致加载失败:
require "/opt/logstash/telemetry_pb.rb" - 解码逻辑严格匹配Proto定义,示例正确处理代码:
filter { ruby { code => ' require "/opt/logstash/telemetry_pb.rb" begin # 替换为实际二进制数据的字段路径,比如截图中的[payload] binary_data = event.get("[payload]") decoded = Telemetry.decode(binary_data) event.set("decoded_telemetry", decoded.to_h) rescue => e event.set("decode_failure", e.message) end ' } } - 确认二进制数据的字段路径与输入插件输出一致,比如Kafka输入的
[value]或TCP输入的[message]。
三、设备侧编码格式验证
- 登录思科设备,确认遥测配置中开启了GPB-KV编码:
telemetry ietf subscription <id> encoding gpb-kv - 用
tshark抓包分析,确认传输的二进制数据头部符合GPB-KV的标识特征。
四、Logstash环境依赖检查
- 确保Logstash内置Ruby版本(执行
/path/to/logstash/bin/ruby -v)与protobuf gem兼容(推荐2.5+版本) - 在Logstash的Gem环境中安装protobuf依赖:
/path/to/logstash/bin/ruby -S gem install protobuf
五、日志定位具体错误
- 查看Logstash主日志(默认路径
/var/log/logstash/logstash-plain.log),搜索decode_failure或protobuf关键词,直接定位异常原因(如数据截断、字段不匹配、依赖缺失)
内容的提问来源于stack exchange,提问作者SiddarajGJ
相关产品推荐
相关产品推荐

