前回に引き続き、今回もリソース監視です。
ZabbixではCPUと同様に標準的に監視するメモリ使用率についてご紹介します。
WindowsとLinuxではメモリの使用率、具体的にはメモリの使用領域と空き領域の考え方が違いますので、Linuxのメモリ使用率を中心に紹介していきます。
メモリ使用率監視
メモリ使用率の監視には「vm.memory.size」アイテムキーを使用しますが、オプションによって取得できる値が異なります。
キー | 詳細 |
---|---|
vm.memory.size[total] | 使用可能な物理メモリの合計値 |
vm.memory.size[buffers] | バッファの値 |
vm.memory.size[cached] | キャッシュの値 |
vm.memory.size[free] | 空きメモリの値 |
vm.memory.size[used] | 現在使用されているメモリの値 |
vm.memory.size[pused] | total に対する used の割合 |
vm.memory.size[available] | 利用可能な物理メモリの合計値 |
vm.memory.size[pavailable] | total に対する available の割合 |
Windowsであれば単純にpusedを使えばメモリ使用率は監視できますが、Linuxの場合は少し違った意味になります。
冒頭でも言った通り、メモリの使用容量と空き容量の考え方が少し違います。
Linuxにおけるメモリの空き容量
まずはこちらの図をご覧ください。
今回使用する「vm.memory.size」アイテムキーのパラメーターと、メモリの領域の関係について示しています。
注目すべきは、buffersとcachedを使用済みの領域と考えるか、空き領域と考えるかの話です。
メモリのバッファとキャッシュは、処理を最適化するために予め確保している領域になりますので、使用済みと言えば使用済みになるのですが、常に使用しているわけではないので、Linuxの場合は空き領域として考えます。
監視項目 | 説明 |
---|---|
メモリのバッファ | ブロックI/Oを最適化するために、ディスクブロックをキャッシュする容量 |
メモリのキャッシュ | ファイルI/Oを最適化するために、ファイルのページをキャッシュする容量 |
つまり、Windowsのようにメモリの使用率監視でpusedを使ってしまうと、buffersとcachedまで含んでしまうし、空き容量を監視しようとfreeを使ってしまうと、buffersとcachedを含まない値になってしまいます。
Linuxでは 「buffers + cached + free = available」が空き容量となり、「total – available」は使用量となります。
このメモリの空き容量の考え方は、Zabbixの公式サイトにも掲載されています。
厳密には、同じLinuxでもOSの種類によって合計が異なりますので、しっかり確認してから監視設定を行いましょう。
依存アイテムを利用する
もうおわかりいただけたと思うが、普通にpusedではメモリの使用率は監視できないので、依存アイテムを使用して計算を行います。
依存アイテムでは、メモリの空き率をマスターアイテムとして、その値から保存前処理でメモリ使用率を計算します。
- [設定] → [テンプレート(またはホスト)]に移動します
- テンプレートの行のアイテムをクリックします
- 画面の右上隅にある[アイテムの作成]をクリックします
- フォームにアイテムのパラメータを入力します
メモリ空き率を取得するアイテム
メモリ使用率を出すために、まずはマスターアイテムとなるメモリの空き率を取得します。
「vm.memory.size」アイテムキーには、既に「pavailable」オプションが用意されているので、これを使うだけです。
設定項目 | 設定値 | 説明・注意点 |
---|---|---|
名前 | <使用可能なメモリ(%)> | (任意の名前) |
タイプ | Zabbixエージェント | Zabbixエージェント(アクティブ)も可 |
キー | vm.memory.size[pavailable] | 「pavailable」オプションを使用する |
データ型 | 数値(浮動小数) | ○○率の場合は浮動小数 |
単位 | % | ○○率なので%(監視データを参照する際に付く) |
監視間隔 | <1m> | (任意の間隔。トリガーも考慮する) |
これで準備はできました!
後は、次の依存アイテムの保存前処理でメモリ使用率を計算するだけです。
依存アイテムでメモリ使用率計算
まず「アイテム」タブで依存アイテムの箱を作りましょう。
実際にメモリ使用率を計算するのは、次の「保存前処理」のタブで行います。
設定項目 | 設定値 | 説明・注意点 |
---|---|---|
名前 | <メモリ使用率(%)> | (任意の名前) |
タイプ | 依存アイテム | 上記の依存アイテムを作成 |
キー | <vm.memory.util> | (任意のキー) |
データ型 | 数値(浮動小数) | ○○率の場合は浮動小数 |
マスターアイテム | 使用可能なメモリ(%) | 上記のメモリ空き率のアイテムを選択する |
単位 | % | ○○率なので%(監視データを参照する際に付く) |
保存前処理
次に「保存前処理」タブに移動して、メモリ空き率から使用率を計算する設定をします。
こちらも簡単です。
totalを100%とするので、普通に100からメモリ空き率(pavailable)を引くだけです。
設定項目 | 設定値 | 説明・注意点 |
---|---|---|
名前 | JavaScript | JavaScriptを利用して計算する |
パラメータ | return (100-value); | 単純に100からマスターアイテムの値を引いて返す |
データ型 | 数値(浮動小数) | ○○率の場合は浮動小数 |
これでメモリ使用率の取得が完了しました。
以前は計算アイテムを良く利用していた気がしますので、最後に計算アイテムでのメモリ使用率を計算する方法もご紹介して終わりたいとお思います。
計算アイテムでも可能
依存アイテムでも計算アイテムでも同じ結果になるはずなので、どちらを利用しても構いません。
自分に合った方法で監視してください。
設定項目 | 設定値 | 説明・注意点 |
---|---|---|
名前 | <メモリ使用率(%)> | (任意の名前) |
タイプ | 計算 | メモリ空き率を使った「式」による計算 |
キー | <vm.memory.util> | (任意のキー) |
データ型 | 数値(浮動小数) | ○○率の場合は浮動小数 |
式 | 100 – last(//vm.memory.size[pavailable]) | 上記のメモリ空き率のアイテムを選択する |
単位 | % | ○○率なので%(監視データを参照する際に付く) |
監視間隔 | <1m> | (任意の間隔。メモリ空き率とトリガーも考慮する) |
昔はバイト単位で取得して、このような書き方をしてた気もしますが。。
1 |
(last(//vm.memory.size[total]) - last(//vm.memory.size[available])) / last(//vm.memory.size[total]) * 100 |
こちらも結果は同じになるので、昔ながらの方法でも良いと思います。
ただ、個人的にはZabbixに標準で入っている最新のテンプレートを真似する方が良いと思ってます。
コメント