Amazon Web Services ブログ
Amazon Managed Service for Prometheus を使用して EC2 環境を監視する
2021年4月16日追記:この記事は、Prometheus サーバーでの AWS Signature Version 4 サポート によって導入された変更を反映するように更新されました。
先日、Prometheus メトリクスの取り込み、クエリ、保存を行うフルマネージドでセキュアな Prometheus 互換環境を作成できるAmazon Managed Service for Prometheus (AMP) を発表しました。AWS Management & Governance の以前のブログ記事で、コンテナ化された環境を監視するためにAMPをセットアップする方法を説明しました。いくつかのクリティカルなユースケースでは、コンテナ化はずっと先のことだったり、時には不可能な場合があります。
この記事では、Amazon Elastic Compute Cloud (Amazon EC2) またはオンプレミス環境で稼働しているシステムでどのように AMP を使うのかを説明します。
セットアップ
この例では、以下のステップで説明します。
- Amazon Linux が起動している Amazon EC2 インスタンスをセットアップする
- Goで書かれたデモアプリケーションを実行し、Prometheus クライアントライブラリを使用して
/metrics
配下に Prometheus エンドポイントを作成する - AMP のワークスペースを作成する
- Prometheusサーバーを実行して、プロキシ経由でAMPにアプリケーションメトリクスをエクスポートする
- AMP ワークスペースをクエリするためにリモートのGrafana サーバーを設定する。最近発表したAmazon Managed Service for Grafana を使用して AMP をクエリすることも可能。
対応するアーキテクチャは、次のように視覚化することができます。
今回の例では、Ireland (eu-west-1) リージョンを選択しています。サービス別でサポートされている AWS リージョンを確認するには、AWS リージョンサービスリスト をご覧ください。
Amazon EC2 のセットアップ
このウォークスルーの最初のステップは、 EC2 インスタンスをセットアップすることです。そのインスタンスでアプリケーションをホストし、後で作成する AMP ワークスペースにそのメトリクスを転送します。インスタンスにはIAMロールを使用することをお勧めします。このロールには、ポリシー AmazonPrometheusRemoteWriteAccess
をアタッチして、インスタンスに最低限のアクセス許可を与えることができます。
デモアプリケーション
インスタンスが設定されたら、インスタンスにログインしてサンプルアプリケーションを実行できます。main.go
という名前のファイルを作成し、以下に示す内容を追加してください。HTTP 経由でいくつかのシステムメトリックを自動的に公開するために Prometheus http ハンドラを使用してください。Prometheus クライアントライブラリを使用して、独自のメトリクスを実装することができます。
サンプルアプリケーションを実行する前に、すべての依存関係がインストールされていることを確認しましょう。
アプリケーションは、ポート 8000
で稼働している必要があります。この段階で、アプリケーションによって公開されるすべての Prometheus メトリクスを確認できるはずです。
AMP ワークスペースを作成する
ワークスペースを作成するには、AWS コンソールで AMP にアクセスし、ワークスペースの名前を入力します。
作成後、AMP によってremote write 用の URL とクエリ用の URL が提供されます。
Prometheus サーバーを実行する
expression browser を含む Prometheus の最新安定版をインストールするには、 Prometheus Guide を参照してください。この例では、次のように Amazon Linux に Prometheus v2.26.0 をインストールします。
prometheus.yaml
という名前の新しいファイルを作成し、 remote_write
の設定を AWS コンソールの AMP ワークスペースにあるワークスペース IDで書き換えてください。(訳注: 以下の内容でprometheus.yamlを作成し、 <YOUR-WORKSPACE-ID>
をAMPワークスペースのIDに置き換えてください)
Prometheus を実行し、アプリケーションメトリクスを AMP に送信する準備がようやく整いました。
メトリクスが AMP に送られるようになりました! Prometheus サーバーのコンソールに出力が表示されるはずです。
Grafana でメトリクスを可視化する
Grafana は、 Prometheus のメトリクスを可視化するためによく使われているプラットフォームです。ローカルマシン で、 Grafana をインストール (訳注: Grafana 7.3.5、またはそれより新しい必要があります)し、AMP ワークスペースをデータソースとして設定しましょう。
ローカル環境に、ワークスペースをクエリするための次の権限またはそれ以上の権限があることを確認してください。(訳注: 必要な権限を利用可能な Access Key ID および Secret Access Key をローカル環境にご用意ください)
IAM の権限で AMP へのクエリに署名するため、Grafana を実行する前に AWS Sigv4 認証を有効にします。
Grafana にログインし、データソース設定ページ /datasources に移動して AMP ワークスペースをデータソースとして追加します。URL は末尾に /api/v1/query
をつけないようにしてください。
Sigv4 auth
を有効にして、適切なリージョンを選択して保存してください(訳注: SigV4 Auth Details
の Authentication Provider
でクレデンシャル情報の設定もしてください)。
これで、アプリケーションメトリクスが利用できるようになりました。例えば、メトリクスブラウザで scrape_duration_seconds{}
を設定してみてください。以下のような画面が表示されるはずです。
まとめ
この記事では、最近発表された Amazon Managed Service for Prometheus を使って、Amazon EC2 インスタンスを使った非コンテナ化環境でのメトリクス収集のアーキテクチャのセットアップを詳しく説明しました。EC2 インスタンス上でメトリクスの収集を自動化するために、関連するすべての依存関係を持つ AMI を事前設定するか、AWS Systems Manager を使うことができます。 Amazon Managed Service for Prometheus、 Amazon Managed Service for Grafana、そして OpenTelemetry についてはリンク先をご参照ください。
翻訳はソリューションアーキテクトの 藤嶋 が担当しました。原文はこちらです。本記事は翻訳にあたり、一部の画面キャプチャを翻訳時点の最新版に差し替えており、一部記述を追加しています。