
Soy nuevo en la remediación Sensu. Intenté reiniciar el proceso con un script personalizado.
Senario: si mi enlace http se cae, quiero ejecutar manualmente el script e iniciarlo.
Probé la corrección en sensu, que permite ejecutar un script automáticamente si algo falla en su monitoreo con un script personalizado para esa verificación de monitoreo. Sin embargo, tengo problemas, todas las comprobaciones y las conexiones son buenas, pero cuando mi enlace no funciona, el remediador sensu no activa el cliente. He publicado registros y configuración, por favor dígame dónde me estoy equivocando.
este es el registro del servidor 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"]}
este es mi archivo de verificación en 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"
]
}
}
}
}
y este es mi archivo de remediación...
{
"remediate-zubron": {
"command": "sudo /bin/bash ~/zubron/home/moofwd-zubron-server/bin/start-moofwd.sh",
"handlers": [],
"subscribers": [
"zubron"
],
"standalone": false,
"publish": false
}
}
Descanse sensu.rb que usé de estoenlace
¿Hay algo que me falta?
¿Existe algún otro sistema de monitoreo desde donde podamos ejecutar scripts o comandos si algo falla?
Ya probé nagios nectar y monit.
Respuesta1
Veo un error en su archivo de reparación. Te falta la clave "cheques".
Debería ser así
{
"checks": {
"remediate-zubron": {
"command": "sudo /bin/bash ~/zubron/home/moofwd-zubron-server/bin/start-moofwd.sh",
"handlers": [],
"subscribers": [
"zubron"
],
"standalone": false,
"publish": false
}
}
}
Otros posibles problemas son que la configuración de su cliente debe estar suscrita a su nombre, es decir, el nombre
university
debe estar suscritouniversity
en suscriptores.{ "client": { "name": "university", "address": "IP ADDRESS", "subscriptions": [ "linux", "web-server", "system", "university" ] } }
Otro problema podría ser con api_request(:POST) en remediator.rb o sensu.rb. El siguiente método debería verse exactamente como el que se indica a continuación. En algún código antiguo, tiene
'/checks/request'
lugar'/request'
y provoca una rotura.def trigger_remediation(check, subscribers) api_request(:POST, '/request') do |req| req.body = JSON.dump('check' => check, 'subscribers' => subscribers) end end
En algunos casos es necesario arreglar tanto el Caso 2 como el Caso 3.
A continuación se muestra el enlace de referencia. Para darle más claridad sobre el tema.
https://github.com/sensu/sensu-community-plugins/issues/1162