跨多个变量创建icinga2 Apply For规则

时间:2019-04-26 00:07:10

标签: icinga2

我们的团队刚刚开始使用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$"
  }
}

我认为这是行不通的,因为申请规则实际上并未返回,而且您可能无法在申请中的主机上进行迭代。在这里,我只是在传达目标。

我所追求的是一种对一组服务进行矩阵分配的方法,该方法将服务分配给多个主机上的实例集。有提示吗?

0 个答案:

没有答案