こんにちは、さくらインターネットの大喜多です。

数回にわたり、オープンソースの監視ソフトウェア「Zabbix」を用いたITインフラの監視について解説しております。今回は、Zabbixによるサーバリソース監視について解説いたします。

第1回 クラウドインフラのしくみ
第2回 クラウドを支える仮想化
第3回 Linuxコマンドを用いたボトルネック調査
第4回 インターネットを支える技術
第5回 ITインフラ監視入門~Zabbixインストール編~
第6回 ITインフラ監視入門~Zabbix活用編~
第7回 いまどきのインフラ設計のキモ
第8回 Design for FailureなWebシステムの構築

Zabbixエージェントを用いたサーバリソースの監視

第5回にて、Zabbixはいくつかの監視方法をサポートしており、大まかには以下のように分類されることについてご説明いたしました。今回は「2. Zabbixエージェントと呼ばれるソフトウェアを監視対象のサーバにインストールし、CPUロード、 ネットワーク使用率、ディスク容量などのステータスを監視する」手順についてご説明いたします。

1. 監視対象にソフトウェアをインストールせずに、HTTPやSSHなどのサービスを外部から監視する

2. Zabbixエージェントと呼ばれるソフトウェアを監視対象のサーバにインストールし、CPUロード、 ネットワーク使用率、ディスク容量などのステータスを監視する(今回はこちら)

3. SNMPエージェントを利用して監視する(サーバのほか、SNMPに対応したネットワーク機器の監視も可能)

Zabbixエージェントのインストール

監視する対象のサーバにZabbixエージェントをインストールします。本記事では監視対象のサーバOSはCentOS7として解説してまいりますが、ZabbixエージェントにはWindows用も用意されており、Windows Serverの監視も可能です。

Zabbixのリポジトリをインストールし、yumコマンドでzabbix-agentをインストールします。

# rpm -ivh http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-1.el7.centos.noarch.rpm
# yum install zabbix-agent

/etc/zabbix/zabbix_agentd.confを編集します。

# vi /etc/zabbix/zabbix_agentd.conf

以下の2箇所を書き換えます。

Server=<zabbix-serverのIPアドレス>
ServerActive=<zabbix-serverのIPアドレス>

保存して閉じた後、zabbix-agentを起動し(1行目)、OS起動時に自動的に起動されるよう設定します(2行目)。

# systemctl start zabbix-agent
# systemctl enable zabbix-agent

firewall-cmdコマンドでfirewalldの設定を変更し、zabbix-agentがzabbix-serverと通信できるように10050/TCPへの通信を許可します。

# firewall-cmd --add-port=10050/tcp --zone=public --permanent
# firewall-cmd --reload

ホストの追加

Zabbixでは監視対象のことを「ホスト」と呼びます。いまzabbix-agentをインストールしたサーバを、ZabbixのWeb-UIからホストとして登録します。[設定]→[ホスト]とクリックし、赤枠で囲った[ホストの作成]をクリックします。

(1)ホスト名を入力します。ここでは「web-server」とします。
(2)青枠内のグループ一覧から「Linux Servers」を探し、選択して◀ボタンをクリックし、緑枠のように表示されることを確認します。
(3)エージェントのインターフェースの「IPアドレス」に、監視対象のサーバのIPアドレスを入力します。
(4)[追加]をクリックします。

テンプレートとのリンク

Zabbixでは監視項目のセットがテンプレートとして用意されています。複数台のホストに同じ監視項目を適用したい場合や、とりあえず一般的なリソース情報を取得して徐々にカスタマイズしていく場合などに有用です。テンプレートはZabbix標準で用意されているもの、サードパーティや有志により配布されているものを利用する他に、自作することもできます。ここではZabbix標準で用意されている「Template OS Linux」をリンクさせ、Linuxにおける一般的なリソース情報の取得をおこないます。

[設定]→[ホスト]とクリックし、ホスト一覧に表示される「web-server」をクリックします。

ホストの設定画面で[テンプレート]をクリックし、「新規テンプレートをリンク」欄に、『Template OS Linux』 と入力します。

すると候補としてサジェストされますので、赤枠で囲った部分をクリックします。

以下のような表示に変わったら[追加]をクリックします。

以下のような表示に変わったら、[更新]をクリックします。

以上でテンプレートとのリンクは完了です。しばらくするとテンプレートによって設定されているLinuxのリソース情報がZabbixで取得されるようになります。

トリガーとアクション

Zabbixではトリガーとアクションと呼ばれる設定を使うことで、障害発生時にメールを送信するといったようなことが可能になります。

