AWS OpenTelemetry Collector Operator@Amazon 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 リソースを作成する。
# Amazon 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
- https://github.com/aws-observability/observability-best-practices/blob/main/sandbox/eks-addon-adot/otel-collector-xray-cloudwatch-complete.yaml
- https://github.com/aws-observability/aws-otel-helm-charts/blob/main/charts/adot-exporter-for-eks-on-ec2/templates/adot-collector/configmap.yaml
- https://zenn.dev/nameless_gyoza/articles/aws-distro-for-opentelemetry-with-datadog-handson
- https://zenn.dev/tmrekk/articles/689cae0e9b41bd