TECH BLOG

MENU

オンプレクラウド

Dr.Sum

Dr.SumDr.Sum Connect

本内容は下記の記事の続編となります。

 

MotionBoardのログをcURLコマンドをつかってCSVファイルとして取得するまでを紹介しました。今回はWeb APIをDr.Sum Connectから実行して、そこで取得したCSVファイルをDr.Sumのテーブルに入れるところを解説します。

 

Dr.Sum ConnectでMotionBoardのログを取得してみる

グローバルリソースの設定

まずはDr.Sum ConnectのグローバルリソースでREST接続設定をします。

[URL]については前記事のcURLを参照してください。

MotionBoard Cloudならば

https://wa-up.motionboard.jp/motionboard
MotionBoard Cloud for Salesforceならば
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”などに変えるとログの量が増え、より詳細な内容が把握できますが、データ量が多くなるので気をつけましょう。

 

 

操作ログ API実行

ここが今回の操作のメインとなるところです。
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ヶ月)

ここではテーブルに入っているデータ量を制御します。
ログデータは大量件数になりますので、いくらでもデータを貯めるわけには参りません。

今回は一律12ヶ月としていますが、大量ユーザーがMotionBoardを活用していたらもっと期間を減らしたり、別テーブルにデータを逃す処理などが必要となります。

日付格納MAPPINGでスクリプト変数を多く作っていたのはそのためです。
ログによってデータ保持期間を変更すると良いかと思います。

DELETE文はシンプルです。
今回は12ヶ月なので、変数は ${去年} としています。

操作ログ 削除

ここでは startDate から endDate までのデータを削除します。
APIも同じ範囲のCSVを持ってきています。同じ期間のデータをテーブルから削除するので、重複なく取り込まれるようになります。

ここで「なんで1日分のデータを入れないの?」と疑問に思う方もいらっしゃると思います。
この理由は 運用の手間をなくしたいから となります。

たとえば3日前にエラーが出てたんですが、自分が休みの日だったので気づかなかったとします。
おそらくエラーは毎日でますので、3日前、2日前、昨日はデータが取り込まれていないでしょう。

ここでエラー復旧させたとき、3日前から取り込み直さねばなりません。ましてや修正中にうっかりデータを入れちゃったら、「何日前を入れればいいんだ?」となって、手間が増えてしまいます。

今回の処理では startDateを8日前、endDateを1日前としています。
テーブル内の同じ期間を削除してから挿入しているので、データが余分に増えることはないのです。
エラー復旧後の処理も簡単ですよね。

余談ですが、エラー復旧は慌ててしまうものです。開発者以外の人が運用している時は尚更そうでしょう。
運用者に優しい設計を心掛けましょう。

操作ログ csv_read

あとはデータを取り込むだけです。
CSVをロードします。

API実行で出力したCSVを読み込みます。
APIで出力したCSVには見出し行がついていません。そのため、[列一覧]は手動で作る必要があります。

さきほどのCREATE TABLE文やマニュアルを参考に、登録してください。

通常ログ bulk_insert

最後にBulkInsertです。
読み込んだCSVをテーブルにInsertしましょう。

処理は以上です。
あとは操作ログ以外の取り込み処理を行いましょう。

最後に

今回はMotionBoardのログを効率的にデータベースに溜め込む処理について解説をしました。
これでデータベースにログ情報が貯まったことと思います。

このデータの活用方法については、情報をまとめ、記事にしていきたいと思います。

まずはデータを貯めた上で、オリジナルのダッシュボードを構築いただけますと幸いです。

この記事にリアクションしてみませんか?

  • 分かりやすい (0)
  • 問題が解決した (0)
あなたのお役に立ててうれしいです!
プロフィールへ

石井 亮介

BIツールのセールスエンジニア・システムエンジニア・カスタマーサクセスを10年以上経験。お客様の課題から適切な製品・使い方を提示することが得意です。 またSIer時代にはさまざまなBIツール・ETLツールの導入にも携わりました。 趣味で高田馬場の町中華でホームページ・オーダーシステムなどをつくってデータ分析をしています。

Related article

Related article関連記事

Pick up

Pick upおすすめ記事

【まとめ】SVFCloud帳票をinvoiceAgentに連携する方法

  • #帳票作成・出力
  • #システム連携
  • #電帳法
  • #文書定義
  • #処理定義

2024.04.18

SVF

Dr.Sum Copilotをインストールしてみた【OpenAI】

  • #Copilot

2024.04.05

Dr.Sum

特定の文字列で分割して階層構造をつくりたい!~DS Scriptで分割する~1

  • #データ加工
  • #DS Script

2023.07.17

Dr.Sum

Ranking

Rankingランキング

1

Excelのデータを加工したい。~変換(横持ち⇔縦持ち)について~

  • #データ取り込み
  • #データ加工

2021.01.19

Dr.Sum

2

Dr.Sum Copilotをインストールしてみた【OpenAI】

  • #Copilot

2024.04.05

Dr.Sum

3

【Excelの取り込み】データベースにExcelデータをインポートしよ…

  • #データ取り込み

2020.08.14

Dr.Sum

Info

Information

ウイングアーク1stからのお知らせ