Zabbix 3-12. Memcached 監視テンプレートの設定

Zabbix
Zabbix
スポンサーリンク

分散型メモリキャッシュシステムの Memcached が正常に起動していることを監視するためのテンプレートを作成します。PHPなどのセッション情報の保存先を Memcached に指定している場合は、Memcached が起動していないとエラーが発生しWEBサイトを表示することができません。死活監視は11211番ポートにTCP接続ができることにより確認します。また、Memcached のメモリの使用状況やキャッシュアウト回数の監視設定も行います。

Memcached のメモリの使用状況やキャッシュアウト回数は memcached-tool コマンド等で確認することができます。

$ memcached-tool localhost stats

#localhost:11211   Field       Value
         accepting_conns           1
               auth_cmds           0
             auth_errors           0
                   bytes           0
              bytes_read        1040
           bytes_written      160485
              cas_badval           0
                cas_hits           0
              cas_misses           0
               cmd_flush           0
                 cmd_get           0
                 cmd_set           0
               cmd_touch           0
             conn_yields           0
   connection_structures          11
       crawler_reclaimed           0
        curr_connections          10
              curr_items           0
               decr_hits           0
             decr_misses           0
             delete_hits           0
           delete_misses           0
       evicted_unfetched           0
               evictions           0
       expired_unfetched           0
                get_hits           0
              get_misses           0
              hash_bytes      524288
       hash_is_expanding           0
        hash_power_level          16
               incr_hits           0
             incr_misses           0
                libevent 2.0.21-stable
          limit_maxbytes    67108864
     listen_disabled_num           0
       lrutail_reflocked           0
            malloc_fails           0
                     pid         955
            pointer_size          64
               reclaimed           0
            reserved_fds          20
           rusage_system    9.026627
             rusage_user   11.601236
                 threads           4
                    time  1416032899
       total_connections         199
             total_items           0
              touch_hits           0
            touch_misses           0
                  uptime      154829
                 version      1.4.21

上の出力のように Memcached の色々な状態を確認することができます。今回はこの中から、メモリ最大容量(limit_maxbytes)、メモリ使用量(bytes)、キャッシュアウト回数(evictions)の監視設定を行います。memcached-tool コマンド出力の見方は下記のサイトを参考にさせて頂きました。

▽ Memcacheのstatsコマンド | 祈れ、そして働け ~ Ora et labora
http://d.hatena.ne.jp/tetsuyai/20111221/1324441717

Zabbixの標準では、Memcachedの状態を監視するアイテムキーはありませんので、Memcachedの状態を取得するスクリプトを作成しそれをユーザーパラメータとして登録します。

テンプレートの作成

[設定]→[テンプレート]→[テンプレートの作成]をクリックします。
zabbix-lamp-310-01

[テンプレート]タブを選択 下記を入力し「追加」をクリックすればテンプレートが作成されます。
テンプレート名:A_Template_App_Memcached グループ:A_Templates グループを作成する
zabbix-lamp-312-01


zabbix-lamp-312-02

アプリケーションの作成

[設定]→[テンプレート] 「A_Template_App_Memcached」行の「アプリケーション」をクリックします。
zabbix-lamp-312-03

「アプリケーションの作成」をクリックします。
zabbix-lamp-312-04

名前に「memcached」を入力し「追加」をクリックすればアプリケーションが作成されます。
zabbix-lamp-312-05

ポート監視アイテムの作成

まずはMemcachedの死活監視の設定です。

[設定]→[テンプレート] 「A_Template_App_Memcached」行の「アイテム」をクリックします。
zabbix-lamp-312-06

「アイテムの作成」をクリックします。
zabbix-lamp-312-07

下記を設定し「追加」をクリックすればアイテムが作成されます。
zabbix-lamp-312-08

---(設定箇所)---------------------------
名前:2040_memcached ポート監視
タイプ:シンプルチェック
キー:net.tcp.service[tcp,,11211]
更新間隔(秒):60
値のマッピングの使用:Service state(0 ⇒ Down, 1 ⇒ Up と表示されます)
アプリケーション:memcached
------------------------------

アイテムキー net.tcp.service のパラメータ

net.tcp.service[service,<ip>,<port>]

service - ssh、 ntp、ldap、smtp、ftp、http、pop、nntp、imap、tcp、https、telnetの何れか1つ
ip - Zabbixのホストの定義のIPアドレス
port - ポート番号(デフォルトでは標準のサービスポート番号が使用されます)

