我们的团队刚刚开始使用icinga2。我们有一个现有的本地开发工具,可以根据一个参数检查很多不同的事物,因此我们有一系列CheckCommand
对象,它们仅以一个参数变化。这些检查需要应用于多个主机上的多个数据库实例。创建单独的CheckCommand
可以正常工作,就像这样:
object Host "some.oracle.host" {
import "oracle-host"
address = "172.1.1.1"
vars.db_instances = {
"EnvName" = {
"username" = "username"
"password" = "EQo1OF95G8Gs"
"dbname" = "FOO"
"connstr" = "jdbc:oracle:thin:@(FOO)"
}
}
apply Service for (env => instance in host.vars.db_instances) {
import "oracle-db-svc"
check_command = "check_oracle_foocheck"
display_name = env + "-foocheck"
vars.svc_dbname = instance["dbname"]
}
apply Service for (env => instance in host.vars.db_instances) {
import "oracle-db-svc"
check_command = "check_oracle_barcheck"
display_name = env + "-barcheck"
vars.svc_dbname = instance["dbname"]
}
在这里,我们为每个具有db_instances
变量的主机的每个实例创建新的“ check_oracle_foocheck”和“ check_oracle_barcheck”服务。它运作良好,但问题是,我们要实施许多这样的检查。我正在寻找更简单的东西,例如:
const OracleChecks = ["foocheck", "barcheck"]
apply Service for (check in OracleChecks) {
import "oracle-db-svc"
for(env => instance in host.vars.db_instances){
check_command = "$check$"
display_name = env + "-$check$"
}
}
我认为这是行不通的,因为申请规则实际上并未返回,而且您可能无法在申请中的主机上进行迭代。在这里,我只是在传达目标。
我所追求的是一种对一组服务进行矩阵分配的方法,该方法将服务分配给多个主机上的实例集。有提示吗?