CnOps 智能运维与可观测社区
首页开源项目实践文章视频课程常见问答开发者工具STAROps 专题
导航菜单
首页开源项目实践文章视频课程常见问答开发者工具STAROps 专题

CnOps 智能运维与可观测社区

愿景

CnOps 智能运维与可观测社区是一个以"智能运维与可观测"为核心的开放、包容、分享的技术社区,旨在聚集运维专家、开发者和爱好者,共同探讨、学习和分享可观测最佳实践与最新技术,与众多技术社区合作互动,共同探讨交叉领域的技术挑战,推动可观测领域的创新与进步。

内容社区

  • 实践文章
  • 视频课程
  • 开源项目
  • 常见问答
  • 开发者工具

友情链接

  • Prometheus
  • Grafana Lab
  • OpenTelemetry
  • LoongCollector

关注我们

阿里云云原生公众号阿里云云原生
阿里云可观测公众号阿里云可观测

Copyright © 2026 CnOps 社区. All rights reserved.

首页/开源项目/LoongCollector/GO Profile
文档目录
概览版本管理
什么是输入插件
脚本执行数据【Debug】文本日志【示例】MetricInput主机Meta数据【Debug】Mock数据-Metric主机监控数据MySQL Binlog容器标准输出GO ProfileGPU数据HTTP数据【示例】ServiceInputJournal数据KafkaKubernetes元信息采集【Debug】Mock数据-ServiceSqlServer 查询数据OTLP数据PostgreSQL 查询数据收集 SNMP 协议机器信息Syslog数据

LoongCollector

GO Profile

servicegoprofile input插件可以采集Golang pprof 性能数据。 推荐版本:iLogtail v1.7.1 及以上 | 参数 | 类型,默认值 | 说明 |...

GO Profile

简介

service_go_profile input插件可以采集Golang pprof 性能数据。

版本说明

  • 推荐版本:iLogtail v1.7.1 及以上

配置参数

全局参数

参数 类型,默认值 说明
Mode string,无默认值(必填) 工作类型,目前支持host与kubernets 2种环境工作。
Config object,无默认值(必填) 详见不同工作模式子配置。
Interval int,10 抓取性能数据间隔,单位秒
Timeout int,15 抓取性能数据超时时间,单位秒
BodyLimitSize int,10240 抓取性能数据Body最大上限,单位KB
EnabledProfiles []string,["cpu", "mem", "goroutines", "mutex", "block"] 抓取性能数据类型。
Labels map[string]string,{} 性能数据全局追加标签。

host模式子配置

对于静态host模式,需要指定service标签标明归属服务。

  • 子配置
参数 类型,默认值 说明
Addresses []Address,无默认值(必填) Address Object 数组
  • Address 配置
参数 类型,默认值 说明
Host string,无默认值(必填) 实例地址
Port int,无默认值(必填) 实例端口
InstanceLabels map[string]string,{} 具体实例性能数据追加标签

kubernetes模式子配置

待采集容器需要先声明ILOGTAIL_PROFILE_PORT={PORT} 环境变量,其后通过下述配置二次过滤。

参数 类型 是否必选 说明
IncludeContainerLabel Map,其中LabelKey和LabelValue为String类型 否

容器Label白名单,用于指定待采集的容器。默认为空,表示采集所有容器。如果您要设置容器Label白名单,那么LabelKey必填,LabelValue可选填。

  • 如果LabelValue为空,则容器Label中包含LabelKey的容器都匹配。
  • 如果LabelValue不为空,则容器Label中包含LabelKey=LabelValue的容器才匹配。

    LabelValue默认为字符串匹配,即只有LabelValue和容器Label的值完全相同才会匹配。如果该值以^开头并且以$结尾,则为正则匹配。例如设置LabelKey为io.kubernetes.container.name,设置LabelValue为^(nginx|cube)$,表示可匹配名为nginx、cube的容器。

多个白名单之间为或关系,即只要容器Label满足任一白名单即可匹配。

ExcludeContainerLabel Map,其中LabelKey和LabelValue为String类型 否

