DUICUO

運用・保守監視シリーズ:強力なオープンソース監視ツールNagiosの総合ガイド

「熟練した職人はまず適切な道具を持たなければならない」という諺があります。システムを効果的に管理し、作業をより簡単かつ効率的にするには、優れた監視ツールが不可欠です。ここでは、私が4年以上使用している、強力でカスタマイズ可能なオープンソース監視ツール、Nagiosをお勧めします。

Nagios運用・保守監視シリーズ1:Nagiosサーバーの自己監視の実装

Nagios 運用・保守監視シリーズ 2: Apache サーバーの導入

Nagios 運用と監視シリーズ 3: Nagios サービスの導入と設定

Nagios 監視シリーズ パート 4: MySQL サーバーの Nagios 監視

Nagios 運用と監視シリーズ 5: 重要なアプリケーションを監視するための主要戦略

まず、実際の業務で監視すべき対象について見ていきましょう。ここでは、ネットワークサービス監視とホストリソース監視という2種類の監視対象についてまとめます。ネットワークサービス監視には、ホストの生存チェック、Webサービス監視、FTPサービス監視、データベースサービス監視、カスタムサービス監視などが含まれます。ホストリソース監視には、システム負荷、現在のIP接続数、ディスク使用量、現在のプロセス数、カスタムリソース監視などが含まれます。

次に、Nagios監視の表示方法を見てみましょう。監視の主な目的は、監視対象に障害が発生したり、リソース不足が発生したりした場合に、関係者に速やかに通知し、迅速に問題に対処することです。求められる効果は「上司や顧客が問題に気付く前に、タイムリーかつ効果的な通知」です。もし上司から障害通知が来たら、誰も喜ばないでしょう。管理作業を円滑に進めるために、Nagiosは少なくとも3つの表示方法を提供しています。

1. Web モードでは、監視対象オブジェクトをブラウザ経由で表示します。通常の状態では、ステータスが青色で表示され、「OK」と表示されます。

2. メール通知:障害が発生すると、設定された再試行回数と検出間隔が経過した後に、管理者または関係者に問題の概要を報告したメールが送信されます。

3. 携帯電話のテキストメッセージ:これは非常に便利でタイムリーな機能です。夜ぐっすり眠っている間は、ウェブページやメールを確認する時間がありませんが、万が一の故障の場合でも、携帯電話のテキストメッセージでいつでも目を覚ますことができます。

通常、勤務時間中にブラウザを開いてウェブページを確認すること、メール プログラムを開いて定期的にメールを確認すること、携帯電話を 24 時間オンラインにしておくこと、という 3 つの作業は同時に行われます。

最後に、実際のシナリオを使用して Nagios の強力な機能を実演し、システム管理作業に役立つことを願っています。

シーンの説明

説明を簡単にするために、監視対象のサーバーが 5 台 (Web サーバー、データベース サーバー、メール サーバー、NFS ファイル共有サーバー) あると仮定します。これらのサーバーのサービスを監視するとともに、負荷、ディスク パーティションの使用状況、プロセスの合計数、現在の IP 接続数など、各サーバーのリソース使用状況を監視する必要があります (もちろん、独自のスクリプトを作成して、より多くのリソース オブジェクトを監視することもできます)。システム管理者以外にも、プログラマーなどのユーザーもそれぞれのサーバーを保守しています。障害が発生すると、Web サイトを保守しているプログラマーには警告メールと SMS メッセージが送信されますが、データベース管理者には送信されません。一方、プログラムを保守しているユーザーは、自分のアカウントで監視サーバーにログインし、Web インターフェイスを介して管理対象サーバーのステータスを表示できます (自分のサーバーのみを表示でき、他のユーザーが管理しているサーバーは表示できません)。

上記の説明に基づいて、次の表にまとめることができます。

マシン名役割ステータスを表示したりアラーム情報を受信したりできるユーザー必要なツール
Nagiosサーバー監視端末システム管理者(SA) Apache、nagios、nagios プラグイン、sendmail、perl など。
メールサーバー監視対象端システム管理者、メール管理者 Nrpe、Nagios プラグイン、カスタム スクリプトなど。
データベースサーバー監視対象端システム管理者、DBA Nrpe、Nagios プラグイン、カスタム スクリプトなど。
ウェブサーバー監視対象端システム管理者、ウェブマスター Nrpe、Nagios プラグイン、カスタム スクリプトなど。
NFS共有サーバー監視対象端システム管理者 Nrpe、Nagios プラグイン、カスタム スクリプトなど。
キャッシュサーバー(Squid) 監視対象端システム管理者、ウェブマスター Nrpe、Nagios プラグイン、カスタム スクリプトなど。

Nagios と監視対象マシンを設定すると、ブラウザの基本出力は次の画像のようになります。

#p#

Nagiosサーバーの自己監視実装

