AWS Distro for OpenTelemetry を使用したメトリクスのスクレイピング
このラボでは、すでに作成されている Amazon Managed Service for Prometheus ワークスペースにメトリクスを保存します。コンソールで確認することができます:
APS コンソールを開く
ワークスペースを表示するには、左側のコントロールパネルの All Workspaces タブをクリックします。eks-workshop で始まるワークスペースを選択すると、ルール管理やアラートマネージャーなどのワークスペース内のさまざまなタブを表示できます。
Amazon EKS クラスターからメトリクスを収集するために、OpenTelemetryCollector カスタムリソースをデプロイします。EKS クラスターで実行されている ADOT オペレーターは、このリソースの存在や変更を検出し、以下のアクションを実行します:
- Kubernetes API サーバーへの作成、更新、削除リクエストに必要なすべての接続が利用可能であることを確認します。
OpenTelemetryCollectorリソース設定でユーザーが指定した方法で ADOT コレクターインスタンスをデプロイします。
まず、ADOT コレクターに必要な権限を与えるリソースを作成しましょう。コレクターが Kubernetes API にアクセスするための権限を与える ClusterRole から始めます:
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: otel-prometheus-role
rules:
- apiGroups:
- ""
resources:
- nodes
- nodes/proxy
- services
- endpoints
- pods
verbs:
- get
- list
- watch
- apiGroups:
- extensions
resources:
- ingresses
verbs:
- get
- list
- watch
- nonResourceURLs:
- /metrics
verbs:
- get
このコア API グループ "" は、メトリクス収集のために resources の下にリストされているコア Kubernetes リソースに verbs の下で指定されたアクションを使用してアクセスする権限をロールに与えます
この拡張 API グループ extensions は、ネットワークトラフィックメトリクス収集のために verbs の下で指定されたアクションを使用してイングレスリソースにアクセスする権限をロールに与えます
nonResourceURLs は、クラスターレベルの運用メトリクス収集のために verbs の下で指定されたアクションを使用して、Kubernetes API サーバー上の /metrics エンドポイントにアクセスする権限をロールに与えます
マネージド IAM ポリシー AmazonPrometheusRemoteWriteAccess を使用して、IAM Roles for Service Accounts を通じてコレクターに必要な IAM 権限を提供します:
{"AttachedPolicies": [
{"PolicyName": "AmazonPrometheusRemoteWriteAccess",
"PolicyArn": "arn:aws:iam::aws:policy/AmazonPrometheusRemoteWriteAccess"
}
]
}
この IAM ロールは、コレクターの ServiceAccount に追加されます:
apiVersion: v1
kind: ServiceAccount
metadata:
name: adot-collector
annotations:
eks.amazonaws.com/role-arn: ${ADOT_IAM_ROLE}
リソースを作成します:
コレクターの仕様は長すぎて全てを表示できませんが、以下のように確認できます:
より理解しやすくするために、このセクションを分解してみましょう。これが OpenTelemetry コレクター設定です:
これは以下の構造を持つ OpenTelemetry パイプラインを設定しています:
- レシーバー
- Prometheus レシーバー - Prometheus エンドポイントを公開するターゲットからメトリクスをスクレイプするように設計されています
- プロセッサー
- このパイプラインには含まれていません
- エクスポーター
- Prometheus リモートライトエクスポーター - AMP のような Prometheus リモートライトエンドポイントにメトリクスを送信します
このコレクターは、1つのコレクターエージェントを実行する Deployment として構成されています:
実行中の ADOT コレクター Pod を調査することで、これを確認できます:
NAME READY STATUS RESTARTS AGE
adot-collector-6f6b8867f6-lpjb7 1/1 Running 2 11d