メールを送信する

サーバ監視でエラーが発生した場合は、ルーチンの処理の成否など、運用の現場では処理の結果を把握しておきたいケースが多々あります。今回の記事では Kompira からメールを用いて通知を行う方法をご紹介します。


動作確認環境

ソフトウェア バージョン
Kompira Enterprise 1.4.10.post10
OS CentOS 6.10

または

ソフトウェア バージョン
Kompira Enterprise 1.5.5.post7
OS CentOS 7.8.2003

または

ソフトウェア バージョン
Kompira Enterprise 1.6.2.post4
OS CentOS 8.2.2004

または

ソフトウェア バージョン
Kompira Enterprise 1.6.8
OS CentOS Stream 8

今回の記事では「簡単な Web サーバの監視をする」ジョブフローを利用し、エラーが発生した場合には指定の担当者にメールで通知するジョブフローを作っていきます。

Kompira よりメールを送信する際には mailto() を使用します。ここで文字列で記載された表題、文面などで指定されたアドレスに送信されます。

mailto( 
  to = "tantou@sample.co.jp", 
  from = "operator@sample.co.jp", 
  subject = "障害通知", 
  body = "障害が発生しました。"
)

このように各項目に指定をすると “tantou@sample.co.jp” 宛にメールが送信されます。

mailto() の引数は以下の様なものがあります。各項目の詳細は Kompira ドキュメントを参照ください。

※Kompira Enterprise のバージョンによっては使用できないオプションもあります。

mailto(
  to,             # 宛先
  from,           # 発信元 
  subject,        # 表題
  body,           # 本文
### 以降はオプション
  cc,             # cc 先アドレス
  bcc,            # bcc 先アドレス
  reply_to,       # 返信先のメールアドレス
  html_content,   # html メールを送信する際の本文
  attach_files,   # 添付ファイル
  parents,        # 親メッセージ( mail_parse した結果の辞書)を渡すと、そのメッセージに対する返信としてのメールを送信
  headers,        # メールヘッダの追加項目
  charset,        # 文字コード
  reply_to_all,   # parents でメールを返信する際に true を指定すると、「全員に返信」扱いで送信
  inline_content, # 添付ファイルをインライン展開
  as_string,      # 実際に送信するかわりに、メールヘッダを含むメッセージ全体を文字列化
  smtp_server     # 利用するSMTP サーバ
)

さて、Web サーバの監視ジョブフローは次のようなものでした。

| url = "http://www.kompira.jp/" |

urlopen(url) =>
{ if $STATUS != 0 |
  then:
    print("異常が検出されました")
  elif $RESULT.code != 200:
    print("異常が検出されました。エラーコードは %{code}" % $RESULT)
  else:
    print("正常です")
}

ここで print() での表示の代わりに mailto() で置き換えてみましょう。

| url = "http://www.kompira.jp/" |

urlopen(url) =>
{ if $STATUS != 0 |
  then:
    mailto(
      to="tantou@sample.co.jp",
      from="operator@sample.co.jp",
      subject="障害通知",
      body="異常が検出されました"
    )
  elif $RESULT.code != 200:
    mailto(
      to="tantou@sample.co.jp",
      from="operator@sample.co.jp",
      subject="障害通知",
      body="異常が検出されました。エラーコードは %{code}" % $RESULT
    )
  else:
    mailto(
      to="tantou@sample.co.jp",
      from="operator@sample.co.jp",
      subject="正常通知",
      body="特に異常は認められませんでした。"
    )
}

このようにしてジョブフローの処理結果の通知などをメールで送信する事が出来ます。

mailto ジョブで送信したメールの User-Agent ヘッダは “Kompira verX.XX” となります。”X.XX” の部分は Kompira のバージョンが入ります。

また、メールの送信は Kompira サーバの postfix を通じて行われます。 Kompira からの通知メールが迷惑メールに振り分けされるような場合には、spf 認証設定などを別途行う必要があります。

TOP