Sensu : хотите, чтобы и удобный пользовательский сигнал тревоги, и необработанный журнал были отправлены в одном и том же предупреждении по электронной почте.

Я работаю над внедрением мониторинга Sensu (работа с графитом + оповещение по электронной почте).. все в порядке, но только часть оповещения по электронной почте. Мне удалось заставить систему электронной почты отправить предупреждение, но в следующем формате: {"id":"a1c608aa-e207-49fe-905d-6037f6db01f2","client":

{"name":"ABC","address":"0.0.0.0","subscriptions":["abc"],"version":"0.23.3","timestamp":1464499552},"check":{"command":"/etc/sensu/plugins/check_load 
-w 8.00,5.00,2.00 -c 
10.00,8.00,3.00","subscribers":["ABC","adef","xyz"],"handlers":["default","email"],"interval":60,"name":"check_CPU_usage","issued":1464499558,"executed":1464499558,"duration":0.005,"output":"CRITICAL 
- load average: 5.54, 5.44, 4.09|load1=5.540;8.000;10.000;0; 
load5=5.440;5.000;8.000;0; load15=4.090;2.000;3.000;0; 
\n","status":2,"history":["1","1","1","1","1","1","1","1","1","1","1","0","1","2","2","2","2","2","2","2","2"],"total_state_change":15},"occurrences":8,"action":"create","timestamp":1464499558}

Но и команда поддержки, и мой товарищ по команде хотели бы иметь как дружественный пользовательский формат в первой половине оповещения по электронной почте, так и необработанный журнал ИЛИ единственный атрибут «выход» во второй половине.

Теперь мой e-mail.json выглядит следующим образом: я знаю, что пытался добавить сюда «вывод», но все равно не работает.. :(

{
  "handlers": {
    "email_devops": {
      "type": "pipe",
      "command": "mail -s \"Development environment sensu alert\" [email protected]",
      "severities": ["warning","critical"],
      "output": " Warning : the process of ::name:: had reached to warning threshold"

    }
  }
}

Я нашел статью, я нашел кое-что по ссылке: http://search-devops.com/m/wbRqS5nPvh2WnZfj1&subj=Sensu+alert+in+Html+format

Но я все еще зациклился на том, как сталкиваться ..

Пожалуйста, помогите.

Заранее спасибо.

Мисс Сумана В.


person swongr18    schedule 28.06.2016    source источник


Ответы (1)


Я предлагаю вам использовать дополнительный обработчик для анализа вывода, сделать его удобным для пользователя, а затем отправить его по электронной почте.

"email_devops": {
  "type": "pipe",
  "command": "my_mail_handler",
  "severities": ["warning","critical"]
}

А затем в «my_mail_handler», который может быть скриптом на любом языке, но, скажем, рубиновым скриптом:

#!/opt/sensu/embedded/bin/ruby
require 'json'
require 'net/smtp'

@event = JSON.parse(STDIN.read, :symbolize_names => true)

message = <<MESSAGE_END
From: [email protected]
To: [email protected]
Subject: Sensu Check Event. Check '#{@event[:check][:name]}' in Node: '#{@event[:client][:name]}' #{@event[:occurrences]} times

Output:
#{@event[:check][:output]}
MESSAGE_END

Net::SMTP.start('localhost') do |smtp|
  smtp.send_message message, '[email protected]', '[email protected]'
end

Естественно, вы можете исследовать, использовать и изменять переменную @event, чтобы создать свою тему и тело.

person Enrique Arriaga    schedule 28.06.2016
comment
Спасибо :)... значит ли это, что мне нужно установить почтовый сервер на том же сервере? Я планирую использовать только почтовую команду (функция postfix).. потому что я думаю, что настроил почтовый сервер, и у него, похоже, возникла проблема.. Прямо сейчас я просто добавляю тело к почтовой команде и предоставляю вложение журнала (последняя с комбинацией файлов can, grep, tail). - person swongr18; 29.06.2016
comment
{ handlers: { email_alarm: { type: pipe, command: (echo \:::SENSU ALARM WARNING::: Пороговое значение должно достигать более 80%, проверьте приложение.\n \; cat /var/log/sensu/ sensu-server.log | вывод grep | grep CheckRabbitMQMessages | tail -1 › /etc/sensu/log/alarm.txt; uuencode /etc/sensu/log/alarm.txt /etc/sensu/log/alarm.txt) | mail -s \Среда разработки sensu alert\ [email protected] , серьезность: [предупреждение, критическое] } } } - person swongr18; 29.06.2016
comment
Нет необходимости в установке почтового сервера. В примере, который я вставил, все управляется рубином «net/smtp». Вам, вероятно, нужно только установить этот гем (если он еще не установлен). - person Enrique Arriaga; 01.07.2016
comment
О, тогда это супер круто .. :) .. я поработаю над этим .. большое спасибо - person swongr18; 01.07.2016