中規模のNagiosサーバーを実行しています。現在、約40のサーバーと180のサービスを監視しており、日々成長しています。
非常に難解な方法で構成された古いNagiosセットアップから移行したため、すべてを最初から再構成する必要がありました。
サーバーが実行され、ほとんどの目的で機能するようになりました必要それのために、もう少しスケーラブルにすることを検討しています。現在、各ホストは/etc/nagios/hosts/
内の独自のファイルであり、各ホストは同じファイルにすべてのサービスを持っています。これは明らかに最適ではありませんが、私の構成のすべてを数百の異なるファイルに難読化することもありません。
だから私の質問はこれです:経験豊富なNagios管理者にとって、hostgroups/servicegroups without設定を複雑にするのに最適な方法は何ですか?
ホストグループとテンプレート。
テンプレートを使用すると、ホストとサービスのクラスを定義できます。 「通常のサービス」、「クリティカルサービス」、「優先度の低いホスト」。また、責任が異なる複数のチームがある場合に責任を分割するための便利な方法としても機能するため、それぞれに適切な連絡先情報を定義した「linuxホスト」テンプレートと「windowsホスト」テンプレートを作成できます。
1つのリソースで複数のテンプレートを使用できるため、適切に直交するテンプレートを作成できます。たとえば、
Host foo {
use windows-Host,normal-priority-Host
...
}
これにより、Windowsチームの連絡先情報(およびエスカレーション)、および「通常の」ホストのポーリングレートとしきい値が取得されます。
ホストグループを使用すると、ホストのサブセットのすべてのチェックをグループ化できます。負荷、ディスク容量、ssh
abilityを監視する「baseline-linux-hosts」のようなもの、および監視するすべてのホストで他に必要なものを用意します。 「https-servers」などのグループを追加して、HTTP接続、HTTPS接続、およびSSL証明書の有効期限をチェックします。 NFSとSMBアクセシビリティとより強力なディスクチェックを備えた「fileservers」、またはVMアクセシビリティツールがあるかどうかを確認した「virtual-machines」正常に動作しています。
各ホストとホストグループを独自のファイルに配置します。そのファイルには、最初にホストまたはホストグループの定義が含まれ、その後にそれに適用されるサービスの定義が含まれている必要があります。
cfg_dir
ファイルでnagios.cfg
ディレクティブを使用すると、Nagiosはそのディレクトリを再帰的に検索します。それを利用してください。 cfg_dir=/etc/nagios/conf.d
の設定では、次のようなディレクトリツリーを作成できます。
サービスを除いて、リソースの種類(コマンド、連絡先グループ、連絡先、エスカレーション、ホストグループ、ホスト、サービスグループ、時間帯)ごとにディレクトリを作成する傾向があります。サービスは、それらを使用するホストまたはホストグループとグループ化されます。
正確な構造は、組織のニーズによって異なります。過去の仕事では、異なるサイトごとにhosts.d
の下のサブディレクトリを使用しました。私の現在の仕事では、ほとんどのNagiosホスト定義はPuppetによって管理されているため、Puppetが管理するホスト用に1つのディレクトリと、手動で管理されるホスト用に別のディレクトリがあります。
上記はまた、一般的にプロトコルによってコマンドを複数のファイルに分割することに注意してください。したがって、nrpe.cfg
ファイルにはコマンドcheck_nrpe
およびcheck_nrpe_1arg
を含めることができ、http.cfg
にはcheck_http
、check_http_port
、check_https
を含めることができます。 、check_https_port
、check_https_cert
。1
通常、テンプレートの数はそれほど多くないので、通常はhosts.d/templates.cfg
ファイルとservices.d/templates.cfg
ファイルしかありません。これらをより頻繁に使用すると、templates.d
ディレクトリー内の適切な名前のファイルに入る可能性があります。
1check_http_blindly
コマンドも必要です。これは基本的にcheck_http -H $HOSTADDRESS$ -I $HOSTADDRESS$ -e HTTP/1.
です。 403応答コードを受け取ってもOKを返します。
サービスとホストグループを広範囲に使用し、テンプレート化します。ホストグループを作成し、サービスをホストグループに割り当てます。依存関係、エスカレーション、およびWeb UIでの論理グループ化には、サービスグループを使用します。
すべてのグループがある場合、新しいホストの追加は、名前、アドレス、テンプレート、および(オプションで)ホストグループの3行または4行です。すべてをテンプレート化できます。
inheritance のドキュメント、および time-saving tricks ページも必ずお読みください。多重継承はトリッキーになる可能性がありますが、正しく使用すると、時間を大幅に節約できます。
グループの作成で構成を複雑にすることはできません。 asciiphilが言うように、ファイルを作成するか、(hosts.cfgなどの)既存のファイルの一部に同じグループを定義して、このファイルを作成するか、nagiosにこのファイルがアクティブであることを伝えます(これは新しいフィールドを作成します(まだアクティブでない場合)。これは、新しく作成されたファイルのパスを配置するnagios.cfgファイルにあります。 「cfg_file =/usr/local/nagios/etc/objects/NEW_FILE.cfg」
もう1つは、インフラストラクチャに応じてグループを作成することです。たとえば、LinuxサーバーとWindowsサーバーがある場合、Linux用とWindows用の2つの異なるグループを作成します。サービスも同様です。モニターでモニターするときに構成および表示する方法に応じて、それらをグループとしてどのように表示するかを指定します。
そして、ファイルやパーツのグループを作成する方法は簡単です。
define hostgroup{
hostgroup_name novell-servers
alias Novell Servers
members netware1,netware2,netware3,netware4
}
そして、ホストの設定で/テンプレートを使用している場合、またはすでにホストテンプレートまたはサービスを定義していて、useを使用している場合は、すべてのホスト/ウィンドウまたはLinuxホストに、作成した定義済みのホストグループのメンバーであることを自動的に伝えることができます。
私はこの方法で(Icingaに切り替える前に)nagiosサーバーを構成するために使用されました。少なくとも512Mbメモリー/ 1 CPUサーバーで500を超えるサービスに到達するまで、パフォーマンスが低下することはありません。ホストグループとサービスグループは完全に別々に扱うことができます。サーバーごとに1つのファイル(このファイルで定義されたこのサーバーのサービス)があり、次にホストグループ/サービスグループごとのファイルにあるため、このアプローチをお勧めします。これはより理解しやすい/明確です。
スケーラビリティの問題が発生した場合は、クライアント側でチェックを実行するnagios-nrpe-serverを確認することをお勧めします。nagiosサーバーが行うのは結果のみを要求することだけです。チェックのリソースを節約します。 (Nagiosはcheck_nrpeを起動し、クライアントが要求され、ローカルでチェックを実行し、nagiosに返信します)。すべてのチェックをこの方法で処理することはできないことに注意してください(たとえば、SNMP)。
最後に、質問の範囲外と思われる場合でも、Icingaに切り替えることをお勧めします。これは、よりスケーラブルな方法であり、新しい機能の実装とユーザーサポートに真摯に取り組んでいる強力なコミュニティによって支えられています。構成は同じです(同じ構成ファイル、同じ構文)。
私はこのスキームを使用しています:
各エンティティには独自のファイルがあります。テンプレートに加えて、あなたはいつでもあなたの設定をよりきれいにすることができます。たとえば、すべてのホストに平均負荷、ディスク容量、メモリがあるとします。そのため、汎用テンプレートを作成して使用するのは非常に簡単で便利です。