kakakakakku blog

Weekly Tech Blog: Keep on Learning!

Zabbix で Memcached のメトリクスを監視する

Memcached のメトリクスを Zabbix で監視できるようにしてみた.忘れないようにメモっておく.

UserParameter

以下で定義した.ポイントは grep "STAT $1 " の部分で,もし grep "$1" のように単純化してしまうと,bytes などのキーで複数行取得できてしまう.

  • STAT bytes_read
  • STAT bytes_written
  • STAT limit_maxbytes
  • STAT bytes
UserParameter=memcached.stats[*],echo "stats" | nc localhost 11211 | grep "STAT $1 " | awk '{print $$3}'

stats で取得できるキー一覧

ローカルの Vagrant 環境で実行した stats の結果を載せておく.どのキーも重要だとは思うけど,特に以下のキーはグラフで可視化できるようにした.

  • bytes ... アイテム全体のバイト数
  • evictions ... メモリ上限を超えたために削除されたアイテム数(押し出されて削除されるイメージ)
  • hits_percentage ... キーのヒット率(★独自計算項目なので後述する)
  • get_hits ... キーがヒットした累計回数
  • get_misses ... キーがヒットしなかった累計回数
  • curr_items ... 現在のアイテム数
  • curr_connections ... 現在のコネクション数
$ echo "stats" | nc localhost 11211
STAT pid 14909
STAT uptime 81610
STAT time 1459403731
STAT version 1.4.4
STAT pointer_size 64
STAT rusage_user 3.762428
STAT rusage_system 1.693742
STAT curr_connections 10
STAT total_connections 14
STAT connection_structures 11
STAT cmd_get 50
STAT cmd_set 50
STAT cmd_flush 0
STAT get_hits 50
STAT get_misses 0
STAT delete_misses 0
STAT delete_hits 0
STAT incr_misses 0
STAT incr_hits 0
STAT decr_misses 0
STAT decr_hits 0
STAT cas_misses 0
STAT cas_hits 0
STAT cas_badval 0
STAT auth_cmds 0
STAT auth_errors 0
STAT bytes_read 18852
STAT bytes_written 20853
STAT limit_maxbytes 855638016
STAT accepting_conns 1
STAT listen_disabled_num 0
STAT threads 4
STAT conn_yields 0
STAT bytes 18533
STAT curr_items 50
STAT total_items 50
STAT evictions 0
END

キーの意味

調べてて Memcached ってドキュメントが少ないなという印象を受けた.

キーの意味に関しては,GitHub の protocol.txt に定義が書かれていてここを読んだりした.

github.com

Zabbix アイテム

以下のようにアイテムを定義する.get_hits を例にしている.

項目
名前 get_hits
タイプ Zabbix エージェント
キー memcached.stats[get_hits]
データ型 数値 (整数)
データの形式 10進数

Zabbix 計算アイテム

キーのヒット率を可視化したかったため hits_percentage という計算アイテムを作った.

値としては get_hitscmd_get の値から計算している.

項目
名前 hits_percentage
タイプ 計算
キー memcached.stats[hits_percentage]
last(memcached.stats[get_hits]) / last(memcached.stats[cmd_get]) * 100
データの形式 10進数

まとめ

Memcached の状況を可視化できるようになって運用しやすくなった.

Zabbix に詳しくなくて,試行錯誤しながらメトリクスを収集してるけど,困ったときは実戦入門本を読んだりしている.

Mackerel なら

Plugin が出ているし全く同じことができそう.

github.com