我在 4 台服务器上安装了 icinga v2.11.3-1,其中一台作为主服务器,其余的是代理节点,并且它们的配置有些正确,因为它们在主机下的 icingaweb2 中可见。
我想要做的是在远程代理上运行检查命令。
假设我想监控名为 的服务器上的磁盘my-server
。
因此在主节点我添加了以下配置:
首先定义主机和区域:
object Host "my-server" {
import "generic-host"
address = "my-server-host"
vars.os = "Linux"
vars.disks["disk /mnt/data"] = {
disk_partitions = "/mnt/data"
}
vars.agent_endpoint = name
}
object Endpoint "my-server" {
host = "my-server"
}
object Zone "my-server" {
endpoints = ["my-server"]
parent = "master"
}
请注意我添加了vars.agent_endpoint
。
disk
在服务上应用了以下内容:
apply Service "disk" {
check_command = "disk"
// Check is executed on the remote command endpoint
command_endpoint = host.vars.agent_endpoint
zone = host.vars.agent_endpoint
assign where host.vars.agent_endpoint
}
host.vars.disks
这是检查services.conf 配置文件中是否已存在定义:
apply Service for (disk => config in host.vars.disks) {
import "generic-service"
check_command = "disk"
vars += config
}
但它仍会检查父节点中的可用空间并显示结果。
我可能在配置中遗漏了一些东西,我不知道是什么
任何关于此问题的想法都将不胜感激。
谢谢!
答案1
所以..我找不到手动解决它的方法..但我找到了更好的方法!我通常更喜欢手动配置,但我找到了一个称为 director 的 icingaweb2 插件,它使所有配置变得容易得多。
所以项目是在https://github.com/Icinga/icingaweb2-module-director
所以我从所有服务器上删除了 icinga2 配置和包并开始清理,只是在所有服务器上安装了 icinga2,icinga2 node wizard
在所有服务器上运行并在主节点上配置 icingaweb2。在这里我仍然看不到任何服务器,因为没有任何端点连接到它们。
然后我安装了 director,登录到 director 网页界面,用 check 命令hostalive
和配置了一个主机模板Icinaga2 Agent
,Establish connection
并Accepts config
设置为是。
然后我使用这个模板创建了主机。
然后我为每个想要测试的监控项创建了一个服务模板,并将“在代理上运行”设置为“是”。
然后我从该模板服务创建了一个服务并将其附加到我创建的主机模板,这样每个服务都将在我的所有基于代理的服务器上受到监控。
然后我部署了配置,瞧!完美运行。检测主机,并在这些服务器上执行服务监控任务。
这个项目给我留下了深刻的印象,它非常容易理解,而且可以配置我想要的任何东西。