Add or Delete Attributes

Add Attributes

You can add additional attributes to your telemetry data by leveraging the Attributes Processor. For example, if you want to insert an attribute named env with the value latest across entity, logs, metrics, and traces, follow the steps below.

  1. Create a file named add-attribute-values.yaml with the following contents:

agent:
  config:
    # 1) Define an anchor for the repeated configuration (must appear before references to it).
    attributes_custom_base: &attributes_custom_base
      actions:
        - key: 'env'
          action: insert
          value: 'latest'

    nodeLogsMetrics:
      processors:
        # 2) Use the alias instead of repeating the config
        attributes/custom: *attributes_custom_base
      service:
        pipelines:
          # node-logs-metrics
          logs:
            processors: [memory_limiter, k8sattributes, batch, resourcedetection/cloud, resource/observe_common, attributes/debug_source_pod_logs, attributes/custom]
          metrics/hostmetrics:
            processors: [memory_limiter, k8sattributes, batch, resourcedetection/cloud, resource/observe_common, attributes/debug_source_hostmetrics, attributes/custom]
          metrics/kubeletstats:
            processors: [memory_limiter, k8sattributes, batch, resourcedetection/cloud, resource/observe_common, attributes/debug_source_kubletstats_metrics, attributes/custom]
          # # Uncomment these if you are using observe-forward pipelines:
          # # observe-forward
          # traces/observe-forward:
          #   processors: [memory_limiter, k8sattributes, batch, resourcedetection/cloud, resource/observe_common, attributes/debug_source_app_traces, attributes/custom]
          # logs/observe-forward:
          #   processors: [memory_limiter, k8sattributes, batch, resourcedetection/cloud, resource/observe_common, attributes/debug_source_app_logs, attributes/custom]
          # metrics/observe-forward:
          #   processors: [memory_limiter, k8sattributes, batch, resourcedetection/cloud, resource/observe_common, attributes/debug_source_app_metrics, attributes/custom]

    clusterEvents:
      processors:
        attributes/custom: *attributes_custom_base
      service:
        pipelines:
          logs/cluster:
            processors: [memory_limiter, batch, resource/observe_common, filter/cluster, transform/cluster, attributes/custom]
          logs/objects:
            processors: [memory_limiter, batch, resource/observe_common, transform/unify, observek8sattributes, transform/object, attributes/custom]
         
    clusterMetrics:
      processors:
        attributes/custom: *attributes_custom_base
      service:
        pipelines:
          metrics/pod_metrics:
            processors: [memory_limiter, k8sattributes, batch, resource/observe_common, attributes/debug_source_pod_metrics, attributes/custom]
          metrics:
            processors: [memory_limiter, k8sattributes, batch, resource/observe_common, attributes/debug_source_cluster_metrics, attributes/custom]
 
    monitor:
      processors:
        attributes/custom: *attributes_custom_base
      service:
        pipelines:
          metrics:
            processors: [memory_limiter, k8sattributes, batch, resource/observe_common, attributes/debug_source_agent_monitor, attributes/custom]
  1. Redeploy the Observe Agent with the updated config.

helm upgrade --reuse-values observe-agent observe/agent -n observe --values add-attribute-values.yaml --version 0.37.0
  1. Restart the pods.

kubectl rollout restart deployment -n observe
kubectl rollout restart daemonset -n observe

Delete Attributes

You can also delete attributes by leveraging the Attributes Processor. For exmaple, if you want to remove kubernetes_namespace and kubernetes_pod_name attributes (under both attributes and resource.attributes), follow these steps:

  1. Create a file named delete-attribute-values.yaml with the following contents:

agent:
  config:
    # 1) Define anchors for common blocks
    attributes_metrics_base: &attributes_metrics_base
      actions:
        - key: 'kubernetes_namespace'
          action: delete
        - key: 'kubernetes_pod_name'
          action: delete

    resource_metrics_base: &resource_metrics_base
      attributes:
        - key: 'kubernetes_namespace'
          action: delete
        - key: 'kubernetes_pod_name'
          action: delete

    nodeLogsMetrics:
      processors:
        # 2) Use aliases instead of duplicating configuration
        attributes/metrics: *attributes_metrics_base
        resource/metrics: *resource_metrics_base

      service:
        pipelines:
          logs:
            processors: [memory_limiter, k8sattributes, batch, resource/observe_common, attributes/debug_source_pod_logs]
          metrics/hostmetrics:
            processors: [memory_limiter, k8sattributes, batch, resource/observe_common, attributes/debug_source_hostmetrics, attributes/metrics, resource/metrics]
          metrics/kubeletstats:
            processors: [memory_limiter, k8sattributes, batch, resource/observe_common, attributes/debug_source_kubletstats_metrics, attributes/metrics, resource/metrics]
          # # Uncomment these if you are using observe-forward pipelines:
          # # observe-forward
          # traces/observe-forward:
          #   processors: [memory_limiter, k8sattributes, batch, resource/observe_common, attributes/debug_source_app_traces]
          # logs/observe-forward:
          #   processors: [memory_limiter, k8sattributes, batch, resource/observe_common, attributes/debug_source_app_logs]
          # metrics/observe-forward:
          #   processors: [memory_limiter, k8sattributes, batch, resource/observe_common, attributes/debug_source_app_metrics, attributes/metrics, resource/metrics]

    clusterEvents:
      processors:
        attributes/metrics: *attributes_metrics_base
        resource/metrics: *resource_metrics_base

      service:
        pipelines:
          logs/cluster:
            processors: [memory_limiter, batch, resource/observe_common, filter/cluster, transform/cluster]
          logs/objects:
            processors: [memory_limiter, batch, resource/observe_common, transform/unify, observek8sattributes, transform/object]

    clusterMetrics:
      processors:
        attributes/metrics: *attributes_metrics_base
        resource/metrics: *resource_metrics_base

      service:
        pipelines:
          metrics/pod_metrics:
            processors: [memory_limiter, k8sattributes, batch, resource/observe_common, attributes/debug_source_pod_metrics, attributes/metrics, resource/metrics]
          metrics:
            processors: [memory_limiter, k8sattributes, batch, resource/observe_common, attributes/debug_source_cluster_metrics, attributes/metrics, resource/metrics]

    monitor:
      processors:
        attributes/metrics: *attributes_metrics_base
        resource/metrics: *resource_metrics_base

      service:
        pipelines:
          metrics:
            processors: [memory_limiter, k8sattributes, batch, resource/observe_common, attributes/debug_source_agent_monitor, attributes/metrics, resource/metrics]
  1. Redeploy the Observe Agent with the updated config.

helm upgrade --reuse-values observe-agent observe/agent -n observe --values delete-attribute-values.yaml --version 0.37.0
  1. Restart the pods.

kubectl rollout restart deployment -n observe
kubectl rollout restart daemonset -n observe