[アップデート] ElastiCache for RedisのスローログをCloudWatch LogsやKinesis Data Firehoseにパブリッシュできるようになりました!

Amazon ElastiCache for Redisの新機能として、スローログをパブリッシュできるようになりました。トラブルシューティングが容易になり、運用の効率化が期待できます。
2021.04.27

コンサル部のとばち(@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-thanslowlog-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)でした。