この記事は OpenTelemetry に入門してみるシリーズの第一回です。今後数回の記事に分けて、OpenTelemetry に入門していきます。
第一回となる本記事では、AWS Distro for OpenTelemetry (以降 ADOT) を使用して EC2 on EKS 環境のメトリクスを収集します。
事前準備
以降の節では、ADOT Operator がクラスターで利用可能となっていることを前提としています。
今回の記事の執筆環境は、以下のように ADOT Operator を導入しています。
- ADOT Operator は ADOT アドオンとして導入済み (ガイド)
- cert-manager を導入済み (ADOT アドオンの利用に必要となるため)
ADOT アドオンが利用可能である場合は、以下の様なポッドや API リソースが確認できます。
留意点
執筆時点では、ADOT アドオンは EKS バージョン 1.31 をサポートしていませんでした。(Issue | #2435 [EKS] [request]: No available versions of ADOT add-on for EKS 1.31)
そのため、本記事の執筆環境の EKS はバージョン 1.30 を利用しています。過去にも、ADOT アドオンがサポートする EKS バージョンとして、利用可能な最新の EKS バージョンが含まれない期間があったようなので、組織で EKS のバージョン管理ポリシーを定めている場合は、アドオンの利用は慎重に検討しても良いかもしれません。
メトリクスを収集する
Kubernetes のメトリクスを収集する方法はいくつかあると思いますが、本記事では Container Insights EKS Infrastructure Metrics のチュートリアルを参考に AWS Container Insigths Reciever を使用して、ノードやポッドのメトリクスを収集します。
まずは、以下の内容で adot.yaml
を作成します。
このマニフェストは、ADOT Collector を DaemonSet モードで起動させ、AWS Container Insigths Reciever により収集されたメトリクスを、Logging Exporter によりコンソールに出力するパイプラインを動かすものです。
次に、作成した adot.yaml
を適用します。
適用後、ポッドが起動したことが確認できます。
起動されたいずれかのポッドのログを確認することで、ADOT Collector により、メトリクスが収集されていることが確認できます。
おわりに
本記事では、ADOT を使用して EC2 on EKS 環境のメトリクスを収集してみました。
本記事の内容では、収集したメトリクスを Logging Exporter でコンソールに出力しているだけですが、バックエンドサービスへ連携するエクスポーターへ差し替えることで、バックエンドサービスにメトリクスを連携できるようになります。
なお、本記事の構成で ADOT Collector を動作させる場合は、Fargate ノードで動作するポッドのメトリクスは収集できません。次回は Fargate ノード上のポッドのメトリクスを収集する方法について触れてみたいと思います。