logo header
logo header
logo header
logo header
  • 2016.05.09
  • インフラ技術ブログ

ZABBIXでサーバ監視するために必要な設定について

zabbix_logo_600

最近北海道では春だというのに非常に寒く、急に30センチの積雪になったり、ポカポカ陽気になったりと気候の変化が激しく、体調を崩しやすい状況でした。
そのインフル患者大発生の最中に、普通に風邪をひいていたkirksenchoです、こんにちは。

当社では、自社で管理しているサーバ群の監視にZABBIXを利用しています。
前回はZABBIXの導入方法について書きましたが、今回は実際にサーバを監視するために、しなければならないことについて説明したいと思います。

前回の記事はこちら

監視に必要なパッケージ

zabbix-agent

監視される側に必要なのはエージェントのパッケージです。

前回のサーバインストールの時にも一緒に入れていましたが、そうするとサーバが自分自身も監視できるようになります。
ただ、サーバの発報機能が死んでしまうと、障害が起きても管理者に通知されなくなってしまうので、サーバ自体の死活監視は、別の拠点のサーバから行うようにしたほうが良いです。

zabbix-agentの設定について

設定をviで変更する場合は以下です。
vi /etc/zabbix/zabbix_agentd.conf

viで開くといろいろと表示されますが、通常設定すべき箇所は少なく、最低限、以下の3点を修正すれば動きます。

Server=
ここには、ZABBIXサーバのIPアドレスかFQDNを設定します。
名前解決できる環境であれば、FQDNじゃなくてショートネームでも可能ですが、IPかFQDNにしておいたほうが無難でしょう。

Hostname=
ここには、監視される側のホスト名を記載します。
実際に「hostname」コマンドで表示される正しいホスト名を記載しないとエラーがログに出力されてしまいます。

ここをホスト名を導き出すマクロに置き換えて、全クライアントを共通の設定とすることも可能ですが、ここの記載とZABBIXサーバ側の監視対象ホストのホスト名の文字列がイコールじゃないと監視できないので、明示的にホスト名を書いた方が無難です。

ListenIP=
ここには、クライアント側のIPアドレスを記載します。
通常は変更せずにデフォルト値のままで良いですが、監視対象サーバが複数のIPアドレスを持っていて、どれか特定のIPでだけリッスンしたい場合に設定します。

ここまで設定できたら、zabbix-agentのサービスを開始します。
CentOS7なので、例によってserviceコマンドは使わずにsystemctlを使います。

systemctl start zabbix-agent

これでエージェントがサーバのプロセスと通信を開始しました。
もしうまくいかない場合は、ファイヤーウォールなどでポートがふさがっているケースが考えられるので、それらの設定を確認しましょう。

サーバ側のWEBフロントエンドでの設定

サーバのWEBフロントエンドにログインし、「設定」->「ホスト」とメニューをたどると、「ホストの作成」ボタンがあるので、それを押します。
そうすると、監視したいホストに対するひととおりの設定を行うことができます。

名前、グループ、DNS名、IPアドレス等、テンプレートを、実際の監視対象に合わせて設定します。

・名前
エージェントのHostname=で設定した文字列と同じにします。

・グループ
監視対象が複数あって、管理しやすいようにグループ分けしたいときに便利な機能です。
グループ単位で一括にいろいろな処理を実行させたりもできます。

・DNS名
入れなくてもOKですが、その場合は接続方法にIPアドレスを選択してIPアドレスを入力する必要があります。

・IPアドレス
IPアドレスを設定します。上記DNS名を省略した場合は必須です。

・テンプレート
監視したい項目を設定するために使用します。
標準でLinux用やWindows用などいろいろありますが、それらを「リンクしているテンプレート」の「追加」ボタンを押して設定していきます。
特定のミドルウェアに特化したテンプレートを自作して設定する事も可能です。

テンプレートまで設定できたら「保存」ボタンを押せば監視が開始されます。

なお、同時に複数の監視対象ホストを追加したいという場合には、ディスカバリー機能を利用できます。
指定したIPアドレスの範囲でエージェントを起動しているホストを自動で追加してくれる便利な機能です。
追加したいホストが同時に50台以上もある場合などは必須とも言えるでしょう。
今回はその詳細説明は割愛いたしますが、興味のある方は本家ドキュメントをご参照ください。

監視項目ごとの受信データの確認

「監視データ」->「最新データ」とたどってクリックすると、監視対象ホストの各アイテムのデータが確認できます。
受信までには時間がかかる場合もあるので、データが無い場合はしばらく待ってみましょう。

データは文字列のみの表示だけではなく、グラフで表示することもできます。
時系列でデータの変化を確認できるので、サーバの負荷の上下がいつ始まっていつ終わったかなどが視覚的に確認できて分かりやすいです。

それぞれのグラフを集めた「スクリーン」を作ることもできるので、主要なデータのグラフをスクリーンに並べて一画面で全体の情報を網羅するといった事も可能です。
スクリーンはトップページにお気に入りとしてリンクを表示させることもできるので、ログインしてすぐ確認したい場合には重宝します。

発報機能について

テンプレートには、監視したい項目の設定に加えてトリガーと言って閾値(いきち)を超えたら障害発生のトリガーを引く設定もあります。
障害には深刻度のレベルがあり、それによって発報などのアクションを振り分けて実行できます。

例えば、深刻度の非常に高い障害の場合は、昼夜祝祭日問わずにサーバ管理者のモバイル端末に発報メールを送って叩き起こしたい!となりますが、それほど深刻度が高くない障害の場合は、平日の日中のみ業務用PCのメールアドレス宛にだけ発報するといった使い分けができます。

発報先は、WEBフロントエンド上に登録されているユーザに対して行いますが、「管理」->「ユーザ」とメニューをクリックしていくと、ユーザの設定ができます。
メールアドレスは「メディア」という設定項目で追加できますので、そこにモバイル端末のメールアドレスなどを設定します。

発報先を登録したら、次は発報するルールを「アクション」設定で行います。

「設定」->「アクション」とメニューをクリックすると「アクションの作成」ボタンがあるので、それを押します。

アクション設定にはデフォルトで色々入っていますが、名前、リカバリメッセージ、アクションのコンディション、アクションのオペレーションなどを最低限設定すれば良いでしょう。

・名前
何のアクションなのかが分かるような文字列を記載すれば良いでしょう。

・リカバリメッセージ
閾値を下回って障害が収まった時にも発報したい場合にチェックを付けます。

・アクションのコンディション
どういう場合に発報するのかを設定します。

・アクションのオペレーション
誰にどうやって発報するのかを設定します。

ここまで設定できたら、サーバ監視のためのひととおりの設定が完了です。
閾値を超えるような状態をわざと作り出して、実際に発報されるかを確認してから、実運用に入ると良いと思います。

終わりに

3回にわたってZABBIXの説明を書いてきましたが、ZABBIXにはまだまだ色々な機能が備わっており、バージョンアップも盛んに行われています。

LinuxやWindowsサーバだけではなく、SNMPプロトコルによる監視も可能なので、ネットワーク機器やストレージ機器などを監視する事も可能です。
複雑な条件による監視を行うために、ホスト側に自作したシェルスクリプトを置いて、それを実行することもできます。
逆にシンプルチェックと言って、サーバにpingを打ちたいだけという監視もできて、その場合はエージェントとは無関係にサーバ側だけの設定で監視できます。

全てを使いこなすには、かなりの熟練と知識が必要となりますが、フリーでサーバを監視するソリューションとしては、非常に優れていると思いますので、是非使ってみていただきたいと思います。

ともに世界をアップグレードできる、そんな日を夢見て。
Upgrade the World!