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 / 问题 / 567475
Accepted
Michael Pobega
Michael Pobega
Asked: 2014-01-16 08:33:21 +0800 CST2014-01-16 08:33:21 +0800 CST 2014-01-16 08:33:21 +0800 CST

Nagios 服务器最佳实践?

  • 772

我运行一个中型 Nagios 服务器。它目前监控大约 40 台服务器,提供 180 项服务,并且每天都在增长。

我从以非常深奥的方式配置的旧 Nagios 设置迁移,迫使我从头开始重新配置所有内容。

现在服务器正在运行并可以满足我们的大部分需求,我正在考虑使其更具可扩展性;目前每个主机都是它自己的文件/etc/nagios/hosts/,并且每个主机在同一个文件中都有它的所有服务。这显然不是最优的,但也不是将我的所有配置混淆成数百个不同的文件。

所以我的问题是:对于任何有经验的 Nagios 管理员,在不过度复杂配置的情况下使用主机组/服务组的最佳方法是什么?

linux
  • 5 5 个回答
  • 8134 Views

5 个回答

  • Voted
  1. Best Answer
    asciiphil
    2014-01-17T12:23:42+08:002014-01-17T12:23:42+08:00

    主机组和模板。

    模板让您可以为您的主机和服务定义类,例如“普通服务”、“关键服务”、“低优先级主机”。如果您有多个具有不同职责的团队,它们还可以作为一种有用的方式来划分职责,因此您可以拥有一个“linux host”模板和一个“windows host”模板,每个模板都定义了适当的联系信息。

    您可以在单个资源上使用多个模板,因此您可以组合适当的正交模板。例如,您可以拥有

    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/
      • 命令.d/
        • http.cfg
        • nrpe.cfg
        • smtp.cfg
        • ssh.cfg
      • 主机.d/
        • 主机1.cfg
        • 主机2.cfg
        • 主机3.cfg
      • 主机组.d/
        • 主机组1.cfg
        • 主机组2.cfg

    我倾向于为每种资源类型(命令、联系人组、联系人、升级、主机组、主机、服务组、时间段)创建一个目录,但服务除外,这些服务与使用它们的主机或主机组分组。

    精确的结构可以根据您的组织需求而有所不同。在过去的工作中,我hosts.d为每个不同的站点使用了子目录。在我目前的工作中,大多数 Nagios 主机定义都是由 Puppet 管理的,因此 Puppet 管理的主机有一个目录,手动管理的主机有一个单独的目录。

    请注意,上面还将命令分解为多个文件,通常是通过协议。因此,该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。

    1我也喜欢有一个check_http_blindly命令,基本上就是check_http -H $HOSTADDRESS$ -I $HOSTADDRESS$ -e HTTP/1.; 即使收到 403 响应代码,它也会返回 OK。

    • 13
  2. Keith
    2014-01-17T09:42:08+08:002014-01-17T09:42:08+08:00

    广泛使用服务和主机组以及模板。创建主机组,并将服务分配给主机组。将服务组用于 Web UI 中的依赖关系、升级和逻辑分组。

    如果您有所有内容的组,则添加新主机只需 3 或 4 行:名称、地址、模板和(可选)主机组。一切都可以模板化。

    请务必阅读有关继承的文档,以及节省时间的技巧页面。多重继承可能会变得棘手,但如果使用得当,它可以节省大量时间。

    • 6
  3. philippe
    2014-01-16T12:57:46+08:002014-01-16T12:57:46+08:00

    我曾经以这种方式配置我的 nagios 服务器(在我切换到 Icinga 之前),并且在使用 512Mb 内存 / 1 CPU 服务器至少达到 500 多个服务之前,性能并不缺乏。主机组和服务组可以完全分开处理,我会推荐这种方法,因为它允许每个服务器有一个文件(在这个文件中定义了这个服务器的服务),然后每个主机组/服务组都有一个文件。这只会更容易理解/清楚。

    如果您遇到可伸缩性问题,您可能想看看 nagios-nrpe-server,它在客户端执行检查,而您的 nagios 服务器所做的只是询问结果;从而节省了支票的资源。(Nagios 启动 check_nrpe,请求客户端,在本地执行检查并回复 nagios)。请记住,不能以这种方式处理所有检查(例如 SNMP)。

    最后,即使它似乎超出了您的问题的范围,我建议切换到 Icinga,它的可扩展性更高,由一个真正关心新功能实现和用户支持的更强大的社区持有。配置相同(相同的配置文件,相同的语法)。

    • 1
  4. user3120146
    2014-01-16T12:58:56+08:002014-01-16T12:58:56+08:00

    我正在使用这个方案:

    • 主机,
    • 主机组,
    • 远程服务,
    • 本地服务。

    每个实体都有自己的文件。除了使用模板之外,您始终可以使您的配置更清晰,更具可读性。例如,您可能在每台主机上都有平均负载、磁盘空间、内存。所以创建一个通用模板并使用它是非常容易和方便的。

    • 1
  5. IvanAK
    2014-01-17T12:52:39+08:002014-01-17T12:52:39+08:00

    您不能通过创建组来使配置复杂化。正如 asciiphil 所说,您创建一个文件,或者您可以在某些现有文件中定义相同的组,例如(hosts.cfg 或其他文件),然后您创建这个文件,或者您对 nagios 说这个文件是活动的(如果您创建新字段,如果不是,它已经处于活动状态),这是在 nagios.cfg 文件中放置新创建文件的路径的位置。“cfg_file=/usr/local/nagios/etc/objects/NEW_FILE.cfg”

    另一件事就是根据您的基础设施进行分组。例如,如果我有 linux 和 windows 服务器,我将创建两个不同的组,一个用于 linux,另一个用于 windows。服务也是如此。取决于您希望如何配置和查看何时在监视器上进行监控,您希望如何将它们视为组。

    对于文件或部分,如何创建一个组很简单。

        define hostgroup{
        hostgroup_name novell-servers
        alias Novell Servers
        members netware1,netware2,netware3,netware4
        }
    

    在主机配置上/或者如果您使用模板,或者如果您已经定义了主机模板或服务并使用使用,您可以自动告诉所有主机/windows 或 linux 主机成为您创建的已定义主机组的成员。

    • 1

相关问题

  • Linux 主机到主机迁移

  • 如何在 Linux 机器上找到有关硬件的详细信息?

  • 如何在 Linux 下监控每个进程的网络 I/O 使用情况?

  • 在 RHEL4 上修改 CUPS 中的现有打印机设置

  • 为本地网络中的名称解析添加自定义 dns 条目

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