You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在OpenTelemetry的K8s属性处理器中添加k8s.service.name及自定义属性

无需修改代码添加K8s属性的实现方案

1. 直接配置获取k8s.cluster.name

K8s Attributes Processor本身支持通过配置指定集群名称,无需修改代码。在处理器配置中添加cluster字段即可:

processors:
  k8sattributes:
    # 直接设置集群名称
    cluster: "your-cluster-identifier"
    # 保留原有的Pod关联、元数据提取配置
    pod_association:
      - sources:
          - from: resource_attribute
            name: k8s.pod.ip
    extract:
      metadata:
        - k8s.pod.name
        - k8s.pod.namespace
        - k8s.node.name
        # 其他需要提取的元数据项

2. 借助Transform Processor生成k8s.service.name

如果你的Pod通过标签(如app)与Service关联,可以用Transform Processor从已提取的Pod标签属性中生成k8s.service.name:

processors:
  transform:
    log_statements:
      - context: log
        statements:
          # 假设Pod的app标签对应Service名称,将其复制为k8s.service.name
          - set(attributes["k8s.service.name"], attributes["k8s.labels.app"]) where attributes["k8s.labels.app"] != nil

如果Service与Pod的关联规则不同(比如使用特定标签service-name),只需修改表达式中的标签键即可。

3. 添加自定义属性的通用方法

使用Attributes Processor可以直接插入固定值或从环境变量、现有属性派生的自定义属性:

processors:
  attributes:
    actions:
      # 添加固定值自定义属性
      - action: insert
        key: "custom.team"
        value: "devops"
      # 从环境变量提取属性(需确保Collector容器能访问该环境变量)
      - action: insert
        key: "deployment.env"
        from_env: "DEPLOYMENT_ENV"
      # 从现有属性派生新属性
      - action: insert
        key: "k8s.pod.fullname"
        value: "{{k8s.pod.namespace}}/{{k8s.pod.name}}"

串联处理器到Pipeline

将上述处理器按顺序加入日志Pipeline,确保K8s属性先提取,再做转换和自定义属性添加:

service:
  pipelines:
    logs:
      receivers: [your-log-receiver] # 替换为实际的日志接收器(如filelog、journald等)
      processors: [k8sattributes, transform, attributes]
      exporters: [your-exporter] # 替换为实际的导出器(如otlp、prometheus等)

内容的提问来源于stack exchange,提问作者Ramu Mangalarapu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 05:25:25