|
「熟練した職人はまず適切な道具を持たなければならない」という諺があります。システムを効果的に管理し、作業をより簡単かつ効率的にするには、優れた監視ツールが不可欠です。ここでは、私が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 と監視対象マシンを設定すると、ブラウザの基本出力は次の画像のようになります。 #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"」を入力します。 [編集者のおすすめ]
|