Zabbix 7.4でのLinuxサーバの監視項目設定について (1/2)
概要
弊社では現在、社内システムサーバの監視をZabbixで実施しています。
社内システムサーバの監視では主に以下3点を確認しています。
・社内システムを一元管理し、監視データを取得、可視化すること
・システムが正常に動作していることを定期的に確認すること
・障害発生時に異常を検知、メール通知することによりダウンタイムを最小化すること
1点目はZabbixの「アイテム」にてデータの取得、「グラフ」、「ダッシュボード」にて可視化しています。
2点目はZabbixの「ヒストリ」、「トレンド」にて取得したアイテムを保存することでデータをチェック、分析しています。
3点目はZabbixの「トリガー」にて各アイテムの検知、「通知アクション」にてメール通知をしています。
監視項目としては以下のような正常性監視およびパフォーマンス監視等を実施しています。
・正常性監視
・pingによるサーバの死活監視
・HTTPポート等の死活監視
・プロセス監視
・パフォーマンス監視
・CPUの監視
・メモリの監視
・ディスクの監視
今回は正常性監視項目の設定についていくつかの例を紹介したいと思います。
弊社のZabbix環境
Zabbixサーバの環境は以下の通りです。
| OS | AlmaLinux 9.7 |
| 監視 | Zabbix 7.4 (コミュニティ版) |
| AP | Apache HTTP Server 2.4 (OSバンドル版) |
| サーバサイド言語処理 | php-fpm 8.0 (OSバンドル版) |
| DB | MariaDB 11.4 (コミュニティ版) |
Zabbixで管理する社内システムにはZabbixエージェントを導入しています。
正常性監視項目の設定例
ここではエージェントとして管理対象の社内システムのLinuxサーバを例にしています。
※本例では監視項目の設定はホスト個別ではなくテンプレートから作成しています。作成したテンプレートは各ホストに割り当てることが可能です。
それでは実際に各正常性監視項目の設定例を見ていきたいと思います。
pingによるサーバの死活監視
ICMP pingによりサーバが正常に応答するか定期的にチェックすることで、サーバの正常性を確認します。
pingによるサーバの死活監視では、Zabbixで「アイテム」、「トリガー」を設定します。
アイテム
まずは以下のようにアイテムを作成します。

「キー」として「icmpping[<target>,<packets>,<interval>,<size>,<timeout>,<options>]」を使用しています。
図の例では「packets」を指定していないため、デフォルトの3回中1回でも応答すれば成功になります。
icmppingは外部コマンドのfpingを利用しています。ping監視の数 (アイテムを割り当てるホストの数) が多くなるとCPUの負荷が高くなるため、「interval」をデフォルトの1000ミリ秒以下に設定することで軽減することができます。図の例では200ミリ秒にパケットの間隔を設定しています。
※詳細は<icmpping>をご参照ください。
トリガー
次に以下のようにトリガーを作成します。

icmppingは戻り値が0であれば失敗、1であれば成功として返ってきます。
図の例では「条件式」で最新の値が0であれば障害と判定し、「正常イベントの生成」を「条件式」にして0でなくなれば復旧と判定するようにしています。
HTTPポート等の死活監視
各アプリケーションのポートが正常に応答するか定期的にチェックすることで、各アプリケーションの正常性を確認します。
HTTPポート等の死活監視では、Zabbixで「アイテム」、「トリガー」を設定します。
ここでは題名の通りHTTPのポートを例に説明します。
アイテム
まずは以下のようにアイテムを作成します。

「キー」として「net.tcp.service[service,<ip>,<port>]」を使用しています。
図の例では「service」に「tcp」、「port」に「80」を指定して、80/tcpポートの応答を確認しています。
「タイプ」はZabbixサーバから対象のLinuxサーバの80/tcpポートに対して通信可能であれば、Zabbixエージェントを導入せずに「シンプルチェック」でも設定可能です。
※詳細は<net.tcp.service>をご参照ください。
トリガー
次に以下のようにトリガーを作成します。

net.tcp.serviceは戻り値が0であれば失敗、1であれば成功として返ってきます。
図の例では「条件式」で最新の値が0であれば障害と判定し、「正常イベントの生成」を「条件式」にして0でなくなれば復旧と判定するようにしています。
プロセス監視
各アプリケーションの重要なプロセスが正常に応答するか定期的にチェックすることで、各アプリケーションの正常性を確認します。
プロセス監視では、Zabbixで「アイテム」、「トリガー」を設定します。
ここではApache HTTP Serverのプロセスを例に説明します。
アイテム
まずは以下のようにアイテムを作成します。

「キー」として「proc.num[<name>,<user>,<state>,<cmdline>,<zone>]」を使用しています。
図の例では「user」に「root」、「cmdline」に「"^/usr/sbin/httpd"」を指定して、rootユーザーで実行する「/usr/sbin/httpd」で始まるコマンドラインのプロセスが応答しているかを確認しています。
「cmdline」ではコマンドラインでプロセスをフィルタリングします。正規表現を利用できます。
Linuxサーバであればpsコマンド等でプロセスを確認することが可能です。
※詳細は<proc.num>をご参照ください。
トリガー
次に以下のようにトリガーを作成します。

proc.numは戻り値がプロセス数であるため、0であれば失敗、1以上であれば成功として扱います。
Apache HTTP Serverの場合、制御用の親プロセスである「/usr/sbin/httpd」のプロセスは1つのみのため、戻り値が1であれば成功と判定できます。
図の例では「条件式」で最新の値が0であれば障害と判定し、「正常イベントの生成」を「条件式」にして0でなくなれば復旧と判定するようにしています。
【補足】メール通知について
「通知」>「アクション」にて「トリガーアクション」を設定し、各設定したトリガーをアクションとしてユーザにメッセージを送信する実行内容を設定することで、トリガーにて障害/復旧と判定された際にメール通知することが可能です。
pingによるサーバの死活監視でのメール通知設定例
まずは「アクション」を設定します。

「実行条件」に該当のトリガーを設定します。
次に「実行内容」を設定します。

「実行内容」、「復旧時の実行内容」で「ユーザーにメッセージを送信」するよう設定を追加します。
以下の図は「実行内容」の設定例です。

「ユーザーに送信」にZabbixで設定したユーザーを選択することで、そのユーザー宛てに送信できます。
「送信メディアタイプ」に別途「通知」>「メディアタイプ」で設定したメールサーバを指定します。
最後に
今回は正常性監視項目の設定についていくつかの例を紹介させていただきました。
次回はパフォーマンス監視についていくつかの例を紹介したいと思います。
お問い合わせ
弊社では様々なサービスを取り扱っております。
詳細はサービス一覧からご覧ください。
お気軽にお問い合わせください。応対時間 9:30-17:30 [ 土・日・祝日除く ]
お問い合わせ