「トリガー」とは、アイテムが収集したデータを評価する条件式のことで、「この値以上になったら『重度の障害』状態とする」というようなことが可能になります。たとえばCPUのロードアベレージが指定の値を超えた場合に障害として検知できるようになります。「○○だったら□□する」の○○の部分に相当します。

「アクション」とは、トリガーの条件を満たした場合に起こす「行動」のことで、「『重度の障害』が発生したらメールを送信する」というようなことが可能になります。「○○だったら□□する」の□□の部分に相当します。

こちらが先ほど設定したweb-serverのロードアベレージの値です。ロードアベレージが1を超えた場合にアラートメールを送信するように設定したいと思います。

※ロードアベレージについての詳しい情報は、弊社代表の田中が執筆した LinuxのI/OやCPUの負荷とロードアベレージの関係を詳しく見てみる をご参照ください。

トリガーの作成

[設定]→[ホスト]とクリックし、web-serverの[トリガー]をクリックします。

赤枠で囲った[トリガーの作成]をクリックします。

赤枠で囲った、条件式の[追加]をクリックします。

赤枠で囲った、アイテムの[選択]をクリックします。

選択可能なアイテムの一覧が表示されます。

下にスクロールさせ、赤枠で囲ったリンクをクリックします。

関数のドロップダウンメニューから、赤枠で囲ったものを選択しクリックします。

Nのテキストボックスに1と入力し、[追加]をクリックします。

以上で、ロードアベレージを取得するアイテムの値が1を超えた場合(ここではロードアベレージの1分あたりの平均値が1を超えた場合)に条件が成立するようになります。

名前のテキストボックスに任意の名前を入力し、深刻度のうち[重度の障害]をクリックします。その後一番下の[追加]をクリックします。

以上でトリガーの設定は完了です。ロードアベレージの1分あたりの平均値が1を超えた場合、重度の障害としてアラートがあがるようになります。続いてアクションを設定し、トリガーの判定に基づいてメールを送信するようにしてみましょう。

アクションの作成

[設定]→[アクション]とクリックし、[アクションの作成]をクリックします。

「名前」に『send alert email』と入力し、新規条件を『深刻度 = 重度の障害』とし、すぐ下の[追加]をクリックします。

以下のように実行条件の中に表示されるようになっていれば設定は完了です。

続いて「実行内容」タブをクリックし、「実行内容」の[新規]をクリックします。

実行内容のタイプを『メッセージの送信』とし、「ユーザーグループに送信」の[追加]をクリックします。

「Zabbix administrators」にチェックを入れ、[選択]ボタンをクリックします。

「次のメディアのみ使用」にて『Email』を選択します。

ここまで入力が終わったら「実行内容の詳細」の一番下にある[追加]をクリックします。

以下のような表示になったら[追加]ボタンをクリックします。

以上でアクションの設定は完了ですが、実際にメールを送信できるようにするためにはまだ設定すべき箇所があります。順にご説明してまいります。

AdministratorのEmailアドレス設定

AdministratorユーザーにEmailアドレスの設定をおこないます(アラートメールはこのアドレス宛に届きます)

画面右上の人型アイコンをクリックします。

「メディア」タブをクリックし、「メディア」の[追加]をクリックします。

「送信先」テキストボックスにアラートメール送信先のメールアドレスを入力し、[追加]ボタンをクリックします。

「メディア」にEmailが追加されたら、[更新]ボタンをクリックします。

送信メールサーバの設定

Zabbixがメールを送信する際に使用するメールサーバの設定をおこないます。

[管理]→[メディアタイプ]とクリックし、一覧の中の[Email]をクリックします。

送信メールサーバの情報を入力し、[更新]ボタンをクリックします。以下の例では、外部のメールサーバにサブミッションポート(587/TCP)でアクセスし、SMTP Authをおこないメールを送信する設定としています。

ユーザーグループへの権限の追加

[設定]→[ユーザーグループ]とクリックし、一覧の中の[Zabbix administrator]をクリックします。

「検索文字列を入力」テキストボックスに、linux・・・と入力してみてください。『Linux servers』がサジェストされるので、クリックします。

[読書可能]をクリックし、[追加]をクリックします。

赤枠のように、権限の中にLinux serversが表示されたら[更新]をクリックします。

おわりに

アラートを検知してメール送信する手順は以上です。メール送信周りの手順が煩雑ですが、ここは一度設定すれば次回以降は設定することはないので、設定が必要になった際にこのページを参照して設定してもいいでしょう。これを機にZabbixを活用して自分のサーバの監視をはじめてみてはいかがでしょうか。

次回はクラウドを使ってシステムを構築するうえで必須となる知識「クラウドインフラ設計原則」についてご紹介いたします。