[アップデート] ElastiCache for RedisのスローログをCloudWatch LogsやKinesis Data Firehoseにパブリッシュできるようになりました!
コンサル部のとばち(@toda_kk)です。
表題の通り、ElastiCache for Redisの機能としてスローログをパブリッシュできるようになりました。
スローログを確認したい場合、これまではredis-cli
などを使いがんばってRedisノードから直接ログを取得する必要がありました。CloudWatch LogsやKinesis Data Firehoseを通して確認できるようになったおかげで、トラブルシューティングを容易にできると期待しています。
対応バージョンは6.x系以上のみ
2021年5月現在では、Redisバージョンが6.x系以上でないとスローログが設定できないようですので、ご注意ください。
パブリッシュを有効化する
スローログのパブリッシュを有効化する手順を確認してみます。
Redisクラスターの設定
まずはRedisクラスターを作成します。このとき、スローログの有効化を選択できるようになっています。
ログの形式として、TEXTもしくはJSONを選択できます。
送信先のタイプとして、今回はCloudWatch Logsを選択してみます。ここではパブリッシュ先のロググループを指定します。
パラメーターの指定
また、パラメーターグループでスローログに関わる設定値を指定することができます。
具体的にはslowlog-log-slower-than
とslowlog-max-len
が該当し、デフォルト値は下記のようになっています。
- slowlog-log-slower-than: 10000
- slowlog-max-len: 128
ここで前者の設定は、指定した値以上の時間がかかった操作をスローログとして出力するという項目になっています。注意が必要なのは、この値の単位はマイクロ秒です。
この値に 1 を設定しておくことで、実質的に全ての操作をスローログに出力することができます。
スローログの確認
実際に出力されるログをCloudWatch Logsから確認してみます。
まずは試しにredis-cli
を使って、Redisノードにデータをsetし、確認のためgetしてみます。
$ redis-cli -h test-redis.00xxxx.xx.0001.apne1.cache.amazonaws.com test-redis.00xxxx.xx.0001.apne1.cache.amazonaws.com:6379> set key "value" OK test-redis.00xxxx.xx.0001.apne1.cache.amazonaws.com:6379> get key "value"
続いて、Redisクラスター作成時に指定していたCloudWatch Logsのロググループを確認します。
set/getの操作がスローログとして出力されていることが確認できます。
トラブルシューティングが容易に
Webアプリケーションを運用する上で、アプリケーションレイヤーのキャッシュ基盤としてElastiCache for Redisを選択することはよくある構成だと思います。
しかし、何気なくRedisを使っていると、メトリクスの異常値を監視できても原因がよくわからないままになってしまうといったこともしばしばあります。また、Redisに知見がない場合はトラブルシューティングのノウハウがなく運用に不安を抱えるケースもあるかと思われます。
今回のアップデートにより、スローログを簡単に確認できるようになったことで運用上の不安解消や効率化が期待できるのではないかと思います。
以上、コンサル部のとばち(@toda_kk)でした。