BCC – 用于 Linux 性能监控、网络等的动态跟踪工具BCC – 用于 Linux 性能监控、网络等的动态跟踪工具BCC – 用于 Linux 性能监控、网络等的动态跟踪工具BCC – 用于 Linux 性能监控、网络等的动态跟踪工具
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

BCC – 用于 Linux 性能监控、网络等的动态跟踪工具

如果您是 Linux 用户或管理员,您可能听说过术语“BCC 工具”或“BPF 编译器集合”。 BCC 是一组功能强大的动态跟踪工具,它提供了一种简单而有效的方法来监视系统性能、网络等。在本文中,我们将通过示例讨论什么是 BCC 工具、它们的优点以及如何使用它们。

什么是密件抄送工具?

BCC(BPF Compiler Collection)是一套基于 Linux 内核中的 eBPF(扩展伯克利数据包过滤器)技术构建的动态跟踪工具。 eBPF 是一个在内核内部运行的虚拟机,可以高效灵活地跟踪系统事件,无需修改内核或重新编译。

BCC 工具旨在提供简单、用户友好的界面,以便使用 eBPF 跟踪和分析各种系统事件。它们是用 Python 和 C 编写的,可用于广泛的任务,包括系统性能监控、网络分析、安全等。

BCC 工具的优点

BCC 工具为 Linux 用户和管理员提供了许多好处。这些包括 -

低开销

BCC 工具旨在对系统性能影响最小。他们使用 eBPF 技术直接跟踪内核内部的事件,从而减少了上下文切换的需要以及与传统系统监控工具相关的其他开销。

灵活性

BCC 工具可用于多种任务,从监控系统性能到网络分析等。它们高度灵活且可定制,使其成为 Linux 用户和管理员的强大工具。

用户友好的界面

BCC 工具提供了一个简单、用户友好的界面,用于使用 eBPF 跟踪系统事件。它们易于使用,不需要内核内部或编程的专业知识。

活跃的开发社区

BCC 工具由大型开发人员社区积极开发和维护。这意味着不断添加新功能和改进,并快速解决错误。

如何使用密件抄送工具

BCC 工具可用于多种任务,包括系统性能监控、网络分析、安全等。在本节中,我们将通过示例讨论如何使用一些最常用的 BCC 工具。

BP跟踪

BPFtrace 是 eBPF 的高级跟踪语言,旨在简化 eBPF 程序的编写和读取。它提供了一个简单、用户友好的界面,用于跟踪系统事件和分析性能。

要使用 BPTFtrace,您首先需要在系统上安装它。您可以使用您的发行版的包管理器来执行此操作。例如,在 Ubuntu 上,您可以通过运行以下命令来安装 BPTFtrace -

sudo apt-get install bpftrace

安装 BPFtrace 后,您可以使用它来编写 eBPF 程序并跟踪系统事件。例如,以下 BPTFtrace 程序将在每次启动进程时打印一条消息 -

