このプラグインは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の方が直接いろんな値を見れていいかもしれません。どちらかというと、両方のプラグインを使っておいしいどこどりする方がいいかも(ってか僕がそれやりたいですね)。