容器Label黑名单,用于排除不采集的容器。默认为空,表示不排除任何容器。如果您要设置容器Label黑名单,那么LabelKey必填,LabelValue可选填。

  • 如果LabelValue为空,则容器Label中包含LabelKey的容器都将被排除。
  • 如果LabelValue不为空,则容器Label中包含LabelKey=LabelValue的容器才会被排除。

    LabelValue默认为字符串匹配,即只有LabelValue和容器Label的值完全相同才会匹配。如果该值以^开头并且以$结尾,则为正则匹配。例如设置LabelKey为io.kubernetes.container.name,设置LabelValue为^(nginx|cube)$,表示可匹配名为nginx、cube的容器。

多个黑名单之间为或关系,即只要容器Label满足任一黑名单对即可被排除。

IncludeEnv Map,其中EnvKey和EnvValue为String类型 否

设环境变量白名单,用于指定待采集的容器。默认为空,表示采集所有容器。如果您要设置环境变量白名单,那么EnvKey必填,EnvValue可选填。

  • 如果EnvValue为空,则容器环境变量中包含EnvKey的容器都匹配。
  • 如果EnvValue不为空,则容器环境变量中包含EnvKey=EnvValue的容器才匹配。

    EnvValue默认为字符串匹配,即只有EnvValue和环境变量的值完全相同才会匹配。如果该值以^开头并且以$结尾,则为正则匹配,例如设置EnvKey为NGINX_SERVICE_PORT,设置EnvValue为^(80|6379)$,表示可匹配服务端口为80、6379的容器。

多个白名单之间为或关系,即只要容器的环境变量满足任一键值对即可匹配。

ExcludeEnv Map,其中EnvKey和EnvValue为String类型 否

环境变量黑名单,用于排除不采集的容器。默认为空,表示不排除任何容器。如果您要设置环境变量黑名单,那么EnvKey必填,EnvValue可选填。

  • 如果EnvValue为空,则容器环境变量中包含EnvKey的容器的日志都将被排除。
  • 如果EnvValue不为空,则容器环境变量中包含EnvKey=EnvValue的容器才会被排除。

    EnvValue默认为字符串匹配,即只有EnvValue和环境变量的值完全相同才会匹配。如果该值以^开头并且以$结尾,则为正则匹配,例如设置EnvKey为NGINX_SERVICE_PORT,设置EnvValue为^(80|6379)$,表示可匹配服务端口为80、6379的容器。

多个黑名单之间为或关系,即只要容器的环境变量满足任一键值对即可被排除。

IncludeK8sLabel Map,其中LabelKey和LabelValue为String类型 否

通过Kubernetes Label(定义在template.metadata中)白名单指定待采集的容器。如果您要设置Kubernetes Label白名单,那么LabelKey必填,LabelValue可选填。

  • 如果LabelValue为空,则Kubernetes Label中包含LabelKey的容器都匹配。
  • 如果LabelValue不为空,则Kubernetes Label中包含LabelKey=LabelValue的容器才匹配。

    LabelValue默认为字符串匹配,即只有LabelValue和Kubernetes Label的值完全相同才会匹配。如果该值以^开头并且以$结尾,则为正则匹配。例如设置LabelKey为app,设置LabelValue为^(test1|test2)$,表示匹配Kubernetes Label中包含app:test1、app:test2的容器。

多个白名单之间为或关系,即只要Kubernetes Label满足任一白名单即可匹配。

ExcludeK8sLabel Map,其中LabelKey和LabelValue为String类型 否

通过Kubernetes Label(定义在template.metadata中)黑名单排除不采集的容器。如果您要设置Kubernetes Label黑名单,那么LabelKey必填,LabelValue可选填。

  • 如果LabelValue为空,则Kubernetes Label中包含LabelKey的容器都被排除。
  • 如果LabelValue不为空,则Kubernetes Label中包含LabelKey=LabelValue的容器才会被排除。

    LabelValue默认为字符串匹配,即只有LabelValue和Kubernetes Label的值完全相同才会匹配。如果该值以^开头并且以$结尾,则为正则匹配。例如设置LabelKey为app,设置LabelValue为^(test1|test2)$,表示匹配Kubernetes Label中包含app:test1、app:test2的容器。

多个黑名单之间为或关系,即只要Kubernetes Label满足任一黑名单对即可被排除。

