簡體   English   中英

Icinga2分布式監視-端點在其區域中運行所有服務

[英]Icinga2 distributed monitoring - Endpoint running all the services in it's zone

我正在嘗試為多個客戶端設置分布式icinga監視。

我已經根據需要設置了區域,即:

1)在主節點上看起來像這樣

object Zone "edge-dev" { 
  parent="master"
  endpoints=[ 
    "edge-dev-docker",
    "edge-dev-aws"
  ]
}

object Endpoint "edge-dev-docker" {}
object Endpoint "edge-dev-aws" {}
object Endpoint "icinga.master" {}

object Zone "master" {
  endpoints = [ "icinga.master" ]
}

constants.conf:

...
const NodeName = "icinga.master"

const ZoneName = "icinga.master"
...

2)在每個客戶端節點上:

object Endpoint "icinga.master" {
    host = "icinga.master"
    port = "5665"
}

object Zone "master" {
    endpoints = [ "icinga.master" ]
}

object Zone "global-templates" {
    global = true
}

object Zone "director-global" {
    global = true
}

object Endpoint NodeName {}

object Zone ZoneName {
    endpoints = [ NodeName ]
    parent = "master"
}

和constants.conf:

const NodeName = "edge-dev-docker"

const ZoneName = "edge-dev"

const NodeName = "edge-dev-aws"

const ZoneName = "edge-dev"

對於每個節點

現在,我嘗試在每個客戶端節點上的squid進程上設置一些監視:

curl -k -s -u user:pass -H 'Accept: application/json' -X PUT 'https://$ICINGA_HOST:$ICINGA_PORT/v1/objects/checkcommands/check_process' -d '{ "templates": [ "plugin-check-command" ], "attrs": { "command": [ "/usr/lib/nagios/plugins/check_procs" ], "arguments": { "--ereg-argument-array": "$process_regex$", "-c": "$range$" }, "vars.process_regex": "", "vars.range": "1:1", "zone": "edge-dev" } }'  | python -m json.tool

curl -k -s -u user:pass -H 'Accept: application/json' -X PUT 'https://$ICINGA_HOST:$ICINGA_PORT/v1/objects/hosts/edge-dev-ip-docker' -d '{ "templates": [ "generic-host" ], "attrs": { "address": "ip-docker", "check_command": "ssh", "vars.os" : "Linux", "zone": "edge-dev" } }' | python -m json.tool

curl -k -s -u user:pass -H 'Accept: application/json' -X PUT 'https://$ICINGA_HOST:$ICINGA_PORT/v1/objects/hosts/edge-dev-ip-aws' -d '{ "templates": [ "generic-host" ], "attrs": { "address": "ip-aws", "check_command": "ssh", "vars.os" : "Linux", "zone": "edge-dev" } }' | python -m json.tool

curl -k -s -u user:pass -H 'Accept: application/json' -X PUT 'https://$ICINGA_HOST:$ICINGA_PORT/v1/objects/services/edge-dev-ip-aws!edge-dev-ip-aws-squid' -d '{ "templates": [ "generic-service" ], "attrs": { "check_command": "check_process", "vars.process_regex": "'/usr/sbin/squid'", "vars.range": "1:2", "check_interval": 30,"retry_interval": 30, "max_check_attempts": 3, "zone": "edge-dev" } }'  | python -m json.tool

curl -k -s -u user:pass -H 'Accept: application/json' -X PUT 'https://$ICINGA_HOST:$ICINGA_PORT/v1/objects/services/edge-dev-ip-docker!edge-dev-ip-docker-squid' -d '{ "templates": [ "generic-service" ], "attrs": { "check_command": "check_process", "vars.process_regex": "'/usr/sbin/squid'", "vars.range": "1:2", "check_interval": 30,"retry_interval": 30, "max_check_attempts": 3, "zone": "edge-dev" } }'  | python -m json.tool

所有對象都能很好地傳播到客戶端節點。 問題在於,現在每個客戶端都執行兩項服務(即使不是“他”的服務,即“擁有”該服務的主機也不是唯一運行它的服務)。

為了使問題更清楚-現在, edge-dev-ip-aws主機和edge-dev-ip-docker主機都運行edge-dev-ip-docker!edge-dev-ip-docker-squidedge-dev-ip-aws!edge-dev-ip-docker-aws

我如何才能讓每個人僅運行自己的服務?

任何幫助或提示,將不勝感激:)

您的zone.conf在所有服務器上都應該相同。 就像是

object Endpoint "icinga.master" {
        host = "<IP>"
}
object Endpoint "edge-dev-docker" {
        host = "<IP>"
}
object Endpoint "edge-dev-aws" {
        host = "<IP>"
}
object Zone "icinga.master" {
        endpoints = [ "icinga.master" ]
}
object Zone "edge-dev" {
        endpoints = [ "edge-dev-docker", "edge-dev-aws" ]
        parent = "icinga.master"
}
/*
 * Global zone for templates
 */
object Zone "global-templates" {
        global = true
}
object Zone "director-global" {
        global = true
}

由於兩個edge-dev-dockeredge-dev-aws都位於同一群集中,因此它們都可以進行檢查。 因此,如果edge-dev-aws無法正常運行,則edge-dev-docker將執行此操作。 如果您希望它們各自分開,它們將需要自己的區域,例如:

object Endpoint "icinga.master" {
        host = "<IP>"
}
object Endpoint "edge-dev-docker" {
        host = "<IP>"
}
object Endpoint "edge-dev-aws" {
        host = "<IP>"
}
object Zone "icinga.master" {
        endpoints = [ "icinga.master" ]
}
object Zone "edge-dev-docker" {
        endpoints = [ "edge-dev-docker" ]
        parent = "icinga.master"
}
object Zone "edge-dev-aws" {
        endpoints = [ "edge-dev-aws" ]
        parent = "icinga.master"
}
/*
 * Global zone for templates
 */
object Zone "global-templates" {
        global = true
}
object Zone "director-global" {
        global = true
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM