メインコンテンツまでスキップ

.NETのMomentoによる観測可能性

ロギング

すべてのMomento SDKの目標は、開発者がMomentoのログ出力を、アプリケーションのログの残りの部分に使用しているのと同じ宛先に向けることができるようにすることです。したがって、特定のプログラミング言語の一般的なロギングフレームワークのすべてと互換性があることを目指しています。

.NET SDKはILoggerFactoryインターフェースとILoggerインターフェースを使用しているので、適切なロギングプロバイダーを設定することで、ログを希望する宛先に書き込むことができます。

好みのロガーが ILogger インターフェイスを実装していれば、 Momento の設定オブジェクトにロガーを渡すことができます。また、あなたが書いたカスタムミドルウェアの実装 (例はこちら) でも、お好みのロガーを使うことができます。

設定が完了すると、ロギング環境に以下のようなログメッセージが表示されるはずです:

[1685649962168] INFO (CacheClient/4386 on mycomputer.local): Creating Momento CacheClient
[1685649962168] INFO (ControlClient/4386 on mycomputer.local): Creating cache: test-cache

メトリクス

メトリクスとは、システムのパフォーマンスや動作に関する定量的な情報を提供する測定値のことである。一定の間隔で取得・記録される数値であり、システムの傾向やパターンを理解するのに役立つ統計データを提供する。

特にMomentoの場合、リクエストの数、時間、リクエストやレスポンスのサイズ、失敗率など、クライアント側のメトリクスを取得したい場合があります。

これらのメトリクスを出力する最も簡単な方法は、ExperimentalMetricsMiddlewareクラスのいずれかを使用することです。これらのクラスはJSON形式でメトリクスを出力します:

(Momento: _ExperimentalMetricsLoggingMiddleware):
{
"momento": {
"numActiveRequestsAtStart": 1,
"numActiveRequestsAtFinish": 1,
"requestType": "_GetRequest",
"status": 0,
"startTime": 1697663118489,
"requestBodyTime": 1697663118489,
"endTime": 1697663118492,
"duration": 3,
"requestSize": 32,
"responseSize": 2,
"connectionID": "0"
}
}

将来のリリースでは、このフォーマットが安定したとみなされた時点で、このクラスは Experimental という接頭辞を取り除いた名前に変更される予定です。利用可能なミドルウェア・クラスは2つあります:

  • ExperimentalMetricsLoggingMiddleware`:選択したロガーにメトリクスを出力します。警告: リクエスト量に応じて、このミドルウェアは大量のログを出力します。ローカルディスクに直接ログを書き込む場合は、ディスクの使用量に注意し、logrotateのようなツールでログのローテーション/圧縮を有効にしてください。
  • ExperimentalMetricsCsvMiddleware`:メトリクスをCSVファイルに出力します。警告: このミドルウェアを有効にすると、ちょっとしたパフォーマンス上の影響があるかもしれません。リクエスト量によっては、CSVファイルのサイズがすぐに大きくなる可能性があります。

ログファイルやCSVを分析したり、Momentoと共有することで、パフォーマンスの問題を診断することができます。また、ログを AWS CloudWatch Log Group に転送し、CloudWatch ダッシュボードを作成して Momento リクエストを監視することもできます。Momento メトリクスダッシュボードの起動例 とオプションのサンプルアプリケーションは、Node.js SDK で利用できます。Node.jsのLambdaとFargateアプリケーションの例では、ExperimentalMetricsLoggingMiddlewareクラスとCloudWatchメトリックフィルターを利用して、下図のようなダッシュボードを生成していますが、CloudWatchダッシュボードだけをデプロイして、独自の.NETアプリケーションでグラフを生成することもできます。

An image of a CloudWatch dashboard with nine graphs populated by Momento metrics