Observabilityの文脈で、BPFが使用されている代表的なアプリケーションを紹介する。ここでは、アプリケーションを対話的に使用するツールと、常駐でデータ収集するツールに分類している。 ### 対話的に使用するツール - [GitHub - iovisor/bcc: BCC - Tools for BPF-based Linux IO analysis, networking, monitoring, and more](https://github.com/iovisor/bcc#tracing) - 書籍<sup id="a2">[2](#f2)</sup>にて紹介されている、コマンドラインから使用するための多数のパフォーマンス解析ツールが開発されている。 - [GitHub - ntop/ntopng: Web-based Traffic and Security Network Traffic Monitoring](https://github.com/ntop/ntopng) - [GitHub - ntop/libebpfflow: Container traffic visibility library based on eBPF](https://github.com/ntop/libebpfflow) - [GitHub - iovisor/ply: Dynamic Tracing in Linux](https://github.com/iovisor/ply) - [GitHub - YutaroHayakawa/ipftrace2: A packet oriented Linux kernel function call tracer](https://github.com/YutaroHayakawa/ipftrace2) - カーネルのネットワークスタック内を通過するパケットの「旅路」をトレースできる ### 常駐でデータ収集するツール - [GitHub - pixie-io/pixie: Instant Kubernetes-Native Application Observability](https://github.com/pixie-io/pixie) - [GitHub - draios/sysdig: Linux system exploration and troubleshooting tool with first class support for containers](https://github.com/draios/sysdig) - [GitHub - aquasecurity/tracee: Linux Runtime Security and Forensics using eBPF](https://github.com/aquasecurity/tracee) - [GitHub - skydive-project/skydive: An open source real-time network topology and protocols analyzer](https://github.com/skydive-project/skydive) - OSI参照モデルのレイヤー4(TCP/UDP)の通信 - [GitHub - weaveworks/scope: Monitoring, visualisation & management for Docker & Kubernetes](https://github.com/weaveworks/scope) - [GitHub - weaveworks/tcptracer-bpf: eBPF program using kprobes to trace TCP events without run-time compilation dependencies](https://github.com/weaveworks/tcptracer-bpf) - [Network Performance Monitoring](https://docs.datadoghq.com/network_monitoring/performance/) - [https://docs.sysdig.com/en/docs/sysdig-monitor/explore/visualize-metrics-using-the-topology-view/](https://docs.sysdig.com/en/visualize-metrics-using-the-topology-view.html) - [cloudflare/ebpf_exporter: Prometheus exporter for custom eBPF metrics](https://github.com/cloudflare/ebpf_exporter) - BPFでトレースして集約された統計値を収集するためのPrometheus Exporter ### その他の応用事例 - [Using eBPF as an SRE - A beginner's tale – Sylvain Hellegouarch, Reliably - YouTube](https://www.youtube.com/watch?v=PwmCLJQIf3I) - [Investigating Request Delay in a Large-Scale Kafka Cluster Caused by TCP - Speaker Deck](https://speakerdeck.com/line_devday2021/investigating-request-delay-in-a-large-scale-kafka-cluster-caused-by-tcp) - Apache Kafkaの性能問題を - トラブルシューティングにBPFを用いた事例。 トラブルシューティング事例はたくさんあるはずだが、筆者がそれらをあまり探せていないため、事例を募集中。