1) 概述
Net-exporter是面向Kubernetes云原生环境的网络监控工具,可以提供以下功能:
● 针对Pod级别的网络监控,包括流量,应用层连接信息,socket内存分配状态等;
● 针对Pod级别的网络异常状态的指标监控,例如Pod内进程对socket进行读写操作的等待时间超过100ms的次数,Pod发出TCP rst报文的次数等;
● 针对Pod级别的网络异常事件的现场,提供事件发生的详细信息的观测,例如内核网络软中断调度等待过久,UDP出现socket内存不足导致的溢出等;
与常见的Kubernetes监控和可观测性工具的主要区别如下:
功能选项 |
Prometheus Node exporter |
cAdvisor/Metric API |
Net-exporter |
按照Pod区分 |
No |
Yes |
Yes |
网络状态监控 |
Yes |
No |
Yes |
异常事件的现场捕获 |
No |
No |
Yes |
内核网络高阶信息 |
No |
Yes |
Yes |
2) 核心原理
架构
信息采集
Net-exporter提供了适配于Kubernetes网络监控功能,在节点上,Net-exporter采集并归类了网络相关的大量数据,实现这些功能的核心原理包括:
● 通过CRI接口和Linux /proc/获取节点内的网络隔离状态及其与Pod的关联信息
● 通过Linux /proc/,Linux netlink和eBPF获取网络监控信息
● 通过eBPF获取操作系统内核在网络异常事件发生时的上下文状态
聚合分析
Net-exporter采集的数据可以通过多种方式获取,包括:
● 通过Prometheus获取监控信息,并使用Grafana进行可视化操作
● 通过配置Grafana Loki接收KubeSkoop exporter的事件推送,并使用Grafana进行可视化操作
● 使用kubeskoop inspector命令行工具观察监控信息