Amazon Web Services ブログ

Amazon Managed Service for Prometheus がアラートマネージャーとルーラーで一般利用可能になりました

AWS re:Invent 2020 では、Amazon Managed Service for Prometheusプレビューを紹介しました。これは、コンテナ化されたアプリケーションの大規模なモニタリングを簡単に行えるようにする、Prometheus と互換性のあるオープンソースのモニタリングサービスです。Amazon Managed Service for Prometheus では、Prometheus クエリ言語 (PromQL) を使用して、コンテナ化されたワークロードのパフォーマンスをモニタリングできます。運用メトリクスの取り込み、ストレージ、アラート、クエリをスケールおよび保護するのに必要な基盤インフラストラクチャを管理する必要はありません。

Amazon Managed Service for Prometheus は、モニタリングニーズの拡大に合わせて自動的にスケールします。これは、複数のアベイラビリティーゾーン (AZ) にデプロイされる高可用性サービスであり、これにより、AWS のセキュリティとコンプライアンス機能が統合されます。このサービスでは、PromQL のネイティブサポートと、オープンソースコミュニティによって維持されている 150 以上の Prometheus エクスポーターから Prometheus メトリクスを取り込む機能が提供されます。

Amazon Managed Service for Prometheus では、AWS Distro for OpenTelemetry (ADOT) または Prometheus サーバーを収集エージェントとして使用している Amazon Elastic Compute Cloud (Amazon EC2)Amazon Elastic Container Service (Amazon ECS)Amazon Elastic Kubernetes Service (Amazon EKS) の各環境から Prometheus メトリクスを収集することができます。

プレビュー中に、高可用性アラートマネージャーをオープンソースの Cortex プロジェクトに提供しました。このプロジェクトは、水平方向にスケーラブルで高可用性のあるマルチテナントの長期保存を Prometheus に提供します。また、取り込まれるメトリクスサンプルの料金を最大 84% まで引き下げ、ADOT による AWS Lambda アプリケーションのメトリクスの収集をサポートしました。

2021 年 9 月 29 日、Amazon Managed Service for Prometheus の一般提供をお知らせします。アラートマネージャーからの通知の受信先として Amazon Simple Notification Service (Amazon SNS) をサポートするアラートマネージャーやルーラーなどの新機能が追加されました。E メール、ウェブフック、Slack、PagerDuty、OpsGenie、または VictorOps などの宛先と Amazon SNS を統合できます。

アラートマネージャーとルーラーの使用開始
AWS マネジメントコンソールで開始するには、ワークスペースと、1 つ以上の Prometheus サーバーからのメトリクスのストレージ、アラート、クエリ専用の論理スペースを作成するだけです。Helm を使用してこのワークスペースに Prometheus メトリクスの取り込みを設定し、それらのメトリクスをクエリできます。詳細については、Amazon Managed Service for Prometheus ユーザーガイドの「はじめに」を参照してください。

一般提供では、新しいアラートマネージャーとルール管理機能が追加されました。このサービスでは、記録ルールアラートルールの 2 種類のルールがサポートされています。これらのルールファイルはスタンドアロンの Prometheus と同じ YAML 形式で、定期的に設定して評価することができます。

一連のルールを使用してワークスペースを設定するには、[ルールの管理] で [名前空間の追加] を選択し、YAML 形式のルールファイルを選択します。

ルールファイルの例では、コンテナワークロードの CPU 使用率メトリクスを記録し、CPU 使用率が 5 分間高い場合にアラートをトリガーします。

次に、新しい Amazon SNS トピックを作成するか、アラートをルーティングする既存の SNS トピックを再利用できます。alertmanager はアラートを SNS にルーティングし、SNS はダウンストリームロケーションにルーティングします。設定されたアラートルールにより、アラートマネージャーにアラートが発行されます。アラートマネージャーは、SNS レシーバーを介してアラートの重複削除、グループ化、Amazon SNS へのルーティングを行います。アラートの E メール通知を受信する場合は、お持ちの SNS トピックの E メールサブスクリプションを設定します。

Amazon Managed Service for Prometheus に SNS トピックにメッセージを送信するアクセス権限を付与するには、送信先のトピックを選択し、アクセスポリシーブロックを追加します。

{
    "Sid": "Allow_Publish_Alarms",
    "Effect": "Allow",
    "Principal": {
        "Service": "aps.amazonaws.com"
    },
    "Action": [
        "sns:Publish",
        "sns:GetTopicAttributes"
    ],
    "Resource": "arn:aws:sns:us-east-1:123456789012:Notifyme"
}

