ElastiCache for Redis キャッシュクラスターで Redis Slow ログをオンにしたい。どうすればよいですか。
簡単な説明
Redis Slow ログ機能は、指定された期間を超えるクエリをログに記録します。低速ログには、低速クエリを Amazon CloudWatch または Amazon Kinesis Data Firehose に記録するオプションがあります。Redis Slow ログは、特に待ち時間が長く、CPU 使用率が高い場合に、Redis データベースをデバッグおよびトレースするための優れたツールです。
コマンドが slowlog-log-slower-than パラメーターで設定された実行時間を超えると、新しいエントリが低速ログに追加されます。各ログエントリは、JSON またはテキスト形式で指定された宛先 (CloudWatch または Kineses) に配信されます。
各フォーマットの例を次に示します。
JSON
{
"CacheClusterId": "logslowxxxxmsxj",
"CacheNodeId": "0001",
"Id": 296,
"Timestamp": 1605631822,
"Duration (us)": 0,
"Command": "GET ... (1 more arguments)",
"ClientAddress": "192.168.12.104:55452",
"ClientName": "logslowxxxxmsxj##"
}
テキスト
logslowxxxxmsxj,0001,1605631822,30,GET ... (1 more arguments),192.168.12.104:55452,logslowxxxxmsxj##
解像度
前提条件
Redis Slow ログには、Redis エンジンバージョン 6.0 以降が必要です。エンジンのバージョンが 6.0 より前の場合は、slowlog get 128 コマンドを使用して手動でスローログを取得できます。各ノードには独自の低速ログがあります。したがって、クラスター内の各ノードからログを収集する必要があります。
クラスターの作成または変更中に低速ログ機能をオンにするには、CloudWatch または Kinesis Firehose に公開するためのアクセス許可が必要です。識別およびアクセス管理ポリシーを作成し、それを責任のあるユーザーに添付して、次の権限を使用します。
Amazon CloudWatch の権限:
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"logs:CreateLogDelivery",
"logs:GetLogDelivery",
"logs:UpdateLogDelivery",
"logs:DeleteLogDelivery",
"logs:ListLogDeliveries"
],
"Resource": [
"*"
],
"Effect": "Allow",
"Sid": "ElastiCacheLogging"
},
{
"Sid": "ElastiCacheLoggingCWL",
"Action": [
"logs:PutResourcePolicy",
"logs:DescribeResourcePolicies",
"logs:DescribeLogGroups"
],
"Resource": [
"*"
],
"Effect": "Allow"
}
]
}
Amazon Kinesis Data Firehose の権限:
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"logs:CreateLogDelivery",
"logs:GetLogDelivery",
"logs:UpdateLogDelivery",
"logs:DeleteLogDelivery",
"logs:ListLogDeliveries"
],
"Resource": [
"*"
],
"Effect": "Allow",
"Sid": "ElastiCacheLogging"
},
{
"Sid": "ElastiCacheLoggingFHSLR",
"Action": [
"iam:CreateServiceLinkedRole"
],
"Resource": "*",
"Effect": "Allow"
},
{
"Sid": "ElastiCacheLoggingFH",
"Action": [
"firehose:TagDeliveryStream"
],
"Resource": "Amazon Kinesis Data Firehose delivery stream ARN",
"Effect": "Allow"
}
]
}
ElastiCache クラスターで Redis の遅いログをオンにします
前提条件を満たした後、クラスターの作成中または既存のクラスターを変更することにより、Slow ログをオンにすることができます。
AWS コンソールから Redis Slow ログをオンにする手順については、「コンソールを使用したログ配信の指定」を参照してください。
Slow ログの内容
ログの宛先を選択した後、クエリが指定された時間枠を超えると、イベントがログの宛先に記録されます。各ログイベントには、次のコンテンツが含まれます。
- CacheClusterId: キャッシュクラスターの ID。
- CacheNodeId: キャッシュノードの ID。
- Id: すべての低速ログエントリの一意のプログレッシブ識別子。
- **タイムスタンプ:**ログに記録されたコマンドが処理された Unix タイムスタンプ。
- 期間: 実行に必要な時間 (マイクロ秒単位)。
- コマンド: クライアントが使用するコマンド。例えば、foo bar を設定します。ここで、foo はキーで、bar は値です。ElastiCache for Redis は、機密データの公開を回避するために、実際のキーの名前と値を (さらに 2 つの引数) に置き換えます。
- ClientAddress: クライアントの IP アドレスとポート。
- clientName: CLIENT SETNAME コマンドで設定した場合のクライアント名。