MENU
本内容は下記の記事の続編となります。
MotionBoardのログをcURLコマンドをつかってCSVファイルとして取得するまでを紹介しました。今回はWeb APIをDr.Sum Connectから実行して、そこで取得したCSVファイルをDr.Sumのテーブルに入れるところを解説します。
まずはDr.Sum ConnectのグローバルリソースでREST接続設定をします。
[URL]については前記事のcURLを参照してください。
MotionBoard Cloudならば
https://wa-up.motionboard.jp/motionboard
https://sfdc-up.variocloud.jp/motionboard
となります。
MotionBoard Cloudマニュアル:Web APIの使い方 |
MotionBoardマニュアル:Web APIの使い方 |
スクリプトはこのようにつくりました。
右上がメイン処理です。
その他の処理についてはログや異常時のメール送信やログの書き込みとなります。
4つのログを取得していますが、これらは同じ処理を使っていますので、今回は赤枠の部分のみ説明します。
その前の下準備として、Dr.Sumにテーブルを用意しましょう。
各ログのCREATE TABLE文は下記に置いておきますので参照してください。
CREATE TABLE MB_Log_通常ログ (
ログ時刻 TIMESTAMP,
ログレベル VARCHAR,
ログカテゴリ VARCHAR,
デバッグメッセージ VARCHAR,
メッセージID VARCHAR,
メッセージ VARCHAR,
実行時間 VARCHAR,
トレースID VARCHAR,
テナントID VARCHAR,
ユーザーID VARCHAR,
セッションID VARCHAR,
アクセスID VARCHAR,
スレッド名 VARCHAR,
ノード名 VARCHAR,
IPアドレス VARCHAR);
ALTER TABLE MB_Log_通常ログ MODIFY COMMENT 'MBSFのログをWebAPIで連携 12ヶ月分';
CREATE TABLE MB_Log_操作ログ (
ログ時刻 TIMESTAMP,
操作内容 VARCHAR,
テナントID VARCHAR,
ユーザーID VARCHAR,
セッションID VARCHAR,
アクセスID VARCHAR,
ノード名 VARCHAR,
IPアドレス VARCHAR);
ALTER TABLE MB_Log_操作ログ MODIFY COMMENT 'MBSFのログをWebAPIで連携 12ヶ月分';
CREATE TABLE MB_Log_パフォーマンスログ (
ログ時刻 TIMESTAMP,
処理開始時間 TIMESTAMP,
ボードパス VARCHAR,
データソースパス VARCHAR,
実データ件数 VARCHAR,
サーバー抽出件数 VARCHAR,
クエリー処理時間 NUMERIC,
全体処理時間 NUMERIC,
キャッシュフラグ VARCHAR,
キャッシュ作成時刻 VARCHAR,
テナントID VARCHAR,
ユーザーID VARCHAR,
セッションID VARCHAR,
アクセスID VARCHAR,
ノード名 VARCHAR,
IPアドレス VARCHAR);
ALTER TABLE MB_Log_パフォーマンスログ MODIFY COMMENT 'MBSFのログをWebAPIで連携 12ヶ月分';
CREATE TABLE MB_Log_データアクセスログ (
ログ時刻 TIMESTAMP,
外部接続名 VARCHAR,
データソース情報 VARCHAR,
テーブル名 VARCHAR,
項目名リスト VARCHAR,
検索条件 VARCHAR,
ログインハンドル VARCHAR,
テナントID VARCHAR,
ユーザーID VARCHAR,
セッションID VARCHAR,
アクセスID VARCHAR,
ノード名 VARCHAR,
IPアドレス VARCHAR);
ALTER TABLE MB_Log_データアクセスログ MODIFY COMMENT 'MBSFのログをWebAPIで連携 12ヶ月分';
まずは日付格納コンポーネント、こちらはMAPPERを使います。
スクリプト変数を各種用意しておきまして、現在時刻からの引き算した「yyyy/MM/dd 00:00:00」か「yyyy/MM/dd 23:59:59」をスクリプト編集に入力します。
startDateとendDateは必須で必要となります。
各種ログをどの期間分を取得するかを決めるものです。今回の処理は「8日前から1日前のログを抽出する」としています。
「去年」「半年」「先月」「2年前」というスクリプトはテーブルにログデータをどれだけ貯めるかを考慮しています。
ログデータは膨大な量になりがちなので、1日あたりのテーブル件数を見て、ログデータの削除をおこないます。
Web APIを実行するための定数を格納します。
出力先のlogLevel、startDate、endDateはこの後のREST接続の[マルチパートフォーム]を設定しなければ表示されません。
まずはREST設定をしてしまうことをオススメします。
MAPPERの中でlogLevelとスクリプト変数のstartDateとendDateを格納します。
logLevelは単一行文字列定数ロジックにして、”INFO”を入れます。
ここを”DEBUG”などに変えるとログの量が増え、より詳細な内容が把握できますが、データ量が多くなるので気をつけましょう。
ここが今回の操作のメインとなるところです。
REST接続でMotionBoardからログをCSV形式でダウンロードします。
使用するコンポーネントは[REST]の[POST実行]です。
ここからはPOST実行処理に必要な情報をタブ毎に記載します。
設定内容は下図となります。
接続先はグローバルリソースで作成した[REST接続設定]を選択します。
パスは操作ログの場合は
rest/log/download/operation
となります。
他のログのパスについてはこちらに記載があります。
MotionBoardマニュアル:ログのダウンロード |
クエリパラメータにはMotionBoardへのログイン情報が入ります。
テナント・ユーザーID・パスワードですね。こちらでは事前にDr.Sum Connectの環境変数に入れていますので、そちらを格納しています。
データ形式を[マルチパートフォーム]にして、
logLevel
startDate
endDate
を文字列で登録します。
こちらを設定すると、先ほどのMAPPING[操作ログ 定数入力]のOutput側に反映されます。
こちらはCSVファイルをどこに出力するかというところです。
任意のファイルパスをセットしましょう。
POST実行処理の設定は以上です。
ここではテーブルに入っているデータ量を制御します。
ログデータは大量件数になりますので、いくらでもデータを貯めるわけには参りません。
今回は一律12ヶ月としていますが、大量ユーザーがMotionBoardを活用していたらもっと期間を減らしたり、別テーブルにデータを逃す処理などが必要となります。
日付格納MAPPINGでスクリプト変数を多く作っていたのはそのためです。
ログによってデータ保持期間を変更すると良いかと思います。
DELETE文はシンプルです。
今回は12ヶ月なので、変数は ${去年} としています。
ここでは startDate から endDate までのデータを削除します。
APIも同じ範囲のCSVを持ってきています。同じ期間のデータをテーブルから削除するので、重複なく取り込まれるようになります。
ここで「なんで1日分のデータを入れないの?」と疑問に思う方もいらっしゃると思います。
この理由は 運用の手間をなくしたいから となります。
たとえば3日前にエラーが出てたんですが、自分が休みの日だったので気づかなかったとします。
おそらくエラーは毎日でますので、3日前、2日前、昨日はデータが取り込まれていないでしょう。
ここでエラー復旧させたとき、3日前から取り込み直さねばなりません。ましてや修正中にうっかりデータを入れちゃったら、「何日前を入れればいいんだ?」となって、手間が増えてしまいます。
今回の処理では startDateを8日前、endDateを1日前としています。
テーブル内の同じ期間を削除してから挿入しているので、データが余分に増えることはないのです。
エラー復旧後の処理も簡単ですよね。
余談ですが、エラー復旧は慌ててしまうものです。開発者以外の人が運用している時は尚更そうでしょう。
運用者に優しい設計を心掛けましょう。
あとはデータを取り込むだけです。
CSVをロードします。
API実行で出力したCSVを読み込みます。
APIで出力したCSVには見出し行がついていません。そのため、[列一覧]は手動で作る必要があります。
さきほどのCREATE TABLE文やマニュアルを参考に、登録してください。
最後にBulkInsertです。
読み込んだCSVをテーブルにInsertしましょう。
処理は以上です。
あとは操作ログ以外の取り込み処理を行いましょう。
今回はMotionBoardのログを効率的にデータベースに溜め込む処理について解説をしました。
これでデータベースにログ情報が貯まったことと思います。
このデータの活用方法については、情報をまとめ、記事にしていきたいと思います。
まずはデータを貯めた上で、オリジナルのダッシュボードを構築いただけますと幸いです。
Related article
Pick up
Ranking
Info