コンテンツにスキップ

AWS OpenTelemetry Collector Operator@AWS EKSアドオン

はじめに

本サイトにつきまして、以下をご認識のほど宜しくお願いいたします。


01. アーキテクチャ

AWS OpenTelemetry Collector Operatorは、OpenTelemetry Collectorに関するカスタムリソースのOperatorである。


02. セットアップ

EKSアドオンとして

▼ OpenTelemetryによるHelmチャートの場合

OpenTelemetryによるHelmチャートの場合、KubernetesリソースでOpenTelemetry Collectorを作成することになる。

ただし、これにはAWS X-Ray exporterが含まれていないため、AWS製のコンテナイメージ (パブリックECRのpublic.ecr.aws/aws-observability/aws-otel-collector) に差し替える。

▼ AWSによるHelmチャートの場合

AWSによるHelmチャートを使用する場合、KubernetesリソースでOpenTelemetry Collectorを作成することになる。

執筆時点 (2024/01/22) では、Helmチャートがメトリクス収集の設定にしか対応していない。

▼ Terraformの場合

Terraformを使用する場合、カスタムリソースでOpenTelemetry Collectorを作成することになる。

EKSアドオンは、OpenTelemetry Collector Operatorをデプロイする。

Terraformのaws_eks_addonでEKSアドオンをインストールし、OpenTelemetry CollectorのOperatorに関するKubernetesリソースを作成する。

# AWS EKSアドオンをインストールする。
resource "aws_eks_addon" "adot" {

  cluster_name                = data.aws_eks_cluster.cluster.name
  addon_name                  = "adot"
  addon_version               = "<バージョン>"
  service_account_role_arn    = module.iam_assumable_role_open_telemetry_operator[0].iam_role_arn
  # Terraformで設定を上書きできるようにする
  resolve_conflicts_on_update = "OVERWRITE"
}

# X-Ray
resource "aws_xray_group" "environment" {

  group_name        = "foo-prd"

  filter_expression = <<EOF
(annotation.otel_resource_system_name = "foo") AND (annotation.otel_resource_environment = "prd")
EOF

  insights_configuration {
    insights_enabled = true
  }
}

OpenTelemetry Collectorのカスタムリソースを作成する。

ここでは、スパンを送信すると仮定する。

apiVersion: opentelemetry.io/v1alpha1
kind: OpenTelemetryCollector
metadata:
  name: foo-opentelemetry-collector
spec:
  mode: deployment
  serviceAccount: opentelemetry-collector
  config: |

    receivers:
      otlp:
        protocols:
          grpc:
            endpoint: <PodのIPアドレス>:4317
          http:
            endpoint: <PodのIPアドレス>:4318

    processors:
      batch:
        timeout: 5s
        send_batch_size: 50

    exporters:
      awsxray:
        region: ap-northeast-1
      datadog:
        api:
          site: datadoghq.com
          key: *****

    service:
      pipelines:
        traces:
          receivers:
            - otlp
          processors: 
            - batch
          exporters: 
            - awsxray