Sensu 교정: 클라이언트에서 트리거할 수 없습니다.

Sensu 교정: 클라이언트에서 트리거할 수 없습니다.

저는 Sensu 치료를 처음 접했습니다. 사용자 정의 스크립트로 프로세스를 다시 시작하려고 했습니다.

시나리오: 내 http 링크가 다운되면 스크립트를 수동으로 실행하고 시작하고 싶습니다.

해당 모니터링 확인을 위한 사용자 정의 스크립트를 사용하여 모니터링 내용이 다운되는 경우 스크립트를 자동으로 실행할 수 있는 sensu에 대한 해결을 시도했습니다. 그러나 문제가 발생했습니다. 모든 확인과 연결이 양호하지만 링크가 다운되면 감지 교정자가 클라이언트를 트리거하지 않습니다. 로그와 구성을 게시했습니다. 어디서 잘못되었는지 알려주세요..

이것은 Sensu-서버 로그입니다

{"timestamp":"2016-05-16T09:44:52.768622+0000","level":"info","message":"processing event","event":{"id":"9a9f66c2-e70e-45fb-87fb-c9e9085c8e05","client":{"name":"zubron","address":"10.0.0.110","subscriptions":["zubron"],"version":"0.20.3","timestamp":1463391880},"check":{"command":"/etc/sensu/plugins/check_http -H 10.0.0.110 -p 7077","interval":60,"occurrences":2,"handlers":["remediator"],"subscribers":["zubron"],"standalone":false,"remediation":{"remediate-zubron":{"occurrences":[1,3],"severities":[2]},"trigger_on":["zubron"]},"name":"check-zubron-port","issued":1463391892,"executed":1463391892,"duration":0.002,"output":"connect to address 10.0.0.110 and port 7077: Connection refused\nHTTP CRITICAL - Unable to open TCP socket\n","status":2,"history":["0","0","0","2","2","2","2","2","2","2","2","2","2","2","2","2","2","2","2","2","2"],"total_state_change":4},"occurrences":18,"action":"create","timestamp":1463391892}}
{"timestamp":"2016-05-16T09:44:52.864908+0000","level":"info","message":"handler output","handler":{"command":"/etc/sensu/handlers/sensu.rb","type":"pipe","severities":["critical"],"name":"remediator"},"output":["/etc/sensu/handlers/sensu.rb:108:in `[]': can't convert String into Integer (TypeError)\n","\tfrom /etc/sensu/handlers/sensu.rb:108:in `block in parse_remediations'\n","\tfrom /etc/sensu/handlers/sensu.rb:106:in `each'\n","\tfrom /etc/sensu/handlers/sensu.rb:106:in `parse_remediations'\n","\tfrom /etc/sensu/handlers/sensu.rb:90:in `handle'\n","\tfrom /var/lib/gems/1.9.1/gems/sensu-plugin-1.2.0/lib/sensu-handler.rb:55:in `block in <class:Handler>'\n","REMEDIATION: Evaluating remediation: zubron {\"remediate-zubron\"=>{\"occurrences\"=>[1, 3], \"severities\"=>[2]}, \"trigger_on\"=>[\"zubron\"]} #=18 sev=2\n"]}

이것은 Sensu 서버에 있는 내 확인 파일입니다...

{
    "checks": {
            "check-zubron-port": {
                    "command": "/etc/sensu/plugins/check_http -H 10.0.0.110 -p 7077",
                    "interval": 60,
                    "occurrences": 2,
                    "handlers": [
                            "remediator"
                    ],
                    "subscribers": [
                            "zubron"
                    ],
                    "standalone": false,
                    "remediation": {
                            "remediate-zubron": {
                                    "occurrences": [
                                            1,
                                            3
                                    ],
                                    "severities": [
                                            2
                                    ]
                            },
                            "trigger_on": [
                                    "zubron"
                            ]


                  }
                }
        }
}

이게 내 교정 파일이에요...

{
        "remediate-zubron": {
            "command": "sudo /bin/bash ~/zubron/home/moofwd-zubron-server/bin/start-moofwd.sh",
            "handlers": [],
            "subscribers": [
                "zubron"
            ],
            "standalone": false,
            "publish": false
    }
}

Rest sensu.rb 나는 이것에서 사용했습니다링크

내가 놓친 것이 있나요?

문제가 발생하는 경우 스크립트나 명령을 실행할 수 있는 다른 모니터링 시스템이 있나요?

나는 이미 nagios nectar와 monit을 사용해 보았습니다.

답변1

교정 파일에 오류가 있습니다. "확인" 키가 누락되었습니다.

이렇게 되어야 합니다.

{
    "checks": {
        "remediate-zubron": {
            "command": "sudo /bin/bash ~/zubron/home/moofwd-zubron-server/bin/start-moofwd.sh",
            "handlers": [],
            "subscribers": [
                "zubron"
            ],
            "standalone": false,
            "publish": false
        }
    }
}
  1. 다른 가능한 문제는 클라이언트 구성이 귀하의 이름으로 구독되어야 한다는 것입니다. 즉, 이름은 구독자에서 university구독되어야 합니다 .university

    {
        "client": {
            "name": "university",
            "address": "IP ADDRESS",
            "subscriptions": [
              "linux", "web-server", "system", "university"
            ]
        }
    }
    
  2. 또 다른 문제는 remedediator.rb 또는 sensu.rb의 api_request(:POST)와 관련이 있을 수 있습니다. 다음 방법은 아래 주어진 것과 정확히 같아야 합니다. 일부 오래된 코드에서는 '/checks/request'대신에 '/request'손상이 발생합니다.

    def trigger_remediation(check, subscribers)
        api_request(:POST, '/request') do |req|
            req.body = JSON.dump('check' => check, 'subscribers' => subscribers)
        end
    end
    
  3. 경우에 따라 사례 2와 사례 3을 모두 수정해야 합니다.

다음은 참고 링크입니다. 문제에 대해 더 명확하게 설명합니다.

https://github.com/sensu/sensu-community-plugins/issues/1162

관련 정보