このプラグインはAWS ElastiCacheのMetricをCloudWatch APIを使って取得するプラグインです。
今のところ(今後memcachedについても実装予定です)、redisしか対応してない(ってか僕が所属しているプロジェクトがredisしか使ってないw)いませんが、
blackbird-elasticacheのご紹介です。
What metric does it get?
まずは、取得できるMetricの一覧からです。
Statisticsは毎度の通り、AverageとかSumとかMaxとかMinとかどの計算方法で値を取得するかです。
ElastiCacheのCloudWatchはミドルウェア自身(ここで言うと、redisかmemcachedか)のMetricと
そのミドルウェアがインストールされているホスト側のMetricが存在します。
Host Side Metrics(Called Host-level metrics by Amazon)
| Metric Name | Statistics | Detail |
|---|---|---|
| CPUUtilization | Average | CPU使用率です。KVSを使ってるとそんなに高くはならなさそうですね。 |
| SwapUsage | Average | Swapの使用率です。 |
| FreeableMemory | Average | ホスト側の利用可能なmemory容量です |
| NetworkBytesIn | Average | このホストのTraffic量(in) です。 |
| NetworkBytesOut | Average | このホストのTraffic量(out) です。 |
about SwapUsage and FreeableMemory
フルマネージドとかいいながら、ElastiCacheに関しては結構redisを直に使っている印象があります。
FreeableMemoryとSwapUsageは特に気をつけたい項目なんですが、
フルマネージドという言葉に乗っかって、がんがんKeyを追加していると以外に多くのMemoryを消費していることがあります。
KVSなのでMemoryは極限まで使用していいかとは思うのですが、Swapしていると非常に危険です。
僕が経験した内容で恐縮なんですが、特定の時間だけやけにredisのresponseが遅いって問題があって、
結果としては書き込みすぎて、bgsaveするタイミングでswap inしてたせいでswapしている時間帯だけ
超遅くなってました。そこでSwapUsageを定期的に取得しておくってのは以外に大事かもと思います。
Redis Metrics
| Metric Name | Statistics | Detail |
|---|---|---|
| CurrConnections | Average, Maximum | 現在のconnection数。max_connectionsにあたっていないか注意!! |
| Evictions | Average, Maximum | LRUの期限前にevictionされたvalueの数 |
| Reclaimed | Average, Maximum | すべてのLRUの期限切れと、memoryの上限数に達して削除されたvalueの合計 |
| NewConnections | Average, Maximum | 取得時間間隔内にacceptされたconnection数 |
| BytesUsedForCached | Maximum | redisによってallocateされたメモリ量 |
| CacheHits | Average, Maximum | cacheとしてhitした回数 |
| CacheMisses | Average, Maximum | cacheとしてmissした回数 |
| LepricationLag | Average, Maximum | read replicaの遅延してる秒(Only read reolica) |
| GetTypeCmds | Maximum | Get系クエリの合計数 |
| SetTypeCmds | Maximum | Set系クエリの合計数 |
| KeyBasedCmds | Maximum | - |
| StringBasedCmds | Maximum | - |
| HashBasedCmds | Maximum | - |
| ListBasedCmds | Maximum | - |
| SetBasedCmds | Maximum | - |
| SortedSetBasedCmds | Maximum | - |
about Evictions and Reclaimed
Evictionsはmaxmemoryの上限にあたって、expireよりも先に削除されたKeyの数です。
対してReclaimedは削除されたValueの数の合計です。
なので、Reclaimed - Evictionsの数が大きくなるとホスト側のmemoryが足りてないか、無駄なobjectがいっぱい入ってるかのどっちかです。
Zabbix Template
Items
上記のCloudWatch APIで取得できる値のみです。(急ごしらえですみません。)
Graphs
グラフは以下のものがあって、一部おもしろそうなグラフの描画だけキャプチャしてます。(通常の折れ線グラフや要素がひとつだけのものは省略でござる)
CPU Utilization
ホスト側のCPU使用率です。
Memory Usage
ホスト側のFreeable MemoryとRedis側のUsed Memoryを積み上げてます。

Network Traffic
Cache Hits/Miss
CacheのHitsとMissesの積み上げグラフです。
Current Items
現在のアイテム(KeyとValueのセット)数です。
Evictions
Evictionsされたアイテムの数です。
Reclaimed
Reclaimedなアイテムの数です。
New Connections
単位時間あたりに張られたConnectionの数です。
CMDs
まとめ
このプラグインはあくまでCloudWatchのMetricを取ってますが、ElastiCacheは素のredisや素のmemcachedなので、blackbird-redisやblackbird-memcachedの方が直接いろんな値を見れていいかもしれません。どちらかというと、両方のプラグインを使っておいしいどこどりする方がいいかも(ってか僕がそれやりたいですね)。

