Amazon Web Services ブログ

EC2 で Grafana をセットアップして Amazon Managed Service for Prometheus のメトリクスをクエリする

最近ローンチされた Amazon Managed Service for Prometheus (AMP) は、Prometheus メトリクスを取り込み、クエリ、保存するための、可用性の高いセキュアな環境を提供します。Amazon Managed Service for Grafana (AMG) 、セルフホスト型の Grafana サーバー、または HTTP API を使用して AMP 環境からメトリクスをクエリできます。

この記事では、Amazon Elastic Compute Cloud (Amazon EC2) でセルフホスト型の Grafana サーバーを構成し、AMPデータソースからダッシュボードを作成する方法を紹介します。

概要

環境をセットアップするには、以下の手順に従います。

  • Amazon EC2 に Grafana Enterprise サーバーをインストールする
  • Grafana(v7.3.5 以降)に組み込まれた AWS SDK を使った SigV4 認証を有効にする
  • Grafana サーバーに外部からアクセスするための Application Load Balancer (ALB) を設定する
  • SigV4認証を使用して、GrafanaのデータソースとしてAMPを追加する
  • AMPからメトリクスをクエリし、セットアップが期待どおりに機能することを確認する

EC2 に Grafana Enterprise サーバーをインストールする

はじめに、ご自身のアカウントで EC2 コンソールにログインします。

次に、Amazon Linux 2 Amazon マシンイメージ (AMI) ベースの EC2 インスタンスを作成し、管理ポリシー arn:aws:iam::aws:policy/AmazonPrometheusQueryAccess がアタッチされている IAM ロールを割り当てます。カスタムポリシーを使用する場合は、以下の権限をポリシーに付与します。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "aps:GetLabels",
                "aps:GetMetricMetadata",
                "aps:GetSeries",
                "aps:QueryMetrics"
            ],
            "Effect": "Allow",
            "Resource": "*"
        }
    ]
}

AWS CloudShell または macOS/Linux/Windows のターミナルを使って EC2 コンソール にログインします。

オプション 1: .tar.gz ファイルを使ってインストールする。以下のコマンドを実行して、Grafana サーバーのバイナリをダウンロードして展開します。Grafanaのドキュメント の手順に従っています。

wget https://dl.grafana.com/enterprise/release/grafana-enterprise-7.3.6.linux-amd64.tar.gz
tar -zxvf grafana-enterprise-7.3.6.linux-amd64.tar.gz

インストールされている Grafana バージョンの名前のディレクトリが表示されるはずです。バージョン7.3.6の Grafana をインストールするので、EC2 インスタンスに grafana-7.3.6 という名前のディレクトリが表示されます。

オプション 2: YUM リポジトリを使ってインストールする。オプションで、Grafana のドキュメント からの手順に従って、Grafana サーバーを systemd プロセスとしてインストールすることもできます。

インストール後、次のような画面となっているはずです。

Grafana (v7.3.5 以降) に組み込まれている AWS SDK を使った SigV4 認証を有効にする

前の手順でオプション1を使用した場合は、必要な環境変数を設定するために以下のコマンドを実行します。

export AWS_SDK_LOAD_CONFIG=true
export GF_AUTH_SIGV4_AUTH_ENABLED=true

次に、以下のコマンドを実行してGrafanaサーバーを起動します。(訳注: コマンドを実行する前に grafana-7.3.6 ディレクトリの中に移動してください)。

./bin/grafana-server web

オプション2を使用して Grafana をインストールした場合は、systemd を使用してサーバーを起動することができます。その前に、次のコマンドを実行して SigV4 認証を有効にするために必要な環境変数を設定します。

sudo systemctl edit grafana-server

このステップではviエディタが開くので、そこで以下の設定を貼り付ける必要があります。ファイルを保存し、エディタを終了します。

[Service]
Environment="GF_AUTH_SIGV4_AUTH_ENABLED=true"
Environment="AWS_SDK_LOAD_CONFIG=true"

Grafana サーバーを起動するには、次のコマンドを実行します。

sudo systemctl start grafana-server

次のコマンドを実行して、サーバーが期待通りに実行されていることを確認してください。

sudo systemctl status grafana-server

サーバーが正常に起動したことを示す以下のような画面が表示されるはずです。

これでGrafana サーバーが動きました。稼働を確認するには、以下のコマンドを実行します。応答が表示されるはずです。

curl http://localhost:3000 -L

外部から Grafana サーバーにアクセスするために ALB をセットアップする

ベストプラクティスに則るため、EC2 インスタンスの3000番ポートへ HTTP リクエストを転送するためのALB を作成します。3000番ポートはGrafanaのデフォルトポートです。

SigV4認証を使用してGrafanaのデータソースとしてAMPを追加する

ALB のURLから Grafana にログインします。デフォルトの認証情報である admin/admin を入力してログインします。

ログイン後、設定 から データソース の画面に移動します。

データソースの追加 を選択し、以下に示すようにリストから Prometheus を選択します。

次に、 api/v1/query の部分を除いた AMP エンドポイントのクエリ URL (AMP ワークスペースの 概要 タブにあります) を HTTP セクションにある URL フィールドに貼り付けます (例えば、 https://aps-workspaces.us-west-2.amazonaws.com/workspaces/ws-3aa5f57b-yy11-xx00-12ab-ea86005d6dd7/ というようになります) 。認証セクションでは SigV4 認証を有効にする必要があります。

また、Sigv4 認証詳細 セクションの 認証プロバイダーで AWS SDK デフォルトを、デフォルトリージョンで先ほどAMPワークスペースを作成した AWS リージョンを選択していることを確認してください。詳細は、以下のスクリーンショットを参照してください。

次に、Save & Test を選択します。以下に示すように、「データソースが動作しています」という緑色のバナーが見えるはずです。

設定を確認するためにAMPからメトリクスをクエリする

次に、左側のナビゲーションバーから + を選択して、新しいダッシュボードを作成します。

それから、新しいパネルを追加し、先ほど設定した新しい AMP データソースを選択します。

メトリクスのテキストボックスにシンプルな PromQL クエリを書くことができます。スクリーンショットに示すように、パネルにメトリクスが表示されるでしょう。

まとめ

この記事では、Amazon Managed Service for Prometheus のワークスペースに接続するためにEC2上にセルフホスト型の Grafana サーバーを設定する方法をご紹介しました。AWS では、Amazon Managed Service for Grafana も提供しています。AWS Identity and Access Management (IAM)AWS Single Sign-On (AWS SSO)Amazon Simple Notification Service (Amazon SNS) などのAWS サービスとネイティブに統合された可用性の高いセキュアなフルマネージドサービスです。それらのサービスを始めるには、AWS Management & Governance Blog のブログ記事 “Amazon Managed Service for Grafana – Getting started” (訳注: 日本語版はこちら) をご覧ください。

Imaya Kumar Jagannathan

Imaya は Amazon CloudWatch、 AWS X-Ray、 Amazon Managed Service for Prometheus、 Amazon Managed Service for Grafana and AWS Distro for Open Telemetry を含むAWSのオブザーバビリティツールにフォーカスしたシニアソリューションアーキテクトです。彼はモニタリングとオブザーバビリティに情熱を注ぎ、アプリケーションの開発とアーキテクチャに強力なバックグラウンドを持っています。彼は分散システムが好きで、マイクロサービスのアーキテクチャ設計について話すことを楽しんでいます。彼はコンテナとサーバーレス技術を使って動かす C# でのプログラミングが大好きです。

翻訳はソリューションアーキテクトの 藤嶋 が担当しました。原文はこちらです。