リソースとサービスの両方を監視するには、サーバー(Nagiosサーバー)と監視対象エンドポイント(NRPE - Nagiosリモートプラグインエグゼキューター)の両方を設定する必要があります。Nagios監視プラットフォームをスムーズかつ体系的に導入するには、Nagiosサーバー自体にサービスとリソースの監視を実装し、他の監視エンドポイントにNRPEを導入することをお勧めします。Nagiosサーバーで「check_nrpe」を使用してテストを行い、成功を確認した後、Nagiosサーバーの設定ファイルに監視項目を1つずつ追加します。もちろん、サービスのみを監視し、ホストリソースを監視しない場合は、監視対象エンドポイントにNRPEをインストールする必要はありません。初心者が簡単に始め、成功できるように、簡単な手順から始めましょう。

自己監視の実装:メール送信機能の設定

監視システムは、アラートメールがユーザーのメールボックスに送信された後は他のメールサーバーからのメールを受信する必要がないため、サーバーに組み込まれているsendmailを使用してアラート情報を送信するだけで済みます。sendmailを使用するもう一つの理由は、そのシンプルさです。

Red HatまたはCentOSをお使いの場合は、「service sendmail start」を実行してデーモンプロセスを起動し、DNSサーバーを使用して有効なドメイン名(Aレコード)を割り当てます。その後すぐに、「mail」コマンドを使用して、任意のメールアドレスにテストメールを送信できます。テストメールが受信されれば、メールシステムの設定は完了です。とても簡単ですね。メール送信の例を以下に示します。

mail -s "これはseryのnagiosテストメールです" [email protected] < install.log

#p#

自己監視の実装:SMS送信のテスト

通常、携帯電話にSMSメッセージを送信できるサーバーはありません。SMSメッセージを送信するには、SMSサービスを購入する必要があります(Fetionなどの方法を使う人もいますが、個人的にはウェブサイト運営にはあまり適していないと思います)。数年前まではSMSチャネルを自分で申請することもできましたが、2005年以降、そのハードルは大幅に上がったようです。支払いが完了すると、SMSサービスプロバイダーからエントリポイントと暗号化されたキーワードが提供されます。その後、SMSメッセージを送信するためのスクリプトを作成できます。以下は、私がPerlを使ってサーバー用に作成したスクリプトです。

#!/usr/bin/perl -w

strict を使用します。

LWP::Simple を使用します。

URI::Escape を使用します。

Digest::MD5 を使用します。

私の ($mobile, $content) = @ARGV;

私の$log_control = 1;

私の$key = 'Ysdbyhd6T';

私の $souce_content = substr($mobile, 0, 8) . substr($mobile, -10, 10) . $key;

私の $md5 = Digest::MD5->new;

$md5->$source_content を追加します。

私の$result_conent = uc($md5->hexdigest);

私の$url = "http://http.asp.sh.cn/MT.do?Username=sery&Password=([-BVG'0&Mobile=$mobile&Content=$content&Keyword=$result_conent";

私の $result = $url を取得します。

$log_control の場合 {

私の$fh;

open($fh, '>> /var/log/sms.log') または die "ログを開けません: $!";

$fh join(' ', time, $result, "\n"); を印刷します。

$fh を閉じます。

}

(上記のスクリプトはYujieが提供しました)

例:

1. my $key = 'Ysdbyhd6T' は、SMS サービス プロバイダーによって提供される検証キーワードです。

2. `my $url="….."` 文字列には、SMS サービス プロバイダーによって提供されたユーザー名、パスワード、およびアクセス URL が含まれます。

このファイルを`/usr/local/bin/`ディレクトリに配置し、`sms_send.pl`という名前を付け、`chomod +x /usr/local/bin/sms.pl`コマンドを使用して実行権限を付与します。このスクリプトは、様々なUnixおよびLinuxディストリビューションで正常に動作し、NagiosアラートSMSメッセージの送信に不可欠です。このスクリプトを使用してSMSメッセージを送信したい場合は、`key`と`url`の値を変更するだけです。

次に、SMSメッセージが送信できるかどうかを確認する必要があります。コマンド「/usr/local/bin/sms.pl 13300108888 "It is a test"」を実行し、Enterキーを押すと、数秒以内に「It is a test」というテキストメッセージが携帯電話に届くはずです。SMSサービスの信頼性を確保するために、毎日午後6時に通知SMSを送信し、SMSの送信が正常に行われ、帰宅の時間が来たことを知らせるという戦略を実行しました。そのためには、「crontab -e」を実行し、行「00 18 * * * /usr/local/bin/sms.pl 13300108888 "It is Ok"」を入力します。

[編集者のおすすめ]

  1. 開発者リリース: SUSE Linux Enterprise 11 RC4
  2. Linux システム管理技術マニュアル(中国語第 2 版)
  3. 組み込みシステム向け Linux カーネル開発の実践ガイド