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 / 问题 / 733227
Accepted
sherpaurgen
sherpaurgen
Asked: 2015-11-03 02:33:08 +0800 CST2015-11-03 02:33:08 +0800 CST 2015-11-03 02:33:08 +0800 CST

如何使用 Icinga 版本 2 监控远程“https”?

  • 772

我在 VirtualBox 内的 ubuntu 14.04.3 上有 icinga 2.3.11。我试图在此处监视“https”端口 443,例如“ https://mail.google.com ”。以下是我的默认 host.conf 文件片段

object Host "mailserver-01" {
    import "generic-host"
    address = "74.125.136.17"    /* ip for mail.google.com */ 
    vars.os = "Linux"
    vars.http_vhosts["http"] = {
        http_uri = "/"
    }
    vars.http_ssl = "1"
    vars.http_warn_time = "5"
    vars.http_critical_time = "10"

    vars.notification["mail"] = {
        groups = [ "icingaadmins" ]
    }
}

下面是来自默认 services.conf 文件的片段

apply Service "httpS" {
    import "generic-service"
    check_command = "http"
    assign where host.name == "mailserver-01"
}

虽然 icingaweb2 仪表板显示 OK/green,但我不确定它是否正确

linux
  • 2 2 个回答
  • 20020 Views

2 个回答

  • Voted
  1. Best Answer
    dnsmichi
    2015-11-14T12:09:28+08:002015-11-14T12:09:28+08:00

    您的主机将自定义属性“http_vhosts”定义为字典,但从未使用过(没有适用于定义迭代该字典和生成服务对象的规则)。

    相反,服务应用规则(没有 for 循环)只应用服务“httpS”。无意中设置了主机自定义属性“http_ssl” - 它应该将true读取为布尔值而不是数字作为字符串(这始终是正确的)。

    您可能想要检查多个 URI,而不仅仅是 /。

    我的建议(2 个解决方案):

    1) 修复您的服务应用规则并从您的主机对象定义中删除 http_* 自定义属性。而是将它们添加到服务应用规则中:

    apply Service "httpS" {
      import "generic-service"
      check_command = "http"
      vars.http_uri = "/"
      vars.http_ssl = true
      assign where host.name == "mailserver-01"
    }
    

    您可以在文档中找到用作http CheckCommand 命令参数的所有自定义属性:http ://docs.icinga.org/icinga2/latest/doc/module/icinga2/chapter/plugin-check-commands#plugin-check-命令-http

    2)改用服务申请规则并遍历主机上定义的 http_vhosts 字典。

    vars.http_vhosts["https /"] = {
      http_ssl = true
      http_uri = "/"
    }
    

    注意这里的命名:“https /”将是生成的服务名称。http_ssl 和 http_uri 与 http CheckCommand 所需的自定义属性的名称完全相同。

    魔法发生在 apply for 规则中:字典键将是服务名称。字典值是一个嵌套字典,包含 http_uri 和 http_ssl 作为键。在名为“config”的示例中。该配置字典具有与“vars”属性完全相同的结构,这就是为什么我们可以将其添加到服务申请定义中。

    apply Service for (servicename => config in host.vars.http_vhosts) {
      import "generic-service"
      check_command = "http"
      vars += config
    }
    

    使用icinga2 daemon -C验证配置,然后查看生成的服务对象以查看生成了哪些自定义属性(icinga2 对象列表)。

    一件好事 - 定义了 http_vhosts 自定义属性的所有主机都将生成这些服务对象,不需要 extea“分配位置”表达式(也许宁可添加忽略位置以用于异常)。使用正确的策略,您只需编写一次应用规则,并且以后只添加具有匹配自定义属性字典的新主机 :-)

    http://docs.icinga.org/icinga2/latest/doc/module/icinga2/chapter/monitoring-basics#using-apply-for

    虽然解决方案 2) 需要有关 icinga 2 配置语言及其关键字、值类型和魔术技巧的高级知识。然而,我们认为这些方法和最佳实践有助于减少采用和更改文件的长期维护。

    您还可以更进一步,根据主机名对不同的 threshokd 使用 if-else 条件。例如,或者使用函数来定义基于时间段的动态阈值。

    • 10
  2. sherpaurgen
    2015-11-09T02:23:53+08:002015-11-09T02:23:53+08:00

    我用谷歌搜索并找到了 http 命令

    /usr/share/icinga2/include/command-plugins.conf
    

    在这个例子中,我试图监控https://mail.google.com 下面是 /etc/icinga2/conf.d/hosts.conf

    object Host "www.google.com" {
    address = "74.125.136.84"
    check_command = "http"
    vars.http_vhost = "mail.google.com"
    vars.http_ssl = "1"
    }
    

    这是 icingaweb2 仪表板上的样子 在此处输入图像描述

    示例 2

    object Host "secure.example.com" {
        address = "14.28.83.22"
        check_command = "http"
        vars.http_vhosts["secure.example.com"] = {
        http_uri = "/merchant/login.aspx"    
        }
            vars.notification["mail"] = {
            groups = [ "icingaadmins" ]
            }
        vars.http_ssl="1"
    }
    
    • 2

相关问题

  • 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