tracepoint:process:process_start
{
   printf("process %s started
", args->comm);
}

您可以将此程序保存到文件(例如“process_start.bt”)并使用以下命令运行它 -

sudo bpftrace process_start.bt

当您运行此命令时,BPTFtrace 将开始跟踪进程事件并在每次启动进程时打印一条消息。

密件抄送工具

BCC 工具为 Linux 系统提供了广泛的跟踪和监视功能。一些最常用的密件抄送工具包括 -

执行监听

execsnoop 工具跟踪系统上新进程的执行情况。它可用于监视哪些进程正在运行以及它们何时启动。要使用 execsnoop,只需运行以下命令 -

sudo execsnoop

这将开始跟踪进程执行事件并在新进程启动时打印有关新进程的信息。

开放窥探

opensnoop 工具跟踪文件系统事件,包括文件打开、关闭和读取。它可用于监视文件系统活动并跟踪性能瓶颈。要使用 opensnoop,请运行以下命令 -

sudo opensnoop

这将开始跟踪文件系统事件并在文件活动发生时打印有关文件活动的信息。

TCP追踪器

tcptracer 工具跟踪系统上的 TCP 连接,包括与远程主机及其关联端口的连接。它可用于监视网络活动并诊断网络相关问题。要使用 tcptracer,请运行以下命令 -

sudo tcptracer

这将开始跟踪 TCP 连接并在连接事件发生时打印有关连接事件的信息。

密件抄送脚本示例

BCC 工具还可用于编写更复杂的脚本来监视和分析系统性能。在本节中,我们将提供一些可用于监视 CPU 使用情况、磁盘 I/O 和网络活动的 BCC 脚本示例。

CPU使用率

以下 BCC 脚本可用于监控系统上的 CPU 使用情况 -

#!/usr/bin/python

from bcc import BPF

# load BPF program
bpf_text = """
#include <uapi/linux/ptrace.h>

int count_sched(struct pt_regs *ctx) {
   u64 ts = bpf_ktime_get_ns();
   bpf_trace_printk("Hello, world! %d\
", ts);
   return 0;
}
"""

# initialize BPF program
bpf = BPF(text=bpf_text)

# attach BPF program to sched_switch tracepoint
bpf.attach_tracepoint(tp="sched:sched_switch", fn_name="count_sched")

# print trace messages as they occur
bpf.trace_print()

每次 CPU 调度程序在系统上切换任务时,此脚本都会打印一条消息。

磁盘输入/输出

以下 BCC 脚本可用于监视系统上的磁盘 I/O 活动 -

#!/usr/bin/python

from bcc import BPF

# load BPF program
bpf_text = """
#include <uapi/linux/ptrace.h>

int count_disk_io(struct pt_regs *ctx, const char *rwflag) {
   u64 ts = bpf_ktime_get_ns();
   bpf_trace_printk("Disk I/O %s %d\
", rwflag, ts);
   return 0;
}
"""

# initialize BPF program
bpf = BPF(text=bpf_text)

# attach BPF program to blk_account_io_done tracepoint
bpf.attach_tracepoint(tp="block:block_rq_complete", fn_name="count_disk_io", ctx="R")

# print trace messages as they occur
bpf.trace_print()

每次系统上完成磁盘 I/O 操作时,此脚本都会打印一条消息。

网络活动

以下 BCC 脚本可用于监视系统上的网络活动 -

#!/usr/bin/python

from bcc import BPF

# load BPF program
bpf_text = """
#include <uapi/linux/ptrace.h>

int count_network(struct pt_regs *ctx, int protocol) {
   u64 ts = bpf_ktime_get_ns();
   bpf_trace_printk("Network %d %d\
", protocol, ts);
   return 0;
}
"""

# initialize BPF program
bpf = BPF(text=bpf_text)

# attach BPF program to tcp_v{4,6}_connect trace points
bpf.attach_tracepoint(tp="tcp_v4_connect", fn_name="count_network", ctx="R")
bpf.attach_tracepoint(tp="tcp_v6_connect", fn_name="count_network", ctx="R")


print trace messages as they occur
bpf.trace_print()

每次在系统上建立 TCP 连接时,该脚本都会打印一条消息。

除了我们提供的示例之外,BCC 工具还有许多其他用例。例如,BCC 工具可用于监视系统调用、跟踪用户级事件以及诊断内核级问题。其他一些有用的密件抄送工具包括 -

  • csysdig - 一种提供图形界面的工具,用于使用 eBPF 分析系统活动。

  • funccount - 一种计算指定函数被调用次数的工具。

  • tcpconnect - 跟踪系统上 TCP 连接的工具。

  • biosnoop - 一种在 BIOS 级别跟踪块 I/O 操作的工具。

  • syncsnoop - 跟踪系统上同步事件的工具。

BCC工具还可以与其他系统监控工具(例如prometheus、grafana和nagios)结合使用,以提供更全面的系统性能视图。

还值得注意的是,BCC 工具正在由社区不断开发和改进,因此会定期添加新的特性和功能。因此,保持 BCC 工具处于最新状态以利用最新改进非常重要。

结论

总之,BCC 工具提供了一组强大的动态跟踪工具,用于监视和分析 Linux 系统上的系统性能、网络等。它们提供用户友好的界面、低开销和高灵活性,使其成为 Linux 用户和管理员的必备工具。无论您是系统管理员、开发人员还是安全分析师,BCC 工具都可以帮助您深入了解系统并快速有效地诊断性能问题。因此,如果您还没有尝试过 BCC 工具,看看它们如何为您和您的 Linux 系统带来好处。

©2015-2025 艾丽卡 support@alaica.com