
Ich bin neu bei der Sensu-Sanierung. Ich habe versucht, den Prozess mit einem benutzerdefinierten Skript neu zu starten.
Szenario: Wenn mein HTTP-Link ausfällt, möchte ich das Skript manuell ausführen und starten.
Ich habe versucht, Sensu zu reparieren, wodurch automatisch ein Skript ausgeführt wird, wenn etwas bei Ihrer Überwachung ausfällt, und zwar mit einem benutzerdefinierten Skript für diese Überwachungsprüfung. Ich habe jedoch ein Problem: Alle Prüfungen und Verbindungen sind in Ordnung, aber wenn meine Verbindung ausfällt, löst Sensu Remediator den Client nicht aus. Ich habe Protokolle und Konfigurationen gepostet. Bitte sagen Sie mir, was ich falsch mache.
dies ist das Sensu-Serverprotokoll
{"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"]}
dies ist meine Prüfdatei auf dem Sensu-Server ...
{
"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"
]
}
}
}
}
und dies ist meine Sanierungsdatei …
{
"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 habe ich davon verwendetVerknüpfung
Habe ich etwas übersehen?
Gibt es ein anderes Überwachungssystem, von dem aus wir Skripte oder Befehle ausführen können, wenn etwas ausfällt?
Ich habe bereits Nagios Nectar und Monit ausprobiert.
Antwort1
Ich sehe einen Fehler in Ihrer Korrekturdatei. Der Schlüssel „checks“ fehlt.
Es sollte so sein,
{
"checks": {
"remediate-zubron": {
"command": "sudo /bin/bash ~/zubron/home/moofwd-zubron-server/bin/start-moofwd.sh",
"handlers": [],
"subscribers": [
"zubron"
],
"standalone": false,
"publish": false
}
}
}
Einige weitere mögliche Probleme bestehen darin, dass Ihre Client-Konfiguration auf Ihren Namen abonniert sein sollte, d. h. der Name sollte in Abonnenten
university
abonniert sein .university
{ "client": { "name": "university", "address": "IP ADDRESS", "subscriptions": [ "linux", "web-server", "system", "university" ] } }
Ein weiteres Problem könnte mit api_request(:POST) in remedediator.rb oder sensu.rb zusammenhängen. Die folgende Methode sollte genau wie die unten angegebene aussehen. In einigen alten Codes steht
'/checks/request'
stattdessen'/request'
und führt zu Störungen.def trigger_remediation(check, subscribers) api_request(:POST, '/request') do |req| req.body = JSON.dump('check' => check, 'subscribers' => subscribers) end end
In einigen Fällen müssen Sie sowohl Fall 2 als auch Fall 3 beheben.
Nachfolgend finden Sie den Referenzlink, um Ihnen mehr Klarheit zu diesem Thema zu verschaffen.
https://github.com/sensu/sensu-community-plugins/issues/1162