Kibana 中的 SNMP 拓扑数据:从采集到 Canvas

作者:来自 Elastic C. Pierce

Kibana 的 Network Topology plugin 提供了一个可直接部署的 Logstash pipeline、一个结构化 schema,以及一个拓扑视图,用于展示 "哪些东西与哪些东西相连接"。

SNMP 采集不应该像一次 "额外的任务"。

将 SNMP 数据接入 Elasticsearch 可以解锁对网络的丰富可观测性 ------ 接口利用率、路由健康状态、二层转发情况等等。实现路径包含一些常见步骤:选择要遍历的 MIB、将 OID 映射为人类可读的字段名、配置 SNMP v2c 或 v3 认证、适配厂商自定义 MIB 扩展,并调优 pipeline 以优雅处理大规模设备库中的设备超时问题。有了一个稳定模板后,原本需要定制开发的 Logstash 项目,就变成了一个可复用、可共享的配置,团队中的任何工程师都可以接手并扩展。

插件 包含一个 Logstash pipeline template,可以开箱即用处理常见场景。它会按每个目标设备、在可配置的 poll interval 下遍历 IF-MIB(接口计数与状态)、IP-MIB(ARP 表与 IP 地址分配)、BRIDGE-MIB(MAC 地址转发表)、BGP4-MIB(BGP 对等会话)以及 OSPF-MIB(OSPF 邻居关系)。

你只需要添加设备列表和认证信息,启动 Logstash,数据就会开始流入 Elasticsearch。

该模板还处理了一些常见的运维问题:poll timeout、设备不支持某些 MIB 时的 OID 缺失分支,以及在大规模设备列表上的批量遍历调度。

在 Elasticsearch 中结构化 SNMP 数据:schema 设计

当 SNMP 数据进入 Elasticsearch 后,下一个问题就是结构化。像接口计数器这样的数据 ifInOctets()ifOperStatus 在 ECS(Elastic Common Schema)中有相对合理的映射,它们属于 host-level metrics,并且可以直接对应到 `` 字段。但网络工程师真正用于排障的数据本质上是 relational 的,而这个 plugin 提供了一种查看这些关系的方法。

一个 BGP peer session 包含 state、remote AS number、uptime 和 update count。一个 OSPF adjacency 包含 neighbor router ID、area、priority,以及 state machine position。一个 MAC table entry 记录某个 MAC address 是在哪个物理 switch port 上被学习到的。这些都没有直接的 ECS field 定义,如果强行塞进通用的 event.* observer.* 字段,会丢失使这些数据有意义的语义信息 。

该 plugin 采用一种有明确主张的设计方式 :在适用时使用 ECS,在不适用时通过清晰的 namespace 进行扩展。interface data 映射到 ECS-aligned fields;routing protocol 和 L2 forwarding data 则进入专门设计的 namespaces(bgp_peer.*, ospf_neighbor.*, arp.*, mac_table.*),字段命名直接贴合运维人员的认知方式。如果你知道 router CLI 中 bgpPeerState 的含义,那么 Elasticsearch 中的 bgp_peer.state 会非常直观。如果你已经在使用自定义 schema 来采集 SNMP 数据,那么该 plugin 的 templates 和 ingest pipeline 将是补充而不是替代------这些新字段是 additive 的,因此可以按节奏逐步采用。

数据类型关键字段ECS 命名空间
BGP Peer Session State、Remote AS、Uptime、Update Count ``
OSPF Adjacency Neighbor Router ID、Area、Priority、State ``
MAC Table Entry Switch Port、Learned MAC Address ``
ARP Entry IP-to-MAC Mapping ``

一个 ingest pipeline(snmp-device-enrichment)在 index time 负责 classification。它解析每台设备的 sysDescr 字符串,用于生成标准化的 device.type (router、switch、firewall、access point)以及 device.vendor,从而让所有 downstream consumer(dashboards、ES|QL queries、alerting rules、topology view)都可以使用一致的 device metadata,而无需自定义 parsing。该 pipeline 默认支持常见 vendor,同时也支持在更复杂环境中扩展。

最终得到的结果是:SNMP 数据可以像 Elasticsearch 中任何结构化数据一样被查询。

"显示所有不在 Established 状态的 BGP session"变成一个 filter,而不是 regex。

"哪些 Cisco switches 上存在 admin-up 但 oper-down 的接口" 变成一个 KQL query,而不是脚本。

在 Kibana 中可视化 SNMP 网络拓扑

Dashboards 擅长回答 "数据是多少?"而拓扑视图则回答一个互补问题:"它们之间是如何连接的?"网络工程师是以 topology 的方式思考问题的:上游与下游关系、路径冗余,以及链路故障的 blast radius。一个空间化的 graph-based 视图可以把这种心智模型直接带入 Kibana,并与运维人员已经依赖的 charts 和 data tables 并列使用。

该 plugin 在 Kibana 的 Observability navigation 中新增了一个交互式拓扑图。它从 Elasticsearch 中读取结构化 SNMP 数据,通过 ARP、MAC table、BGP 和 OSPF 关系构建 adjacency graph,并以 force-directed layout 的形式渲染出来,支持缩放、拖拽和重新布局。

其中 nodes 表示设备,edges 表示已发现的关系。点击任意设备都会打开一个 flyout,展示其 interface table、ARP neighbors 以及 routing protocol sessions。

如何在 Kibana 中设置 SNMP 网络拓扑监控?

该插件几乎可以开箱即用,只有少量 assets 需要安装。具体设置如下:

  1. 在 self-managed Kibana instance 上安装 plugin zip(bin/kibana-plugin install file:///path/to/networkTopology-.zip)。

  2. 应用 index templates 和 ingest pipeline。点击 plugin 的 Setup tab 中的模板安装流程,几个按钮操作即可完成,schema 就会就绪。

  3. 部署 Logstash pipeline 。将你的 device targets、authentication details 或其他配置添加到内置模板中并启动它。如果你使用 Logstash Centralized Pipeline Management,可以直接从 Kibana 推送,无需 SSH。

数据会在下一次 poll cycle 进入 Elasticsearch,ingest pipeline 会对其进行分类和 enrich,然后 topology view 就会被填充。从开始到结束只需要几分钟,而不是数小时或数天的试错。

如果团队想在连接真实基础设施之前评估插件,还提供了 sample data generator:可以启动 Docker development environment 来探索完整功能集,并使用一个真实的 multi-site network 进行体验。

原文:www.elastic.co/observabili...

相关推荐
Elasticsearch2 天前
3个信号、2个环境变量、0个采集器:使用 Python 和 Elastic 的托管 OTLP 端点实现 OpenTelemetry
elasticsearch
Elasticsearch4 天前
如何通过 Claude Code 来写入 CSV 数据到 Elasticsearch
elasticsearch
大志哥1236 天前
ES和Logstash日志链路系统上线后遭遇切片爆炸(解决)
大数据·elasticsearch
TableRow6 天前
参数化搜索的实现原理:从多维索引到查询优化
elasticsearch·全文检索
醉颜凉6 天前
Elasticsearch高性能优化:Bulk API大规模数据导入性能调优全攻略
elasticsearch·性能优化·jenkins
Ysouy6 天前
Spring Data Elasticsearch 全流程学习教程
java·spring·elasticsearch
沪飘大军6 天前
goldRush-专门分析黄金的投资理财agent
java·开发语言·elasticsearch
让学习成为一种生活方式6 天前
samblaster v.0.1.26安装与使用--生信工具096
大数据·elasticsearch·搜索引擎