Zabbixでの簡単なmemcached監視方法を紹介します。
外部監視を使うので作業はZabbixサーバのみです。
まずはpecl-memcacheをインストール
[root@zabbix ~]# yum install php-pecl-memcache もしくは [root@zabbix ~]# pecl install memcache
どんな情報がとれるか見てみる
[root@zabbix ~]# php -r '$m=new Memcache;$m->connect("192.168.0.1");print_r($m->getstats());' Array ( [pid] => 12458 [uptime] => 1447846 [time] => 1277565342 [version] => 1.2.2 [pointer_size] => 64 [rusage_user] => 420.879016 [rusage_system] => 737.528878 [curr_items] => 23334 [total_items] => 5298808 [bytes] => 43796111 [curr_connections] => 246 [total_connections] => 94298 [connection_structures] => 319 [cmd_get] => 52581893 [cmd_set] => 5298808 [get_hits] => 47607547 [get_misses] => 4974346 [evictions] => 0 [bytes_read] => 8204429908 [bytes_written] => 38882266185 [limit_maxbytes] => 4294967296 [threads] => 4 )
取得できる情報の詳細はソース添付のドキュメントを参照してください。
http://github.com/memcached/memcached/blob/1.2.2/doc/protocol.txt
サブコマンドを使えばスラブ使用状況なども取れるみたいですね。
監視スクリプトを配置
ものすごく簡単な仕様にしました。
[root@zabbix ~]# cat /etc/zabbix/externalscripts/memcached.stats #!/usr/bin/php <?php $host = $argv[1]; $key = $argv[2]; $port = array_key_exists(3, $argv) ? $argv[3] : 11211; $memcache = new Memcache; $memcache->connect($host, $port); $stats = $memcache->getstats(); echo $stats[$key]; ?>
アイテム作成
テンプレートを作成してアイテム作ります。
秒あたりのGetリクエスト数だとこんな感じになるでしょう。
ホスト | Template_App_memcached |
説明 | Memcached Get Requets / Sec |
タイプ | 外部チェック |
キー | memcached.stats[cmd_get] |
データ型 | 数値(浮動小数) |
単位 | |
乗数を使用 | 仕様しない |
更新間隔(秒) | 300 |
例外の更新間隔(秒) | |
例外の更新間隔の作成 | |
ヒストリの保存期間(日) | 90 |
トレンドの保存期間(日) | 365 |
ステータス | 有効 |
保存時の計算 | 差分/時間 |
アプリケーションの作成 | |
アプリケーション | Memcached |
キャッシュヒット率なども計算アイテムが使えれば監視スクリプトの改修は必要ありません。
ホスト | Template_App_memcached |
説明 | Memcached Cache Hit Rate |
タイプ | 計算 |
キー | memcached.hit_rate |
条件式 | 100 * last("memcached_stats[get_hits]") / last("memcached_stats[cmd_get]") |
データ型 | 数値(浮動小数) |
単位 | % |
乗数を使用 | |
更新間隔(秒) | 300 |
例外の更新間隔(秒) | 例外の更新間隔はありません |
ヒストリの保存期間(日) | 90 |
トレンドの保存期間(日) | 365 |
ステータス | 有効 |
保存時の計算 | なし |
アプリケーション | Memcached |
テンプレは後日Wikiで公開します。