詳細は公式マニュアル 5 シンプルチェック | Zabbix Documentaion 2.2 を参照してください。

Memcachedの状態監視アイテム作成

Memcachedの状態を取得するスクリプトを作成しそれをユーザーパラメータとして登録します。スクリプトはPHPのmemcacheモジュールを利用して作成することにします。

以下の設定は監視される側のLAMPサーバに行います。
zabbix-lamp-311-07

memcachedの状態取得スクリプト作成

memcacheモジュールのインストール

sudo yum -y install php-pecl-memcache

適当な場所にスクリプトの保存先を作成します。

sudo mkdir /etc/zabbix/bin

memcachedの状態取得スクリプトを作成します。
sudo mkdir /etc/zabbix/bin
sudo vi /etc/zabbix/bin/memcached_status.php

#!/usr/bin/php
<?php
$key = $argv[1];
$memcache = new Memcache;
$memcache->connect('localhost', 11211);
$status = $memcache->getStats();
echo $status[$key];

作成したスクリプトのオーナーを zabbix に変更して実行権限を付けます

sudo chown zabbix:zabbix /etc/zabbix/bin/memcached_status.php
sudo chmod 700 /etc/zabbix/bin/memcached_status.php

スクリプト本体の動作確認をします。

sudo /etc/zabbix/bin/memcached_status.php limit_maxbytes
67108864

memcached-toolコマンドと同じ出力結果が表示されていればOKです。

ユーザーパラメータの登録

作成したスクリプトを Zabbixエージェントの設定ファイルにユーザーパラメーター(UserParameter)として登録します。

sudo vi /etc/zabbix/zabbix_agentd.conf

---(下記を変更)---------------------------
Include=/etc/zabbix/zabbix_agentd.d/
 ↓
# Include=/etc/zabbix/zabbix_agentd.d/

---(下記を最終行に追加)---------------------------
# Memcachedの状態監視
UserParameter=memcached.status[*],/etc/zabbix/bin/memcached_status.php "$1"

・Zabbixエージェントを再起動します。
sudo service zabbix-agent restart

ユーザーパラメータの書式は「UserParameter=<アイテムキー名>,<実行するコマンド>」になります。実行するコマンドはフルパスで指定するのがよいでしょう。

例えば今回登録したユーザーパラメータは、Zabbixサーバで「memcached.status[<キー>]」アイテムキーを実行すると、監視対象サーバ上で「/etc/zabbix/bin/memcached_status.php <キー>」コマンドが実行され出力結果をZabbixサーバに返します。

詳細は公式マニュアル 4 ユーザーパラメータ | Zabbix Documentation 2.2 をご参照ください。

動作確認

Zabbixサーバ上で zabbix_get コマンドを実行して動作確認をします。ユーザーパラメータで指定したコマンドと同じ出力結果が返ってくればOKです。

$ zabbix_get -s 172.16.1.20 -p 10050 -k memcached.status[limit_maxbytes]
67108864

$ zabbix_get -s 172.16.1.20 -p 10050 -k memcached.status[bytes]
0

$ zabbix_get -s 172.16.1.20 -p 10050 -k memcached.status[evictions]
0

アイテムの作成

[設定]→[テンプレート] 「A_Template_App_Memcached」行の「アイテム」をクリックします。
zabbix-lamp-312-09

「アイテムの作成」をクリックします。
zabbix-lamp-312-10

下記を設定し「追加」をクリックすれば Memcachedのメモリ最大容量(limit_maxbytes)監視アイテムが作成されます。
zabbix-lamp-312-11

---(設定箇所)---------------------------
名前:3020_memcached メモリ最大容量
キー:memcached.status[limit_maxbytes]
単位:B
更新間隔(秒):60
アプリケーション:memcached
------------------------------

同様にメモリ使用量(bytes)とキャッシュアウト回数(evictions)の監視アイテムを作成します。
同じようなアイテムを作成する場合は、先に作成したアイテムを複製して異なる部分のみ設定するのが便利ですよ(^^)

---(設定箇所)---------------------------
名前:3021_memcached メモリ使用量
キー:memcached.status[bytes]
単位:B
更新間隔(秒):60
アプリケーション:memcached
------------------------------

---(設定箇所)---------------------------
名前:3022_memcached キャッシュアウト回数
キー:memcached.status[evictions]
単位:Item
更新間隔(秒):60
保存時の計算:差分
アプリケーション:memcached
------------------------------
キャッシュアウト回数は Memcachedを起動してからの累積数になりますので、保存時の計算を「差分」にしておきます。

