Zabbix 3-6. メモリ使用率 監視テンプレート設定

Zabbix
Zabbix
スポンサーリンク

メモリがどのくらい使われているのか、そのうちページキャッシュにどのくらいのメモリが使われているかを監視するためのテンプレートを作成します。メモリが不足しているとデータがあまりページキャッシュされないためディスクI/O待ちが発生したり、スワップが発生しサーバの処理能力が著しく低下してしまいます。

Linuxのページキャッシュは、一度ハードディスクなどから読み出したデータは、メモリに空きがある限りキャッシュし続けるため、メモリより10万〜100万倍遅いと言われているハードディスクのI/O負荷を減らすことができます。

メモリの使用率などは sar コマンドの「-r」オプションなどで確認することができます。

$ sar -r
05時50分01秒 kbmemfree kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit
06時00分01秒    178824    841464     82.47    159148    371460    890796     48.00
06時10分01秒    181732    838556     82.19    159252    371524    883740     47.62
06時20分01秒    179352    840936     82.42    159284    371568    889776     47.94

sar -r コマンド出力の見方

kbmemfreeキロバイト単位での空きメモリ容量
kbmemusedキロバイト単位での使用中メモリ容量。カーネル自身によって使用されるメモリについては対象外
%memusedメモリの使用率
kbbuffersカーネルによってバッファとして使用されたメモリ容量(キロバイト)
kbcachedカーネルによってデータをキャッシュするために使用されたメモリ容量(キロバイト)
kbcommit現在のワークロードに必要なメモリ容量(キロバイト)。メモリ不足が発生しない事を保証するために必要なRAM/スワップの量の見積である
%commit総メモリ容量(RAM+スワップ)に対する、現在のワークロードに必要なメモリ容量(キロバイト)。通常カーネルはメモリをオーバーコミットするため、この数値は100%を超える場合がある

※「sarコマンドのマニュアル | 自作データベース環境で各種実験」より引用

諸説ありますが、「kbbuffers」と「kbcached」がページキャッシュに使われているメモリ容量(単位はKB)です。上の sar -r コマンドの出力では、6時00分の使用中メモリ容量「kbmemused」が「841464(KB)」となっていますが、実際の使用中メモリ容量はページキャッシュを除いた。841464-159148-371460 = 310MB程度になります。

運用中のサーバではメモリ使用率「%memused」が 100%近くになることがありますが、ディスクI/O待ちが無くスワップが発生していなければ、データがうまくページキャッシュされている良い状態であると考えられます。

▽ Linuxのバッファキャッシュとページキャッシュの違いは? | b.l0g.jp
http://b.l0g.jp/linux/buffercache-and-page-cache/

アプリケーションの作成

もし「A_Template_OS_Linux」テンプレートを作成していない場合は、こちらを参考にして作成しておきましょう。

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

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

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

アイテムの作成

メモリの監視項目は、メモリの空き容量(free)、ページキャッシュに使われている容量(バッファとキャッシュ)、実質的なメモリの空容量(空き容量+バッファ+キャッシュ)とサーバに搭載されているメモリ総容量を取得します。

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

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

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

---(設定箇所)---------------------------
名前:1032_メモリ(free)
キー:vm.memory.size[free]
単位:B
更新間隔(秒):60
アプリケーション:memory
------------------------------
単位の「B」はバイトです。

同様に他のメモリ監視アイテムを作成します。
同じようなアイテムを作成する場合は、先に作成したアイテムを複製して異なる部分のみ設定するのが便利ですよ(^^)

---(設定箇所)---------------------------
名前:1033_メモリ(buffers)
キー:vm.memory.size[buffers]

単位:B
更新間隔(秒):60
アプリケーション:memory
------------------------------

---(設定箇所)---------------------------
名前:1034_メモリ(cached)
キー:vm.memory.size[cached]

単位:B
更新間隔(秒):60
アプリケーション:memory
------------------------------

---(設定箇所)---------------------------
名前:1035_メモリ空容量(free+buffers+cached)
キー:vm.memory.size[available]

単位:B
更新間隔(秒):60
アプリケーション:memory
------------------------------

---(設定箇所)---------------------------
名前:1039_メモリ総容量
キー:vm.memory.size[total]

単位:B
更新間隔(秒):60
アプリケーション:memory
------------------------------

アイテムキー vm.memory.size のパラメータ

vm.memory.size[<mode>]

total - 使用可能な物理メモリの合計
free - メモリを必要とするどんな項目に対しても使用できるメモリ
active - 現在使用されている、または最近使用されたメモリで、RAMにあるもの
inactive - 使用されていないメモリ
wired - 常にRAMにあると示されているメモリ。このメモリはディスクには移動されません。
pinned - 「wired」と同じです。
anon - ファイルと関係ないメモリ(ファイルから再読み込みできないメモリ)
exec - 実行コード。通常、(プログラム)ファイルから実行されます。
file - 最近アクセスされたファイルのコンテンツのキャッシュ
buffers - ファイルシステムのメタデータのようなもののキャッシュ
cached - さまざまなもののキャッシュ
shared - 複数のプロセスによって同時にアクセスできるメモリ
used - active + wired のメモリ
pused - 「total」に対するactive + wired のメモリ
available - inactive + cached + free のメモリ
pavailable - 「total」に対するinactive + cached + free のメモリ

プラットフォーム特有の注意事項
Linuxのavailableはfree + buffers + cachedです

詳細は公式マニュアル 2 vm.memory.sizeパラメータ | Zabbix Documentaion 2.2 を参照してください。

メモリ使用率の計算アイテムの作成

実質的なメモリの使用率を取得するパラメータが無いため計算アイテムによって取得します。計算式は「(メモリ総容量ー実質的なメモリ空容量)÷ メモリ総容量 × 100」になります。

zabbix-lamp-36-03-2

---(設定箇所)---------------------------
名前:1030_メモリ使用率
タイプ:計算
キー:vm.memory.size[(total-available)/total]
式:(last("vm.memory.size[total]")-last("vm.memory.size[available]"))/last("vm.memory.size[total]")*100
単位:%
更新間隔(秒):60
アプリケーション:memory
------------------------------

計算アイテムの詳細は公式マニュアル 7 計算アイテム | Zabbix Documentaion 2.2 を参照してください。

トリガーの作成

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

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

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

---(設定箇所)---------------------------
名前:{HOST.NAME} memory
条件式:{A_Template_OS_Linux:vm.memory.size[(total-available)/total].last()}>90
深刻度:警告
------------------------------

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

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

今回設定したトリガー条件式は、実質的なメモリ使用率が90%を超えたらトリガーが発生します。

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

グラフの作成

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

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

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

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

下記を設定してアイテムが追加されていることを確認し「追加」をクリックすればグラフが作成されます。
zabbix-lamp-36-07

---(設定箇所)---------------------------
名前:memory
------------------------------

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

コメント

  1. kimz より:

    zabbixの勉強をAWS上でしています。
    すごく理解しやすくて非常に助かっています。
    ありがとうございます。

    細いのですが、下記間違いだと思いますのでお知らせいたします。

    計算アイテムの作成
    —(設定箇所)—————————
    名前:1030_メモリ使用率
    タイプ:計算
    キー:vm.memory.size[(total-available)/tota]<—/total

    同様にトリガーの作成のtota90

    いろいろ期待しちゃいます(笑)
    これからもよろしくお願いします。

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