K8sNamespaceRegex string 否 通过Namespace名称指定采集的容器,支持正则匹配。例如设置为^(default|nginx)$,表示匹配nginx命名空间、default命名空间下的所有容器。
K8sPodRegex string 否 通过Pod名称指定待采集的容器,支持正则匹配。例如设置为^(nginx-log-demo.*)$,表示匹配以nginx-log-demo开头的Pod下的所有容器。
K8sContainerRegex string 否 通过容器名称指定待采集的容器(Kubernetes容器名称是定义在spec.containers中),支持正则匹配。例如设置为^(container-test)$,表示匹配所有名为container-test的容器。
ExternalK8sLabelTag Map,其中LabelKey和LabelValue为String类型 否

设置Kubernetes Label(定义在template.metadata中)标签后,LoongCollector 将在性能数据中新增 Kubernetes Label 相关字段。

例如设置 LabelKey 为 app,LabelValue 为 k8s_label_app,当 Pod 中包含 Label app=serviceA 时,会将该信息添加到性能数据中,即添加字段 k8s_label_app: serviceA;若不包含名为 app 的 label,则添加空字段 k8s_label_app: 。

ExternalEnvTag Map,其中EnvKey和EnvValue为String类型 否

设置容器环境变量性能数据标签后,LoongCollector 将在性能数据中新增容器环境变量相关字段。

例如设置 EnvKey 为 VERSION,EnvValue 为 env_version,当容器中包含环境变量 VERSION=v1.0.0 时,会将该信息以 tag 形式添加到性能数据中,即添加字段 env_version: v1.0.0;若不包含名为 VERSION 的环境变量,则添加空字段 env_version: 。

样例

采集host模式性能数据

  • 配置样例
    inputs:
      - Type: service_go_profile
        Mode: host
        Labels:
          global: outer
          service: service
        Config:
          Addresses:
            - Host: "127.0.0.1"
              Port: 18689
              InstanceLabels:
                service: inner
  • 采集结果
2023-04-03 14:04:52 [INF] [flusher_stdout.go:120] [Flush] [1.0#PluginProject_0##Config0,PluginLogstore_0]       {"name":"github.com/denisenkom/go-mssqldb/internal/cp.init /Users/evan/go/pkg/mod/github.com/denisenkom/go-mssqldb@v0.12.2/internal/cp/cp950.go","stack":"runtime.doInit /usr/local/go/src/runtime/proc.go\nruntime.doInit /usr/local/go/src/runtime/proc.go\nruntime.doInit /usr/local/go/src/runtime/proc.go\nruntime.doInit /usr/local/go/src/runtime/proc.go\nruntime.doInit /usr/local/go/src/runtime/proc.go\nruntime.main /usr/local/go/src/runtime/proc.go","stackID":"c4bbfc9dff64151d","language":"go","type":"profile_mem","dataType":"CallStack","durationNs":"0","profileID":"f6a443c0-cca0-45ac-b50a-b1e25a48fb74","labels":"{\"__name__\":\"service\",\"global\":\"outer\",\"instance\":\"inner\",\"job\":\"1_0_pluginproject_0__config0\"}","units":"bytes","valueTypes":"inuse_space","aggTypes":"sum","val":"1615794.00","__time__":"1680501892"}:  

采集kubernets模式性能数据

  • 配置样例
    inputs:
      - Type: service_go_profile
        Mode: kubernetes
        Config:
          IncludeK8sLabel:
            app: golang-pull
        Labels:
          global: outer
  • 采集结果
2023-04-03 06:07:13 [INF] [flusher_stdout.go:120] [Flush] [1.0#PluginProject_0##Config0,PluginLogstore_0]       {"name":"runtime.memclrNoHeapPointers /usr/local/go/src/runtime/memclr_amd64.s","stack":"runtime.mallocgc /usr/local/go/src/runtime/malloc.go\nruntime.makeslice /usr/local/go/src/runtime/slice.go\nmain.memNormal /output/main.go\nmain.main.func1 /output/main.go","stackID":"36108813ff189cc4","language":"go","type":"profile_cpu","dataType":"CallStack","durationNs":"10000045532","profileID":"7bb6291c-b358-43fa-888a-dec7676552e4","labels":"{\"__name__\":\"golang-pull\",\"container\":\"golang-pull\",\"instance\":\"10.175.2.230:8080\",\"job\":\"1_0_pluginproject_0__config0\",\"label\":\"outer\",\"namespace\":\"profile\",\"pod\":\"golang-pull-6b946f8f6c-vhv9t\"}","units":"nanoseconds","valueTypes":"cpu","aggTypes":"sum","val":"20000000.00","__time__":"1680502023"}:

文章大纲