#bpf #metrics #subsystem #kubernetes #prometheus #exporting #binary

程序 bpf-metrics-exporter

用于通过Prometheus导出eBPF子系统指标的二进制文件

7个版本

0.5.0 2024年7月12日
0.5.0-rc12024年7月10日
0.4.2 2024年6月21日
0.4.1 2024年5月3日
0.4.0 2024年4月10日

#283 in Unix API

Download history 385/week @ 2024-04-29 8/week @ 2024-05-06 6/week @ 2024-05-20 1/week @ 2024-06-10 111/week @ 2024-06-17 13/week @ 2024-06-24 169/week @ 2024-07-08 9/week @ 2024-07-15 25/week @ 2024-07-29

203 每月下载量

Apache-2.0

2MB
7.5K SLoC

bpf-metrics-exporter

导出内核BPF子系统的指标到OpenTelmetry。这些指标可以后来与系统中的其他指标一起丰富,例如,关联进程ID -> 容器 -> k8s pods。

用法

./bpf-metrics-exporter --otlp-grpc localhost:4317

指标

以下指标目前正在导出,此列表将持续扩展

度量

  • bpf_program_info:每个加载的BPF程序的信息
    • 标签
      • id:BPF程序的ID
      • name:BPF程序的名字
      • type:BPF程序类型的可读字符串
      • tag:BPF程序的标签
      • gpl_compatible:BPF程序是否与GPL兼容
      • load_time:BPF程序加载的时间
  • bpf_map_info:每个加载的BPF Map的信息
    • 标签
      • id:BPF Map的ID
      • name:BPF Map的名字
      • type:BPF Map的类型,对应以下内核枚举
      • key_size:BPF Map的键大小(以字节为单位)
      • value_size:BPF映射的值大小。
      • max_entries:BPF映射的最大条目数。
      • flags:BPF映射的加载时间特定标志。
  • bpf_link_info:加载的每个BPF链接的信息。
    • 标签
      • id:bpf Link的ID。
      • prog_id:使用链接的BPF程序的程序ID。
      • type:BPF链接类型,作为u32,对应以下内核枚举
  • bpf_program_load_time:程序加载的标准UTC时间(秒)。
    • 标签
      • id:BPF程序的ID
      • name:BPF程序的名字
      • type:BPF程序类型的可读字符串

计数器

注意:所有计数器都将附加后缀 _total

  • bpf_program_size_jitted_bytes:程序JIT编译的机器代码的大小(字节)。
    • 标签
      • id:BPF程序的ID
      • name:BPF程序的名字
      • type:BPF程序类型的可读字符串
  • bpf_program_size_translated_bytes:BPF程序的大小(字节)。
    • 标签
      • id:BPF程序的ID
      • name:BPF程序的名字
      • type:BPF程序类型的可读字符串
  • bpf_program_mem_bytes:BPF程序使用的内存量(字节)。
    • 标签
      • id:BPF程序的ID
      • name:BPF程序的名字
      • type:BPF程序类型的可读字符串
  • bpf_program_verified_instructions:BPF程序中的指令数。
    • 标签
      • id:BPF程序的ID
      • name:BPF程序的名字
      • type:BPF程序类型的可读字符串
  • bpf_map_key_size:BPF映射键的大小。
    • 标签
      • id:BPF Map的ID
      • name:BPF Map的名字
      • type:BPF Map的类型,对应以下内核枚举
  • bpf_map_value_size:BPF映射值的大小。
    • 标签
      • id:BPF Map的ID
      • name:BPF Map的名字
      • type:BPF Map的类型,对应以下内核枚举
  • bpf_map_max_entries:BPF映射允许的最大条目数。
    • 标签
      • id:BPF Map的ID
      • name:BPF Map的名字
      • type:BPF Map的类型,对应以下内核枚举

试试看

您需要一个设置好的Grafana堆栈。您可以使用以下命令快速部署:

podman play kube metrics-stack.yaml

然后,您可以部署导出器

sudo ./target/debug/bpf-metrics-exporter

您可以使用默认用户名和密码https://127.0.0.1:3000/登录Grafana:admin:admin

从那里,只需选择标题为eBPF 子系统指标的默认仪表板。

eBPF Subsystem Metrics

要清理一切,只需使用ctrl+c退出bpf-metrics-exporter进程并运行

podman kube down metrics-stack.yaml

依赖关系

~51–68MB
~1.5M SLoC