
저는 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
}
}
}
다른 가능한 문제는 클라이언트 구성이 귀하의 이름으로 구독되어야 한다는 것입니다. 즉, 이름은 구독자에서
university
구독되어야 합니다 .university
{ "client": { "name": "university", "address": "IP ADDRESS", "subscriptions": [ "linux", "web-server", "system", "university" ] } }
또 다른 문제는 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
경우에 따라 사례 2와 사례 3을 모두 수정해야 합니다.
다음은 참고 링크입니다. 문제에 대해 더 명확하게 설명합니다.
https://github.com/sensu/sensu-community-plugins/issues/1162