AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 611452
Accepted
Craig Ringer
Craig Ringer
Asked: 2014-07-10 20:53:10 +0800 CST2014-07-10 20:53:10 +0800 CST 2014-07-10 20:53:10 +0800 CST

为主机/主机组正交定义服务和联系人?

  • 772

我正在尝试将我们的 Icinga 意大利面变成更易于管理和更少重复的东西。到目前为止,模板、对象继承、多重继承、主机组、服务组等功能已经满足了我的需求,但我只停留在一个方面。


TL;DR:我如何告诉 Icinga,如果该主机是特定主机组的成员,我想向所有成员主机和服务添加一个新的联系人组,即使是针对主机也是其成员的不同主机组定义的服务?


我有两组正交的主机组——一组用于主机类型,它与与主机类型相关的服务和服务依赖项相关联,例如“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
}

而对于更多的主机,可以使用多主机模板继承来减少重复。

但是,AFAIK 不会导致通过使主机也成为发送通知的成员来隐式定义的服务。postgres_serversteam_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/)

我如何告诉 Icinga 如果该主机是主机组的成员,servers_for_bob我想将联系人添加bob到所有成员主机和服务,即使是通过主机组继承隐式定义的那些?

我已经看到关于使用主机和服务升级来解决此问题的模糊提及,但无法弄清楚如何。

这似乎是一个常见的要求,但我不知道从哪里开始。帮助?

nagios
  • 2 2 个回答
  • 340 Views

2 个回答

  • Voted
  1. Florin Asăvoaie
    2014-07-10T22:33:10+08:002014-07-10T22:33:10+08:00

    虽然这似乎是小菜一碟,但显然不是:)。您很可能只有 2 个解决方案:

    1) 确保每个服务器定义模板不会以更多服务器组中的服务器结束,从而导致将联系人放入服务器模板中的可能性。

    2)使用一些自动化工具来生成你的配置,并让它尽可能蓬松(在工具中会很简单)。我们一直在使用 Puppet 来处理 nagios 配置,虽然它会生成大量配置,但没关系,因为生成它的代码是基于一些非常简单的模板。

    • 1
  2. Best Answer
    3h4x
    2014-07-11T02:24:02+08:002014-07-11T02:24:02+08:00

    你可以通过升级来做到这一点。我们使用它向我们的 NOC 团队发送短信。

    define serviceescalation {
        service_description *
        host_name first_host, second_host
        first_notification 4
        last_notification 10
        notification_interval 20
        contacts NOC
    }
    
    • 1

相关问题

  • 使用 Nagios 监视 Novell 集群服务

  • 异地nagios?[关闭]

  • 是否有任何可用的图形工具来为主机生成 nagios 用户提供的地图坐标?

  • 我如何开始使用 Nagios?

  • 如何为 Exchange 邮件存储配置 Nagios 警报

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve