Nagiosサーバーのベストプラクティス?


10

中規模のNagiosサーバーを実行しています。現在、約40のサーバーと180のサービスを監視しており、日々成長しているだけです。

非常に難解な方法で構成された古いNagiosセットアップから移行したため、すべてを最初から再構成する必要がありました。

サーバーが実行され、必要なほとんどの機能が動作するようになったので、サーバーをもう少しスケーラブルにすることを検討しています。現在、各ホストは内の独自のファイルで/etc/nagios/hosts/あり、各ホストは同じファイル内にすべてのサービスを持っています。これは明らかに最適ではありませんが、私の構成すべてを数百の異なるファイルに難読化することもありません。

だから私の質問はこれです:経験豊富なNagios管理者にとって、設定過度に複雑にすることなくホストグループ/サービスグル​​ープを利用する最良の方法は何ですか?

回答:


13

ホストグループとテンプレート。

テンプレートを使用すると、「通常のサービス」、「重要なサービス」、「優先度の低いホスト」など、ホストとサービスのクラスを定義できます。また、責任が異なる複数のチームがある場合に責任を分割するための便利な方法としても機能するため、それぞれに適切な連絡先情報を定義した「linuxホスト」テンプレートと「windowsホスト」テンプレートを作成できます。

1つのリソースで複数のテンプレートを使用できるため、適切に直交するテンプレートを作成できます。たとえば、

host foo {
    use windows-host,normal-priority-host
    ...
}

これにより、Windowsチームの連絡先情報(およびエスカレーション)、および「通常の」ホストのポーリングレートとしきい値が取得されます。

ホストグループを使用すると、ホストのサブセットのすべてのチェックをグループ化できます。"baseline-linux-hosts"のようなものを用意し、負荷、ディスク容量、ssh能力など、監視するすべてのホスト上にあるべきものをすべてチェックします。「https-servers」などのグループを追加して、HTTP接続、HTTPS接続、およびSSL証明書の有効期限をチェックします。NFSおよびSMBのアクセス可能性のチェックと、より積極的なディスクチェックを備えた「ファイルサーバー」。または「仮想マシン」で、VMアクセシビリティツールが適切に実行されているかどうかをチェックします。

各ホストとホストグループを独自のファイルに配置します。そのファイルには、最初にホストまたはホストグループの定義が含まれ、その後にそれに適用されるサービスの定義が含まれている必要があります。

ファイルでcfg_dirディレクティブを使用するとnagios.cfg、Nagiosはそのディレクトリを再帰的に検索します。それを利用してください。の設定ではcfg_dir=/etc/nagios/conf.d、次のようなディレクトリツリーを作成できます。

  • /etc/nagios/conf.d/
    • commands.d /
      • http.cfg
      • nrpe.cfg
      • smtp.cfg
      • ssh.cfg
    • hosts.d /
      • host1.cfg
      • host2.cfg
      • host3.cfg
    • hostgroups.d /
      • hostgroup1.cfg
      • hostgroup2.cfg

サービスを除いて、リソースの種類(コマンド、連絡先グループ、連絡先、エスカレーション、ホストグループ、ホスト、サービスグル​​ープ、時間帯)ごとにディレクトリを作成する傾向があります。サービスは、それらを使用するホストまたはホストグループとグループ化されます。

正確な構造は、組織のニーズによって異なります。過去の仕事では、hosts.dサイトごとにサブディレクトリを使用していました。私の現在の仕事では、ほとんどのNagiosホスト定義はPuppetによって管理されているため、Puppetが管理するホスト用に1つのディレクトリと、手動で管理されるホスト用に別のディレクトリがあります。

上記はまた、一般的にプロトコルによってコマンドを複数のファイルに分割することに注意してください。したがって、nrpe.cfgファイルは、コマンドを持っているだろうcheck_nrpecheck_nrpe_1arg、しばらくはhttp.cfg持つことができcheck_httpcheck_http_portcheck_httpscheck_https_port、とcheck_https_cert1

通常、テンプレートの数はそれほど多くないので、通常は1つのhosts.d/templates.cfgファイルと1つのservices.d/templates.cfgファイルしかありません。それらをより頻繁に使用すると、templates.dディレクトリ内の適切な名前のファイルに入る可能性があります。

1check_http_blindly基本的にはコマンドも必要check_http -H $HOSTADDRESS$ -I $HOSTADDRESS$ -e HTTP/1.です。403応答コードを受け取ってもOKを返します。


6

サービスとホストグループを広範囲に利用し、テンプレート化します。ホストグループを作成し、サービスをホストグループに割り当てます。依存関係、エスカレーション、およびWeb UIでの論理グループ化には、サービスグル​​ープを使用します。

すべてのグループがある場合、新しいホストの追加は、名前、アドレス、テンプレート、および(オプションで)ホストグループの3行または4行です。すべてをテンプレート化できます。

継承に関するドキュメントと、時間を節約するためのトリックのページを必ずお読みください。多重継承はトリッキーになる可能性がありますが、正しく使用すると、時間を大幅に節約できます。


構成とのバランスを見つけたい。継承が多すぎると、別の管理者がサーバーをピックアップしなければならないときにトリッキーになる可能性があります(私はインターンなので、これをこれ以上長く実行しません)。
Michael Pobega 2014年

1
おそらく、多重継承は避けてください。シンプルにしたい場合は、カスケードテンプレートを使用してください。
キース

1

私はこの方法で(Icingaに切り替える前に)nagiosサーバーを構成することに慣れていました。少なくとも512Mbメモリー/ 1 CPUサーバーで500を超えるサービスに到達するまで、パフォーマンスが低下することはありません。ホストグループとサービスグル​​ープは完全に別々に扱うことができます。サーバーごとに1つのファイル(このファイルで定義されたこのサーバーのサービス)があり、次にホストグループ/サービスグル​​ープごとにファイルがあるため、このアプローチをお勧めします。これはより理解しやすい/明確です。

スケーラビリティの問題が発生した場合は、クライアント側でチェックを実行するnagios-nrpe-serverを確認することをお勧めします。nagiosサーバーが行うのは結果のみを要求することだけです。チェックのリソースを節約します。(Nagiosはcheck_nrpeを起動し、クライアントが要求され、ローカルでチェックを実行し、nagiosに返信します)。すべてのチェックをこの方法で処理できるわけではないことに注意してください(たとえば、SNMP)。

最後に、質問の範囲外と思われる場合でも、Icingaに切り替えることをお勧めします。これは、よりスケーラブルな方法であり、新しい機能の実装とユーザーサポートに真摯に取り組んでいる強力なコミュニティによって支えられています。構成は同じです(同じ構成ファイル、同じ構文)。


スケーラブルとは、実際にはスケーラビリティの問題ではなく、構成を意味しました。私はそのしきい値に到達することをこれまで心配していません。ホストグループ/サービスグル​​ープについて正確にはどういう意味ですか?あなたの説明は理解できません。
Michael Pobega 2014年

1

私はこのスキームを使用しています:

  • ホスト、
  • ホストグループ、
  • リモートサービス、
  • ローカルサービス。

各エンティティには独自のファイルがあります。また、テンプレートを使用すると、構成をより読みやすくすることができます。たとえば、すべてのホストに平均負荷、ディスク容量、メモリがあるとします。そのため、汎用テンプレートを作成して使用するのは非常に簡単で便利です。


1

グループの作成で構成を複雑にすることはできません。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ホストに、作成した定義済みのホストグループのメンバーであることを自動的に伝えることができます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.