基于 eBPF 的 prometheus 监控方案
eBPF技术跟踪内核无比强大,几乎可以跟踪内核中的任意函数,bcc工具使得编写eBPF程序更加高效,ebpf_exporter 结合了 eBPF & bcc 的优势,对接 prometheus 和 granafa ,使得自定义监控系统更加安全和高效,同时也可以很方便的使用eBPF技术监控集群,并对其数据进行存储和可视化展示。
eBPF技术跟踪内核无比强大,几乎可以跟踪内核中的任意函数,bcc工具使得编写eBPF程序更加高效,ebpf_exporter 结合了 eBPF & bcc 的优势,对接 prometheus 和 granafa ,使得自定义监控系统更加安全和高效,同时也可以很方便的使用eBPF技术监控集群,并对其数据进行存储和可视化展示。
本文将通过Node_exporter+Prometheus+Grafana三者结合,快速提取Linux内核数据,数据包括但不限于CPU、内存、磁盘、网络IO等,并进行可视化展示,这一套对于分布式也同样适用。
我们可以使用eBPF对Linux内核进行跟踪,收集我们想要的内核数据,从而对Linux中的程序进行分析和调试。本文将介绍保证BPF程序安全的BPF验证器,然后以BPF程序的工具集BCC为例,分享kprobes和tracepoints类型的BPF程序的使用及程序编写示例。
在上次的内容里,我们介绍了BPF C编程环境的搭建,使用BPF C的方式编写,编译和运行BPF程序,并通过源码分析理解BPF CALL指令调用的内核辅助函数转化为字节码的过程,使用bpftool和objdump观察BPF程序字节码。而这次分享围绕使用BPF进行性能追踪
编写纯c的bpf程序主要编写或修改三个文件。第一个是编写bpfname_kern.c文件,这是需要被llvm编译为目标码而注入内核的代码。第二个是编写bpfname_user.c文件,它主要用来将目标码安全的注入内核,并通过bpf的map机制来做数据处理,是和bpfname_kern.c文件成对出现的。第三个就是修改Makefile文件,一般要修改三处,详细文中可见。最后编译生成可执行文件,就可在用户态下安全和高效的提取和处理很多内核数据。
本文主要介绍eBPF的安装clang和llvm的过程,如何编写eBPF的程序、了解eBPF的工作流程和程序的一些基本的数据类型。在安装eBPF的时候遇到的问题及解决办法
Copyright (c), linuxkerneltravel, all rights reserved. 【 陕ICP备17020329号-1 】
模板来自 Bootstrapious. 移植到 Hugo 来自 DevCows.