0

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}

しかし、サポート チームと私のチームメイトの両方が、電子メール アラートの前半に使いやすいユーザー フォーマットと、後半に生のログまたは唯一の「出力」属性の両方を持ちたいと考えています。

今、私のemail.jsonは以下のとおりです。ここに「出力」を追加しようとしたことはわかっていますが、まだ機能しません..:(

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

    }
  }
}

私はいくつかの記事を見つけました、私はリンクごとに何かを見つけました:

しかし、私はまだ一緒にプッシュする方法にこだわっています..

親切に助けてください。

前もって感謝します。

ミス・スマナ W.

4

1 に答える 1

0

追加のハンドラーを使用して出力を解析し、使いやすくしてから電子メールで送信することをお勧めします。

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

そして、「my_mail_handler」では、任意の言語のスクリプトを使用できますが、Ruby スクリプトとしましょう:

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

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

message = <<MESSAGE_END
From: myemail@company.com
To: myemail@company.com
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, 'myemail@company.com', 'myemail@company.com'
end

当然のことながら、@event 変数を探索、使用、および変更して、件名と本文を作成できます。

于 2016-06-28T15:42:35.663 に答える