アラートを取得するトピックがある場合は、アラートマネージャーの設定でこの SNS レシーバーを設定できます。設定ファイルの例は Prometheus と同じ形式ですが、サービスのアラートマネージャーの alertmanager_config: ブロックの下に設定を指定する必要があります。アラートマネージャーの設定の詳細については、Prometheus ガイドのアラートの設定に関するページを参照してください。

alertmanager_config:
  route:
    receiver: default
    repeat_interval: 5m
  receivers:
    name: default
    sns_configs:
      topic_arn: "arn:aws:sns:us-east-1:123456789012:Notifyme"
      sigv4:
        region: us-west-2
      attributes:
        key: severity
        value: "warning"

topic_arn を SNS 接続の設定時に作成するトピックに置き換えることができます。アラートマネージャーの設定の SNS レシーバーの詳細については、Prometheus Github ページの「Prometheus SNS レシーバー」をご覧ください。

アラートマネージャーを設定するには、アラートマネージャーを開いて [定義の追加] を選択し、YAML 形式のアラート設定ファイルを選択します。

Prometheus によってアラートが作成され、アラートマネージャーに送信されると、ListAlerts エンドポイントに到達してシステム内のすべてのアクティブなアラートを確認することで、そのアラートをクエリできます。エンドポイントに到達すると、アクティブに起動しているアラートのリストにアラートが表示されます。

$ curl https://aps-workspaces.us-east-1.amazonaws.com/workspaces/ws-0123456/alertmanager/api/v2/alerts
GET /workspaces/ws-0123456/alertmanager/api/v2/alerts HTTP/1.1
Host: aps-workspaces.us-east-1.amazonaws.com
X-Amz-Date: 20210628T171924Z
...
[
    "receivers": [
      {
        "name": "default"
      }
    ],
    "startsAt": "2021-09-24T01:37:42.393Z",
    "updatedAt": "2021-09-24T01:37:42.393Z",
    "endsAt": "2021-09-24T01:37:42.393Z",
    "status": {
      "state": "unprocessed",
    },
    "labels": {
      "severity": "warning"
    }
  }
]

通知が成功すると、SNS トピックからアラートの詳細が記載された E メールが届きます。また、AWS Lambda やその他の API、およびウェブフック受信エンドポイントによって SNS の下流で簡単に処理できるよう、JSON 形式でメッセージを出力できます。たとえば、SNS を Lambda 関数に接続して、メッセージ変換や自動化のトリガーを行うことができます。詳細については、Amazon Managed Service for Prometheus ユーザーガイドの JSON を SNS に出力するための Alertmanager の設定に関するページを参照してください。

Amazon SNS から他の通知先への送信
Amazon SNS は、E メール、ウェブフック (HTTP)、Slack、PageDuty、OpsGenie などのさまざまな送信先に接続できます。

  • ウェブフック – ウェブフックエンドポイントにメッセージを出力するように既存の SNS トピックを設定するには、まず既存のトピックへのサブスクリプションを作成します。アクティブになると、HTTP エンドポイントは SNS 通知を受信します。
  • Slack – Slack には E メールを受け入れて Slack チャンネルに転送する機能があることから、Slack の E メールとチャンネル間統合と統合するか、Lambda 関数を使用して SNS 通知を Slack に書き換えることができます。詳細については、Slack チャンネルへの E メールの転送およびSNS メッセージを Slack に変換する AWS Lambda 関数に関するページを参照してください。
  • PagerDuty – PagerDuty に送信されるペイロードをカスタマイズするには、alertmanager 定義の template_files ブロックを調整または更新して、SNS に送信されるメッセージの生成に使用されるテンプレートをカスタマイズします。

今すぐ利用可能
Amazon Managed Service for Prometheus は、2021 年 9 月 29 日から米国東部 (バージニア北部)、米国東部 (オハイオ)、米国西部 (オレゴン)、欧州 (フランクフルト)、欧州 (アイルランド)、欧州 (ストックホルム)、アジアパシフィック (シンガポール)、アジアパシフィック (シドニー)、アジアパシフィック (東京) の 9 つの AWS リージョンでご利用いただけます。

取り込み、クエリ、保存されたメトリクスに基づいて、使用した分に対してのみお支払いいただきます。AWS 無料利用枠の一部として、1 か月あたり 4000 万のメトリックスサンプルを取り込み、10 GB のメトリクスを保存できる Amazon Managed Service for Prometheus をご利用いただけます。詳細については、料金ページをご覧ください。

AWS での AWS の可観測性について知りたい場合は、「One Observability Workshop」をご覧ください。このワークショップでは、アプリケーションのモニタリングと可観測性をセットアップするために AWS が提供するさまざまなツールセットを実際に体験できます。

Amazon Managed Service for Prometheus の AWS フォーラム、または通常の AWS サポート担当者を通じてフィードバックをお寄せください。

Channy

原文はこちらです。