跳转至

C/C++ Profiling

目前 DataKit 支持 1 种方式来采集 C/C++ profiling 数据,即 Pyroscope

Pyroscope

Pyroscope 是一款开源的持续 profiling 平台,DataKit 已经支持将其上报的 profiling 数据展示在观测云

Pyroscope 采用 C/S 架构,运行模式分为 Pyroscope AgentPyroscope Server,这两个模式均集成在一个二进制文件中,通过不同的命令行命令来展现。

这里需要的是 Pyroscope Agent 模式。DataKit 已经集成了 Pyroscope Server 功能,通过对外暴露 HTTP 接口的方式,可以接收 Pyroscope Agent 上报的 profiling 数据。

Profiling 数据流向:「Pyroscope Agent 采集 Profiling 数据 -> Datakit -> 观测云」。

前置条件

[[inputs.profile]]
  ## profile Agent endpoints register by version respectively.
  ## Endpoints can be skipped listen by remove them from the list.
  ## Default value set as below. DO NOT MODIFY THESE ENDPOINTS if not necessary.
  endpoints = ["/profiling/v1/input"]

  ## set true to enable election.
  election = true

  #  config
  [[inputs.profile.pyroscope]]
    # listen url
    url = "0.0.0.0:4040"

    # service name
    service = "pyroscope-demo"

    # app env
    env = "dev"

    # app version
    version = "0.0.0"

  [inputs.profile.pyroscope.tags]
    tag1 = "val1"
  • 安装 Pyroscope

这里以 Linux AMD64 平台为例:

wget https://dl.pyroscope.io/release/pyroscope-0.36.0-linux-amd64.tar.gz
tar -zxvf pyroscope-0.36.0-linux-amd64.tar.gz

按照上述方法获取到的是 Pyroscope 的二进制文件,直接运行就可以了,也可以放在 PATH 下。

其它平台与架构的安装方法,见下载地址

Pyroscope Agent 配置 eBPF 采集模式

Pyroscope Agent 的 eBPF 模式支持 C/C++ 程序的 profiling 采集。

  • 设置环境变量:
export PYROSCOPE_APPLICATION_NAME='my.ebpf.program{host=server-node-1,region=us-west-1,tag2=val2}'
export PYROSCOPE_SERVER_ADDRESS='http://localhost:4040/' # Datakit profile 配置的 pyroscope listen url.
export PYROSCOPE_SPY_NAME='ebpfspy'
  • 根据需要 profiling 的目标使用不同的命令:

    • profiling 正在运行的程序(以 PID 为 1000 为例):sudo -E pyroscope connect --pid 1000
    • profiling 运行指定程序(以 mongod 为例):sudo -E pyroscope exec mongod
    • profiling 整个系统:sudo -E pyroscope ebpf

查看 Profile

运行上述 profiling 命令后,Pyroscope Agent 会开始采集指定的 profiling 数据,并将数据上报给观测云。稍等几分钟后就可以在观测云空间应用性能监测 -> Profile 查看相应数据。

文档评价

文档内容是否对您有帮助? ×