Technical information 運用自動化 技術情報
外部との連携 メールを送信する
サーバー監視でエラーが発生した場合は、ルーチンの処理の成否など、運用の現場では処理の結果を把握しておきたいケースが多々あります。今回の記事ではKompiraからメールを用いて通知を行う方法をご紹介します。
今回の記事では「簡単なWebサーバーの監視をする」ジョブフローを利用し、エラーが発生した場合には指定の担当者にメールで通知するジョブフローを作っていきます。
Kompiraよりメールを送信する際にはmailto()を使用します。ここで文字列で記載された表題、文面などで指定されたアドレスに送信されます。
1 2 3 4 5 |
mailto( to = "tantou@sample.co.jp", from = "operator@sample.co.jp", subject = "障害通知", body = "障害が発生しました。") |
このように各項目に指定をすると”tantou@sample.co.jp”宛にメールが送信されます。
mailto()の引数は以下の様なものがあります。各項目の詳細はKompiraドキュメントを参照ください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
mailto( to, # 宛先 from, # 発信元 subject, # 表題 body, # 本文 ### 以降はオプション [cc, # cc先アドレス bcc, # bcc先アドレス reply_to, # 返信先のメールアドレス html_content, # htmlメールを送信する際の本文 attach_files, # 添付ファイル parents, # 親メッセージ(mail_parseした結果の辞書)を渡すと、そのメッセージに対する返信としてのメールを送信 headers, # メールヘッダの追加項目 reply_to_all, # parents でメールを返信する際にtrueを指定すると、「全員に返信」扱いで送信 inline_content, # 添付ファイルをインライン展開 as_string # 実際に送信するかわりに、メールヘッダを含むメッセージ全体を文字列化 ]) |
さて、Webサーバーの監視ジョブフローは次のようなものでした。
1 2 3 4 5 6 7 8 9 10 11 |
|url = "http://www.kompira.jp/"| urlopen(url) => { if $STATUS != 0 | then: print("異常が検出されました") elif $RESULT.code != 200 : print("異常が検出されました。エラーコードは %{code}" % $RESULT) else: print("正常です") } |
ここでprint()での表示の代わりにmailto()で置き換えてみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|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認証設定などを別途行う必要があります。
Kompiraジョブフローの基礎
ジョブフローの簡単な例
Kompiraの機能
- ・フィールド修飾子でフィールドの入力内容に制約を設ける
- ・Kompiraでの文字列のパターンマッチング
- ・Kompira上でWikiページを作成する
- ・スケジューラを使って定期的にジョブを実行する
- ・ジョブフローを実行するフォームを作成する
- ・テーブル内の情報を選択して処理を実行する
- ・ジョブフローに権限設定をする
- ・ジョブフロー画面の各種設定
- ・Pythonで記述された処理をKompiraから呼び出す
- ・Kompiraオブジェクトのプロパティ,メソッド,フィールドを扱う
- ・Windowsでリモートスクリプトを実行する(その1)
- ・Windowsでリモートスクリプトを実行する(その2)
- ・Kompira上のデータをバックアップする(その1)
- ・Kompira上のデータをバックアップする(その2)
- ・Kompira上のデータをバックアップする(その3)
外部との連携
- ・Kompira cloud Pegionを利用した通知電話の利用
- ・ネットワーク機器へのコマンド投入
- ・KompiraからWindowsGUIアプリケーションを操作する (1/2)
- ・メールを送信する
- ・メール受信をトリガーにしてジョブフローを実行する
- ・アラートメールをフィルタリングして転送する
- ・チャネルを利用して外部システムからデータを受信する
- ・Webページから内容を取得する
- ・Redmineへ新規チケットを登録する
- ・Redmineでのチケット作成をKompiraに通知する
- ・Kompira REST APIを利用して外部からジョブフローを実行する
- ・Kompira REST APIを利用して外部からオブジェクト情報を取得する
- ・KompiraからSlackに通知する
- ・Slackでの投稿をKompiraに通知する
- ・KompiraからTwilioで電話をかける
- ・Zabbixからの通知をKompiraで受信する
- ・syslogをKompiraで受信する
- ・snmptrapをKompiraで受信する
- ・KompiraでExcelファイルの読み書きをする
- ・KompiraでGoogle SpreadSheetの読み書きをする
- ・Active Directoryから情報を取得する
- ・Active Directoryにユーザーを登録する