データ統合基盤 CSアナリティクスのメール通知機能

2020.08.04

弊社では、短期間かつお手軽にAWS上にデータ分析基盤を導入可能なCSA(Customer Story Analytics)というデータ統合基盤パッケージを提供しています。

今回は、CSAのジョブ管理ツールであるJMC(Job Management Console)のメール通知機能について紹介します。(参考:JMCの概要説明

なお、JMC含め、CSAの全体像の説明については、こちらのブログでも触れていますので、是非ご一読ください。

目次

メール通知機能概要

  • ジョブ成功時、ジョブ失敗時、メンテンナンス時に登録しているメールアドレスに通知メールを発信する。
  • メールの発信は、Amazon Simple Notification Service(SNS)を利用する。
  • JMC側では、SNSとの連携の為に必要となる情報や、メールの送信タイミング等を設定する。
  • メールアドレスの登録・削除はSNS側で行う。

※なお、今回の記事でSNS側の設定は触れません。操作については、AWSのチュートリアルをご確認下さい。

JMCでの設定

JMCにログインして、ヘッダーメニューから「サイト管理」→「サイト設定」を選択します。

サイト設定画面から「ジョブ実行通知」を選択し、「ジョブ実行通知」の設定画面を表示します。

以下の「ジョブ実行通知」の設定画面では、現在、定義されている通知設定内容が表示されます。これを変更する場合は「①システム設定を利用せずサイト固有の設定を利用する」にチェックを入れることで、以下の②、③、④が変更可能な状態になります。(デフォルトでは、①のボックスが入っていないため、②、③、④は変更できない状態になっています。)

なお、『システム』というのはJMCにおける最上位の概念でその配下に、例えば、開発、本番、テスト等の用途に応じて、1つ以上の『サイト』という領域を構築する形となります。JMCの構築時に弊社は『システム』に対して、設定を行い、『サイト』のデフォルト設定では、その『システム』側の設定をそのまま引き継ぐ形になります。従い、「①システム設定を利用せずサイト固有の設定を利用する」というのは、『システム』で設定した内容とは別の内容をサイトで設定したい場合に、使用します。

設定可能項目は下記の3項目です。

②通知タイミング:上記選択肢から通知が行われるタイミングを設定

③通知用SNS Topic ARN:通知はAWSのSNS(Simple Notification Service)を利用します。SNSでは通知イベント毎に「Topic」というものを定義しますので、そのTopicのARNを正常時、異常時、メンテナンス時、それぞれに設定します。

④異常終了時のソースコード記載:通知メールに失敗した構成要素のソースコードを記載するか否かを設定します。

メール通知内容

ジョブが成功した場合:

ジョブが成功した場合、下記のような通知メールが送信されます。

sample_datamart の実行が完了しました。
成功しています。

実行時間:
2020-07-31 04:00:09 - 2020-07-31 04:00:15 (0:00:06)

ジョブ詳細リンク: 
https://jmc.analyze.sample.co.jp/csa/default/jobs/dag_edit?dag_name=sample_datamart

実行ログリンク: 
https://jmc.analyze.sample.co.jp/csa/default/jobs/log?task_id=run&dag_name=sample_datamart&execution_date=2020-07-31T04%3A00%3A00

通知メールの中では、上記内容に続く形で、ジョブの中に含まれる構成要素が下記のように表示されます。

プログラム

対象のプログラム、実行時間が表示されます。

----------------------------------------------------------------------------------------------------------------
 python/sample/sample_python_code.py  | 2020-07-31 04:00:09 - 2020-07-31 04:00:09 (0:00:00)
----------------------------------------------------------------------------------------------------------------

SQL

対象のSQL、実行時間が表示されます。

----------------------------------------------------------------------------------------------------------------
[SQL] sample/sample_sql_code.sql  | 2020-07-31 04:00:09 - 2020-07-31 04:00:10 (0:00:01)
----------------------------------------------------------------------------------------------------------------

データ連携

対象のデータ連携(連携対象のスキーマ、テーブル名)、実行時間、取込方式、対象S3パス、取込前後の件数が表示されます。

----------------------------------------------------------------------------------------------------------------
[データ連携] sample_ticket.sample_table  | 2020-07-30 02:00:14 - 2020-07-30 02:00:15 (0:00:01)
----------------------------------------------------------------------------------------------------------------
取込方式:差分更新(UPSERT)
対象S3パス:s3://sample-csa-tmp/daily/sample/2020/07/29/

[取込前件数] 2706061
[取込後件数] 2707078 (+1017)

ジョブが失敗した場合:

例えば、構成要素「プログラム」でジョブが失敗した場合は、下記のような本文を含む通知メールが送信されます。

下記例では、存在しないkeyをあえて指定した結果、エラー原因として、そのkeyが表示されています。

----------------------------------------------------------------------------------------------------------------
[エラーログ]
----------------------------------------------------------------------------------------------------------------
[2020-08-03 18:15:53 - プログラム]
'program/python/sample_code_for_erro.py' の実行に失敗しました。
[Pythonコード]
import csa_env

def main():

    all_vars = csa_env.get()

    print('↓設定されているS3バケットのバケット名')
    print(all_vars["s3"]["bucket"])

    print('↓存在しないkeyを指定する')
    print(all_vars["not_exist_key"])


[エラー]
Python実行に失敗しました。reason:'not_exist_key'

----------------------------------------------------------------------------------------------------------------

まとめ

ジョブ実行時の通知設定によって、「データ連携」の日々のデータ登録件数を容易に把握することができ、また、通知メールには登録されたファイルパスが記載されているため、データに問題があった時など便利です。

エラー時においてはどのジョブでエラーがあったか、エラーの内容は何かということも、JMCにログインすることなく、メールの内容で把握することができる為、運用して行く上で大変便利かと思います。

今後もCSAの機能について定期的に発信していきます。