EKS オブザーバビリティ : 重要なメトリクス
現状の概要
モニタリングとは、インフラストラクチャとアプリケーションの所有者が、システムの過去と現在の状態を把握し理解するための手段として定義されます。これは、定義されたメトリクスやログの収集に重点を置いています。
モニタリングは長年にわたって進化してきました。 最初は、デバッグとトラブルシューティングのためのデバッグログやダンプログから始まり、syslog や top などのコマンドラインツールを使用した基本的なモニタリングへと進化し、さらにダッシュボードでの可視化が可能になりました。 クラウドの出現と規模の拡大により、現在では過去に比べてより多くの要素を追跡しています。 業界はオブザーバビリティへとシフトしており、これはインフラストラクチャとアプリケーションの所有者が積極的にシステムのトラブルシューティングとデバッグを行うためのソリューションとして定義されています。 オブザーバビリティは、メトリクスから導き出されるパターンの分析により重点を置いています。
メトリクス、なぜ重要なのか?
メトリクスは、作成された時間順に保持される一連の数値データです。 環境内のサーバー数、ディスク使用量、1 秒あたりの処理リクエスト数、リクエストの完了までの遅延時間など、あらゆるものを追跡するために使用されます。 メトリクスは、システムのパフォーマンスを示すデータです。 小規模なクラスターでも大規模なクラスターでも、システムの健全性とパフォーマンスに関する洞察を得ることで、改善が必要な領域の特定、問題のトラブルシューティングとトレース、そしてワークロード全体のパフォーマンスと効率性の向上が可能になります。 これらの変更は、クラスターに費やす時間とリソースに影響を与え、それは直接コストに反映されます。
メトリクス収集
EKS クラスターからのメトリクス収集は、3 つのコンポーネントで構成されています:
- ソース:このガイドに記載されているようなメトリクスの発生源。
- エージェント:EKS 環境で実行されるアプリケーションで、一般的にエージェントと呼ばれ、メトリクスの監視データを収集し、2 番目のコンポーネントにプッシュします。このコンポーネントの例として、AWS Distro for OpenTelemetry (ADOT) や CloudWatch Agent があります。
- 送信先:監視データの保存と分析ソリューションで、このコ ンポーネントは通常、時系列形式のデータに最適化されたデータサービスです。このコンポーネントの例として、Amazon Managed Service for Prometheus や AWS CloudWatch があります。
注:このセクションでは、設定例は AWS Observability Accelerator の関連セクションへのリンクとなっています。これは、EKS メトリクス収集の実装に関する最新のガイダンスと例を確実に入手できるようにするためです。
マネージド型オープンソースソリューション
AWS Distro for OpenTelemetry (ADOT) は、OpenTelemetry プロジェクトのサポート対象バージョンです。これにより、ユーザーは相関のあるメトリクスとトレースを Amazon Managed Service for Prometheus や AWS Cloudwatch などの様々なモニタリングデータ収集ソリューションに送信できます。
ADOT は EKS Managed Add-ons を通じて EKS クラスターにインストールでき、メトリクス (このページに記載されているものなど) やワークロードのトレースを収集するように設定できます。
AWS は、ADOT アドオンが Amazon EKS と互換性があることを検証しており、最新のバグ修正とセキュリティパッチで定期的に更新されています。
ADOT + AMP
AWS Distro for OpenTelemetry (ADOT)、Amazon Managed Service for Prometheus (AMP)、Amazon Managed Service for Grafana (AMG) を素早く導入して実行するには、AWS Observability Accelerator のインフラストラクチャモニタリングの例を活用するのが最も簡単です。 Accelerator の例では、すぐに使えるメトリクス収集、アラートルール、Grafana ダッシュボードと共に、ツールとサービスを環境にデプロイします。
EKS Managed Add-on for ADOT のインストール、設定、運用に関する追加情報については、AWS ドキュメントを参照してください。
ソース
EKS メトリクスは、全体的なソリューションの異なるレイヤーにおいて、複数の場所から作成されます。以下の表は、重要なメトリクスのセクションで説明されているメトリクスソースをまとめたものです。
エージェント: AWS Distro for OpenTelemetry
AWS は、AWS EKS ADOT マネージドアドオンを通じて、EKS クラスターでの ADOT のインストール、設定、運用を推奨しています。このアドオンは ADOT オペレーター/コレクターのカスタムリソースモデルを利用し、クラスター上で複数の ADOT コレクターのデプロイ、設定、管理を可能にします。このアドオンのインストール、高度な設定、運用に関する詳細な情報は、このドキュメントをご確認ください。
注意: AWS EKS ADOT マネージドアドオンのウェブコンソールは、ADOT アドオンの高度な設定に使用できます。
ADOT コレクターの設定には 2 つのコンポーネントがあります。
- コレクターのデプロイメントモード(deployment、daemonset など)を含むコレクター設定。
- メトリクス収集に必要な Receivers、Processors、Exporters を含む OpenTelemetry パイプライン設定。設定スニペットの例:
config: |
extensions:
sigv4auth:
region: <YOUR_AWS_REGION>
service: "aps"
receivers:
#
# Scrape configuration for the Prometheus Receiver
# This is the same configuration used when Prometheus is installed using the community Helm chart
#
prometheus:
config:
global:
scrape_interval: 60s
scrape_timeout: 10s
scrape_configs:
- job_name: kubernetes-apiservers
bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
kubernetes_sd_configs:
- role: endpoints
relabel_configs:
- action: keep
regex: default;kubernetes;https
source_labels:
- __meta_kubernetes_namespace
- __meta_kubernetes_service_name
- __meta_kubernetes_endpoint_port_name
scheme: https
tls_config:
ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
insecure_skip_verify: true
...
...
exporters:
prometheusremotewrite:
endpoint: <YOUR AMP WRITE ENDPOINT URL>
auth:
authenticator: sigv4auth
logging:
loglevel: warn
extensions:
sigv4auth:
region: <YOUR_AWS_REGION>
service: aps
health_check:
pprof:
endpoint: :1888
zpages:
endpoint: :55679
processors:
batch/metrics:
timeout: 30s
send_batch_size: 500
service:
extensions: [pprof, zpages, health_check, sigv4auth]
pipelines:
metrics:
receivers: [prometheus]
processors: [batch/metrics]
exporters: [logging, prometheusremotewrite]
完全なベストプラクティスのコレクター設定、ADOT パイプライン設定、Prometheus スクレイプ設定は、Observability Accelerator の Helm Chart で確認できます。
出力先: Amazon Managed Service for Prometheus
ADOT コレクターパイプラインは、Prometheus Remote Write 機能を使用して AMP インスタンスにメトリクスをエクスポートします。以下は設定スニペットの例で、AMP WRITE ENDPOINT URL に注目してください。
exporters:
prometheusremotewrite:
endpoint: <YOUR AMP WRITE ENDPOINT URL>
auth:
authenticator: sigv4auth
logging:
loglevel: warn
完全なベストプラクティスのコレクター設定、ADOT パイプライン設定、Prometheus スクレイプ設定は、Observability Accelerator の Helm Chart で確認できます。
AMP の設定と使用に関するベストプラクティスはこちらをご覧ください。
関連するメトリクスとは?
メトリクスが少なかった時代は過ぎ去り、現在では逆に数百のメトリクスが利用可能です。 オブザーバビリティを重視したシステムを構築するためには、関連するメトリクスを見極めることが重要です。
このガイドでは、利用可能なメトリクスの異なるグループを概説し、インフラストラクチャとアプリケーションにオブザーバビリティを組み込む際に注目すべきメトリクスを説明します。 以下のメトリクスのリストは、ベストプラクティスに基づいて監視することをお勧めするメトリクスです。
以下のセクションに記載されているメトリクスは、AWS Observability Accelerator Grafana ダッシュボード と Kube Prometheus Stack ダッシュボード で強調されているメトリクスに追加されるものです。