📚

Momento Metrics の Amazon CloudWatch 連携を試してみた

2024/01/29に公開

Momento ではマネージメントコンソールでいくつかのメトリックスが取得可能です。
https://docs.momentohq.com/ja/cache/manage/metrics_in_the_console
にその記載があります。

TPS (transactions per second)Byte count (data volume in/out of your Momento caches)Errors and successesHits and misses (hit rate)の4つです。いずれもアプリケーションおよびキャッシュの適正化に重要なメトリックスなので運用中は適宜こちらを確認することが推奨されています。ドキュメントはちゃんと日本語化されているので読んでみて下さい。

一方、アプリケーションのメトリックスとキャッシュのメトリックスは、ユーザー体験を計測するうえで切り離せない関係性にあり、まとめて一か所で管理したいという要望があります。Momentoではその機能を実現させるため、Amazon CloudWatch へのメトリクス送出に対応しています。

さっそくやってみた

まず最初にこの機能は有償プランです。商用環境でMomentoの利用を検討されている方は是非相談してみて下さい。私は公式でAmazon CloudWatch 連携の手順がなかったことから、日本語でブログを書きたい、という連絡を行い一時的に利用を許可してもらいました。

Momento側に以下の情報を提出します。
・AWS アカウントID
・リージョン
・キャッシュの名前
・Momentoアカウントに登録している管理者メールアドレス
Momento基盤からのデータ送出設定作業が行われ、作業が完了すると連絡がきます。その際以下のCloudFormationテンプレートが届きました。

{
  "AWSTemplateFormatVersion": "2010-09-09",
  "Resources": {
    "MomentoMetricsExporterIamRole": {
      "Type": "AWS::IAM::Role",
      "Properties": {
        "Description": "IAM Role that allows Momento to publish CloudWatch metrics",
        "RoleName": "MomentoMetricsExporterRole",
        "AssumeRolePolicyDocument": {
          "Version": "2012-10-17",
          "Statement": [
            {
              "Effect": "Allow",
              "Principal": {
                "AWS": "arn:aws:iam::168253909317:root"
              },
              "Action": "sts:AssumeRole"
            }
          ]
        },
        "Policies": [
          {
            "PolicyName": "PutMetricDataPermissions",
            "PolicyDocument": {
              "Version": "2012-10-17",
              "Statement": [
                {
                  "Sid": "Stmt1654124878428",
                  "Action": [
                    "cloudwatch:PutMetricData"
                  ],
                  "Effect": "Allow",
                  "Resource": "*",
                  "Condition": {
                    "StringEquals": {
                      "cloudwatch:namespace": "Momento/Metrics"
                    }
                  }
                }
              ]
            }
          }
        ]
      }
    }
  }
}

AWSアカウント "AWS": "arn:aws:iam::168253909317:root"でMomento基盤が動作しており、そこから創出されるデータを受け取るIAM Roleを作成するようです。ユーザーごとにAWSアカウントIDは異なる可能性があるので、ここは皆さん専用のものを使うようにしてください。CloudFormationで普通に実行すれば数分で完了しました。

IAM Roleでは以下のRelationがセットされています。

この状態で普通にMomento Cacheを利用するとCloudWatch Metricsにデータが流れ始めます。
通常CloudWatch Metricsは以下のようにAWSリソースが並びます。

設定済環境にはCustome namespaceでMomentoが増えています。

(Momento Cacheを使ってメトリクスを送出しないとでてこないのでまずは何か使ってみて下さい)


Bytes,Requests,Operations,Latencyが出力されています。Latencyはアプリケーションから見たキャッシュのレイテンシではなく、Momentoキャッシュ内部のレイテンシです。例えばアプリケーションとキャッシュがAZ跨ぎの場合などはこの差は大きくなっていきますので注意してください。

Momentoでは今後順次メトリクスの送出先の対応を増やしていくようです。もし必要なものがあれば連絡してみてはいかがでしょうか。

Discussion