前回はZabbixのLLD(ローレベルディスカバリ)機能で、ディスク使用率の監視をしましたが、今回はこの機能を使用してネットワークトラフィック監視を設定します。
ディスクと同じように、LLDで自動的にネットワークインターフェースを検出して、一括で送受信トラフィック監視の設定ができます。
LLDでネットワークトラフィック監視
ネットワークトラフィック監視で設定するLLD(ローレベルディスカバリ)は、サーバーに存在するネットワークインターフェースを自動で検出するディスカバリルールと、検出されたそれぞれのネットワークインターフェースを監視するためのアイテムのプロトタイプの設定を行います。
その他のプロトタイプの中でも、特にトラフィック監視はグラフのプロトタイプを使うのにとても適していますが、ここでは割愛させていただきます。
ディスカバリルールの作成
初めに、自動でネットワークインターフェースを検出するためのディスカバリルールを作成します。
ここで設定した内容に従って、Zabbixが自動的にネットワークインターフェースを検出します。
- [設定] → [テンプレート(またはホスト)]に移動します
- テンプレートの行のディスカバリをクリックします
- 画面の右上隅にある[ディスカバリールールの作成]をクリックします
- フォームにディスカバリルールのパラメーターを入力します
設定内容は以下の通りです。
記載のない設定に関しては自身の環境に置き換えて設定してください。(デフォルトで問題ないです)
設定項目 | 設定値 | 説明・注意点 |
---|---|---|
名前 | <ネットワークインターフェースの検出> | (任意の名前) |
タイプ | Zabbixエージェント | Zabbixエージェント(アクティブ)も可 |
キー | net.if.discovery | (任意のキー) |
監視間隔 | <1h> | 滅多に変更しないので長くてOK |
設定項目の「タイプ」以外は任意になりますね。。
こちらはLinuxもWindowsも共通設計になりますが、次項の「フィルタ」はご注意ください。
フィルタ
ディスカバリルールでは、フィルタがとても重要になってきます。
例えば、なんのフィルタもかけずにネットワークインターフェースを検出すると、監視不要なものまで全て検出してしまい、視認性が悪くなってしまうと共に、それを複数のホストで監視しようものなら、Zabbixの負荷も高くなってしまいます。
幸い、既に標準のテンプレートでも用意されていますので、そちらを拝借しましょう!
マクロ | 条件 | 正規表現 | 正規表現マクロの内容 |
---|---|---|---|
{#IFNAME} | 一致する | {$NET.IF.IFNAME.MATCHES} | ^.*$ |
{#IFNAME} | 一致しない | {$NET.IF.IFNAME.NOT_MATCHES} | (^Software Loopback Interface|^NULL[0-9.]$|^[Ll]o[0-9.]$|^[Ss]ystem$|^Nu[0-9.]*$|^veth[0-9a-z]+$|docker[0-9]+|br-[a-z0-9]{12}) |
上記のネットワークインターフェースを検出するためのフィルタはLinuxもWindowsも共通です。
以上でディスカバリルールの設定は完了です!
次に、検出したネットワークインターフェースを監視をするために「アイテムのプロトタイプ」を作成していきましょう。
アイテムのプロトタイプの作成
アイテムのプロトタイプでは、Zabbixで自動的に検出した全てのディスクネットワークインターフェースの監視設定を共通的に行うことができます。
例えば、ネットワークインターフェースが複数ある場合、LLDを利用しなければインターフェースの数だけアイテムを設定しなければなりませんが、アイテムのプロトタイプを使えば、それぞれのLLDで検出したインターフェースのアイテムもZabbixが自動で作成します!
受信トラフィック監視
受信と送信のどちらのトラフィック監視も設定しておきます。
アイテムキー以外は受信も送信も同じ設定になります。(任意の項目は合わせてね!)
まずは受信トラフィック監視です。
設定項目 | 設定値 | 説明・注意点 |
---|---|---|
名前 | <インターフェイス {#IFNAME}:受信したビット> | (任意の名前)※LLDマクロ{#IFNAME}を使用する |
タイプ | Zabbixエージェント | Zabbixエージェント(アクティブ)も可 |
キー | net.if.in[“{#IFNAME}”] | LLDマクロ{#IFNAME}を使用する |
データ型 | 数値(整数) | ビットで取得するので整数 |
単位 | bps | bpsはZabbixが自動で計算する単位の1つ |
監視間隔 | <1m> | (任意の間隔。トリガーも考慮する) |
単位の「bps」の「b」は大文字と小文字では意味が全く異なるので注意してください。
「b」はビット、「B」はバイトになります。
保存前処理
そして、忘れがちな「保存前処理」の設定をします。
アイテムで取得できる値はネットワークトラフィック量の累計になりますので、保存前処理の機能で1秒あたりの差分を計算し、取得した値に8を掛け算(1バイト=8ビットなので)します。
名前 | パラメータ |
---|---|
1秒あたりの差分 | -(設定なし) |
乗数 | 8 |
送信トラフィック監視
次に、送信トラフィック監視を設定します。
受信トラフィック監視との違いは、任意の名前とアイテムキーだけです。
設定項目 | 設定値 | 説明・注意点 |
---|---|---|
名前 | <インターフェイス {#IFNAME}:受信したビット> | (任意の名前)※LLDマクロ{#IFNAME}を使用する |
タイプ | Zabbixエージェント | Zabbixエージェント(アクティブ)も可 |
キー | net.if.in[“{#IFNAME}”] | LLDマクロ{#IFNAME}を使用する |
データ型 | 数値(整数) | ビットで取得するので整数 |
単位 | bps | bpsはZabbixが自動で計算する単位の1つ |
監視間隔 | <1m> | (任意の間隔。トリガーも考慮する) |
保存前処理も全く同じになります。
名前 | パラメータ |
---|---|
1秒あたりの差分 | -(設定なし) |
乗数 | 8 |
以上です!
トリガーについては、それぞれどのような値を障害イベントとするかによって異なりますので、今回は紹介しません。
コメント