Мы используем sensu для мониторинга определенных процессов на удаленных серверах, на которых установлены клиенты sensu.
Есть ли способ инициировать перезапуск отслеживаемого процесса, когда sensu получает информацию о сбое. Я нашел некоторую информацию в Интернете об обработчике исправления
http://thesoftjaguar.com/posts/2015/06/14/sensu-remediation/
http://dev.nuclearrooster.com/2013/07/27/remediation-with-sensu/
Но это, похоже, не работает для меня, исправление никогда не запускается:
Также есть два ruby-скрипта, которые должны помочь с этим, но не уверен, какой из них использовать:
https://github.com/sensu-plugins/sensu-plugins-sensu/blob/master/bin/handler-sensu.rb
https://github.com/nstielau/sensu-community-plugins/blob/remediation/handlers/remediation/sensu.rb
ОБНОВЛЕНИЕ от 20 апреля:
Мы используем предприятие sensu. Тем временем мне удалось вызвать скрипт remediator.rb, но он не работает должным образом, так как не может прочитать ответ JSON от клиента, и есть следующие исключения:
{"timestamp":"2017-04-20T03:06:41.733000-0700","level":"error","message":"handler output","handler":{"command":"/etc/sensu/plugins/remediator.rb","type":"pipe","timeout":10,"severities":["critical","warning","unknown"],"name":"remediator"},"event":{"id":"f38cd413-575a-46f6-8845-09d713a29815"},"output":["/opt/sensu/embedded/lib/ruby/gems/2.3.0/gems/sensu-plugin-1.4.2/lib/sensu-plugin/utils.rb:54:in `[]': no implicit conversion of String into Integer (TypeError)\n\tfrom /opt/sensu/embedded/lib/ruby/gems/2.3.0/gems/sensu-plugin-1.4.2/lib/sensu-plugin/utils.rb:54:in `block in deep_merge'\n\tfrom /opt/sensu/embedded/lib/ruby/gems/2.3.0/gems/sensu-plugin-1.4.2/lib/sensu-plugin/utils.rb:52:in `each'\n\tfrom /opt/sensu/embedded/lib/ruby/gems/2.3.0/gems/sensu-plugin-1.4.2/lib/sensu-plugin/utils.rb:52:in `deep_merge'\n\tfrom /opt/sensu/embedded/lib/ruby/gems/2.3.0/gems/sensu-plugin-1.4.2/lib/sensu-plugin/utils.rb:22:in `block in settings'\n\tfrom /opt/sensu/embedded/lib/ruby/gems/2.3.0/gems/sensu-plugin-1.4.2/lib/sensu-plugin/utils.rb:22:in `each'\n\tfrom /opt/sensu/embedded/lib/ruby/gems/2.3.0/gems/sensu-plugin-1.4.2/lib/sensu-plugin/utils.rb:22:in `reduce'\n\tfrom /opt/sensu/embedded/lib/ruby/gems/2.3.0/gems/sensu-plugin-1.4.2/lib/sensu-plugin/utils.rb:22:in `settings'\n\tfrom /opt/sensu/embedded/lib/ruby/gems/2.3.0/gems/sensu-plugin-1.4.2/lib/sensu-handler.rb:123:in `api_settings'\n\tfrom /opt/sensu/embedded/lib/ruby/gems/2.3.0/gems/sensu-plugin-1.4.2/lib/sensu-handler.rb:131:in `api_request'\n\tfrom /opt/sensu/embedded/lib/ruby/gems/2.3.0/gems/sensu-plugin-1.4.2/lib/sensu-handler.rb:179:in `stash_exists?'\n\tfrom /opt/sensu/embedded/lib/ruby/gems/2.3.0/gems/sensu-plugin-1.4.2/lib/sensu-handler.rb:191:in `block (2 levels) in filter_silenced'\n\tfrom /opt/sensu/embedded/lib/ruby/2.3.0/timeout.rb:91:in `block in timeout'\n\tfrom /opt/sensu/embedded/lib/ruby/2.3.0/timeout.rb:33:in `block in catch'\n\tfrom /opt/sensu/embedded/lib/ruby/2.3.0/timeout.rb:33:in `catch'\n\tfrom /opt/sensu/embedded/lib/ruby/2.3.0/timeout.rb:33:in `catch'\n\tfrom /opt/sensu/embedded/lib/ruby/2.3.0/timeout.rb:106:in `timeout'\n\tfrom /opt/sensu/embedded/lib/ruby/gems/2.3.0/gems/sensu-plugin-1.4.2/lib/sensu-handler.rb:190:in `block in filter_silenced'\n\tfrom /opt/sensu/embedded/lib/ruby/gems/2.3.0/gems/sensu-plugin-1.4.2/lib/sensu-handler.rb:188:in `each'\n\tfrom /opt/sensu/embedded/lib/ruby/gems/2.3.0/gems/sensu-plugin-1.4.2/lib/sensu-handler.rb:188:in `filter_silenced'\n\tfrom /opt/sensu/embedded/lib/ruby/gems/2.3.0/gems/sensu-plugin-1.4.2/lib/sensu-handler.rb:36:in `filter'\n\tfrom /opt/sensu/embedded/lib/ruby/gems/2.3.0/gems/sensu-plugin-1.4.2/lib/sensu-handler.rb:80:in `block in <class:Handler>'\nwarning: event filtering in sensu-plugin is deprecated, see http:// bit.ly/sensu-plugin\n"]}
Мы использовали следующий скрипт как remediator.rb
https://github.com/sensu-plugins/sensu-plugins-sensu/blob/master/bin/handler-sensu.rb
Проверка выполняется правильно, и мы получаем ответ от клиентского сервера sensu, но похоже, что remediator.rb не может его обработать.
Вот конфигурация:
remediator.json
{
"handlers": {
"remediator": {
"command": "/etc/sensu/plugins/remediator.rb",
"type": "pipe",
"timeout": 10,
"severities": ["critical", "warning", "unknown"]
}
}
}
Сделано это максимально простым для проверки:
/etc/sensu/conf.d/checks
{
"checks": {
"seyren_check": {
"command": "/opt/sensu/embedded/bin/ruby /etc/sensu/plugins/check-procs.rb -p unexisent_process",
"interval": 30,
"subscribers": ["trep"],
"handlers": ["remediator","default","file"],
"occurrences": 1,
"refresh": 10,
"remediation": {
"first_remediation": {
"occurrences": [1, 2],
"severities": [1]
},
"medium_remediation": {
"occurrences": ["3-10"],
"severities": [1]
},
"heavy_remediation": {
"occurrences": ["1+"],
"severities": [2]
}
}
},
"first_remediation": {
"command": "touch /etc/sensu/plugins/test_lr",
"subscribers": ["my.machine.local"],
"handlers": ["default"],
"interval": 10,
"publish": false
},
"medium_remediation": {
"command": "touch /etc/sensu/plugins/test_mr",
"subscribers": ["my.machine.local"],
"handlers": ["default"],
"interval": 10,
"publish": false
},
"heavy_remediation": {
"command": "touch /etc/sensu/plugins/test_hr",
"subscribers": ["my.machine.local"],
"handlers": ["default"],
"interval": 10,
"publish": false
}
}
}
remediation
). - person vase   schedule 11.04.2017remediation
используют, устарели. - person user3292147   schedule 20.04.2017first_remediation
,medium_remediation
иheavy_remediation
имеют неправильную область действия. Они привязаны к полному объектуchecks
, но их область действия должна быть специфичной для проверки, к которой они применяются (в этом случае они должны быть на один уровень глубже), прямо рядом с ключомremediation
внутриseyren_check
. - person vase   schedule 09.05.2017