web-dev-qa-db-ja.com

ホスト/ホストグループのサービスと連絡先を直交的に定義しますか?

私はIcingaスパゲッティをより扱いやすく繰り返しの少ないものに変えようとしています。これまでのところ、テンプレート、オブジェクト継承、多重継承、ホストグループ、サービスグル​​ープなどの機能は私のニーズを満たしていますが、私は1つの側面に固執しています。


TL; DR:そのホストが特定のホストグループのメンバーである場合、すべてのメンバーホストに新しい連絡先グループを追加したいことをIcingaに伝えるにはどうすればよいですかおよびサービス、別のホストグループに対して定義されたサービスもホストもメンバーですか?


2つの直交するホストグループのセットがあります。1つはサービスに関連付けられているホストタイプ用で、サービスの依存関係はホストタイプに関連付けられています。 「PostgreSQLサーバー」。別のグループのセットは、ノードの責任範囲と、各ノードを気にする必要がある人を識別します。

責任範囲を特定するホストグループに従ってサービスに連絡先仕様を適用する必要があります-そしてそうしたいなし各(ホストタイプ、責任範囲)ホストグループペアの各サービスをオーバーライドする必要があります。

したがって、ホストグループ「postgresql_servers」と関連サービス「postgresql_connection」を定義するとします。

define hostgroup {
        hostgroup_name          postgres_servers
        alias                   All PostgreSQL servers
}

define service {
        use                     some_service_template
        hostgroup_name          postgres_servers
        contact_groups          support_engineers_notifications
        service_description     POSTGRES_CONNECTION
        check_command           check_dummy!2!"Passive check failed"
}

次に、ホストグループ「servers_for_bob」と連絡先「bob」がありますが、これらはまだ相互に関連付けられていません。

define hostgroup {
        hostgroup_name          servers_for_bob,
        alias                   These are for Bob
}

define contact {
    contact_name                  bob
    alias                         bob: Bob B.
    use                           some_contact_template
}

define contactgroup {
    contactgroup_name             team_bob
    members                       bob
}

これで、ホストを両方のホストグループのメンバーにするのは簡単です。

define Host {
        use             some_Host_template
        Host_name       buildingthings.example.com
        hostgroups      servers_for_bob, postgres_servers
        alias           The first thing bob built
}

...そしてその過程で、postgres_serversのように、POSTGRES_CONNECTIONに対して定義されたすべてのサービスを取得します。ただし、サービス通知は、基本サービスsupport_engineers_notificationsで定義されているPOSTGRES_CONNECTIONにのみ送信されます。

ここで、ホストに問題が発生したときにteam_bobに通知したいと思いますまたはそのサービスのいずれかに問題があります。これらすべてのサービスを再宣言することなく。

ホスト自体の場合、contact_groupsのオブジェクト継承でマージルールを使用できます。

define Host {
        use             some_Host_template
        Host_name       buildingthings.example.com
        hostgroups      servers_for_bob, postgres_servers
        alias           The first thing bob built
        contact_groups  +team_bob
}

さらに多くのホストの場合、複数のホストテンプレートの継承を使用して繰り返しを減らすことができます。

ただし、ホストをpostgres_serversのメンバーにすることによって暗黙的に定義されたservicesを引き起こさないAFAIKは、team_bobにも通知を送信します。

トポロジは次のとおりです。

+--------------------------------------+       +-----------+                                    
|                                      |       | Contact:  |                                    
|    Hostgroup:                        |       | Team Bob  |                                    
|    postgresql_servers               <--????--+           |                                    
|                                      | ^^^^  |           |                                    
|                                      | how?  +-----------+                                    
|                                      |                                                        
|   +----------------------------------------+                                                  
|   |                                  |     |                                                  
|   |                                  |     |                                                  
|   |   +-------------------------+    |     |                                                  
|   |   |-------------------------|    |     |                                                  
|   |   ||                       ||    |     |                                                  
|   |   || Host buildingthings   ||    |     |                                                  
|   |   || hostgroups:           ||    |     |                                                  
|   |   ||   postgres_servers,   ||    |     |                                                  
|   |   ||   servers_for_bob     ||    |     |                                                 
|   |   ||                       ||    |     |                                                  
|   |   ||                       ||    |     |                                                  
|   |   ||                       ||    |     |                                                  
|   |   ||                       ||    |     |                                                  
|   |   ||                       ||    |     |                                                  
|   |   |-------------------------|    |     |                                                  
|   |   +-------------------------+    |     |                                                  
|   |                                  |     |                                                  
+--------------------------------------+     |      +----------------------+                    
    |                                        |      |                      |                    
    |                                        |      | Service:             |                    
    |                                       <-------+ POSTGRES_CONNECTION  |                    
    |                                        |      |                      |                    
    |      Hostgroup                         |      |                      |                    
    |      servers_for_bob                   |      +----------------------+                    
    |                                    ^   |                                                  
    +----------------------------------------+      +---------+------------+                    
                                         |          | More services...     |                    
                                         +----------+                      |                    
                                                    +----------------------+                    

(ありがとう http://asciiflow.com/

そのホストがホストグループservers_for_bobのメンバーである場合、ホストグループの継承によって暗黙的に定義されているものも含め、すべてのメンバーのホストとサービスに連絡先bobを追加したいことをIcingaに伝えるにはどうすればよいですか?

私は これを回避するためにホストエスカレーションとサービスエスカレーションを使用することについて漠然とした言及を見ました 、しかしその方法を理解することができませんでした。

これは一般的な要件のようですが、ここからどこに行くべきかわかりません。助けて?

1
Craig Ringer

あなたはエスカレーションでそれを行うことができます。これを使用して、SMSをNOCチームに送信します。

define serviceescalation {
    service_description *
    Host_name first_Host, second_Host
    first_notification 4
    last_notification 10
    notification_interval 20
    contacts NOC
}
1
3h4x

これはケーキのように見えますが、明らかにそうではありません:)。ほとんどの場合、解決策は2つだけです。

1)各サーバー定義テンプレートが、より多くのサーバーグループ内のサーバーになっていないことを確認してください。その結果、サーバーテンプレートに連絡先が配置される可能性があります。

2)いくつかの自動化ツールを使用して構成を生成し、可能な限りふわふわのままにします(ツールでは簡単になります)。私たちはPuppetを使用してnagios構成を処理してきましたが、大量の構成を生成しますが、それを生成したコードはかなり単純なテンプレートに基づいているため、問題ありません。

1