トリガーの作成

Memcachedが起動していない場合は通知するようにトリガーを設定します。

[設定]→[テンプレート] 「A_Template_App_Memcached」行の「トリガー」をクリックします。
zabbix-lamp-312-25

「トリガーの作成」をクリックします。
zabbix-lamp-312-26

下記を設定し「追加」をクリックすればトリガーが作成されます。
zabbix-lamp-312-27

---(設定箇所)---------------------------
名前:{HOST.NAME} memcached
条件式:{A_Template_App_Memcached:net.tcp.service[tcp,,11211].last()}=0
深刻度:致命的な障害
------------------------------
条件式末尾の「0」は Memcached が起動していないことを示します。

トリガーの名前にはマクロが使用できます。上の設定 {HOST.NAME} はホストの表示名がトリガー名に表示されます。

条件式は、{<テンプレート名>:<アイテムキー>.<トリガー関数>}=<値> の形式です。手入力してもかまいませんが、なかなか複雑な書式ですので、条件式の「追加」ボタンをクリックして対象のアイテムの選択と関数を選択、Nにしきい値を入力して「挿入」ボタンをクリックすれば条件式を生成してくれます。
zabbix-lamp-312-28

▽ サポートされているトリガー関数 | Zabbix Documentaion 2.2
https://www.zabbix.com/documentation/2.2/jp/manual/appendix/triggers/functions

グラフの作成

[設定]→[テンプレート] 「A_Template_App_Memcached」行の「グラフ」をクリックします。
zabbix-lamp-312-12

「グラフの作成」をクリックします。
zabbix-lamp-312-13

「グラフ」タブを選択し、アイテムの「追加」をクリックします。
zabbix-lamp-310-18

グラフに表示したいアイテムを選択し「選択」をクリックします。
zabbix-lamp-312-14

下記を設定してアイテムが追加されていることを確認し「追加」をクリックすれば memcachedメモリ使用量のグラフが作成されます。
zabbix-lamp-312-15

---(設定箇所)---------------------------
名前:memcached メモリ使用量
アイテム1:A_Template_App_Memcached: 3020_memcached メモリ最大容量
グラフの形式:破線
色:C80000
アイテム2:A_Template_App_Memcached: 3021_memcached メモリ使用量
グラフの形式:グラデーションライン
色:C80000
------------------------------

同様に memcached キャッシュアウト回数のグラフも作成します。
---(設定箇所)---------------------------
名前:memcached キャッシュアウト回数
アイテム:A_Template_App_Memcached: 3022_memcached キャッシュアウト回数
------------------------------

特に memcached キャッシュアウト回数が多い場合は、memcachedに割り当てているメモリが不足していますので、割り当てメモリを増やしてあげましょう。

割り当てメモリは memcached の設定ファイルの「CACHESIZE」で指定します。単位はMBです。

sudo vi /etc/sysconfig/memcached

CACHESIZE="64"
 ↓
CACHESIZE="1024"

・Memcachedを再起動
sudo service memcached restart

スクリーンの作成

作成したグラフをスクリーンに登録します。

[設定]→[テンプレート] 「A_Template_App_Memcached」行の「スクリーン」をクリックします。
zabbix-lamp-312-16

「スクリーンの作成」をクリックします。
zabbix-lamp-312-17

下記を設定し「追加」をクリックします。
zabbix-lamp-312-18

---(設定箇所)---------------------------
名前:memcached
列:2
行:1
----------------------------

作成したスクリーンの名前「memcached」をクリックします。
zabbix-lamp-312-19

スクリーンセル内にある「変更」をクリックします。
zabbix-lamp-312-20

スクリーンセルの設定が開きますので、グラフ名の「選択」をクリックします。
zabbix-lamp-312-21

グラフの名前「memcached メモリ使用量」をクリックします。
zabbix-lamp-312-22

グラフ名が「A_Template_App_Memcached: memcached メモリ使用量」になっていることを確認して「追加」をクリックすれば登録終了です。他の値は特に変更する必要はありませんがお好みで調整してください。
zabbix-lamp-312-23

同様に「memcached キャッシュアウト回数」のグラフも登録します。

完成したスクリーンは下のようになります。
zabbix-lamp-312-24

最後に作成した監視テンプレートの動作確認をして作業完了です。

コメント

タイトルとURLをコピーしました