我们的团队才刚刚开始使用 icinga2。我们有一个现有的本土工具,可以根据一个参数检查很多不同的事情,所以我们有一系列CheckCommand
对象,这些对象仅因一个参数而异。这些检查需要应用于跨多个主机的多个数据库实例。创建单独CheckCommand
的 s 工作正常,如下所示:
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$"
}
}
我认为这行不通,因为申请规则实际上并没有返回,也许你不能在申请中迭代主机。在这里,我只是想传达目标。
我所追求的是一种将一组服务矩阵分配给位于多个主机上的实例集的方法。有小费吗?