みなさんはログ情報の分析をしていますか? テキストで出力されるログを眺めたりすることはあるかもしれませんが、
・ここ最近のエラーの傾向
・特定のエラーが起きる曜日や時間帯
などログ情報を分析するためにはデータベースに取り込んだ方が分析がしやすいです。
今回はDr.SumのログをDr.Sumに取り込んで、テーブルに貯める方法を紹介します。
MotionBoardのログの抽出やDr.Sumへの取り込みについてはこちらの記事を参照してください。
前提
今回はバッチでログをダウンロードして、ダウンロードしたCSVをDr.Sum Connectで取り込んでいます。
バッチでCSVを作った後に後続処理で仮想テーブルからのDr.Sumへの取り込みをすれば、バッチだけで完結することも可能です。
Dr.Sumにインポートするバッチについてはこちらの記事を参照してください。
パラメーターファイルをつくる
Dr.Sumのログ出力の方法は簡単につくれます。
下図ですべて説明ができます。
重要なポイントはログ種別と項目です。
いろんなログをひとつのCSVにしてダウンロードすることができるのですが、ログの量が多くなるので、ここではテーブルを分割して取り込んでいます。
図の例ではOLAPログを指定しています。
バッチファイルをつくる
バッチファイルは先ほどの図の実行例を参考にしたり、マニュアルを参考にしてみましょう。
@echo off
rem ##############################################################
rem DS_LogDownLoad_DB.bat
rem DataSpiderから呼び出されるログダウンロードバッチ
rem ##############################################################
set COMMAND_PATH=%DWODS56_TOOLS_PATH%\cmd\JPN
rem OLAPログ
call "%COMMAND_PATH%\dwlog_download" "localhost" 6001 %1 %2 "C:\cmd\bat\parameter\olap.lds" "normal" "C:\data\InputFile\DrSum_Log\OLAP.csv" %3 %4 "100000000"
@echo off
if not %errorlevel% == 0 goto error
goto end
:error
rem ##############################################################
rem エラー処理
rem ##############################################################
rem 異常終了は1を返す
exit /b 1
:end
rem ##############################################################
rem 終了処理
rem ##############################################################
rem 正常終了は0を返す
exit /b 0
%1と%2はDr.Sum Connectからパラメーターを渡します。Dr.Sumのログインユーザーとパスワードですね。
%3と%4はログ取得の開始日と終了日です。
Dr.Sum Connect側の設定は下図のような感じです。
Dr.Sum Connectのスクリプトをつくる
Dr.Sum Connectのスクリプトは下図のように作成します。
ちょっと楽しています。
本来は同じバッチに対して、パラメーターを変えてキックするところですが、1回のバッチでCSVを一括で落とす処理にしています。
またERRORログとOLAPログのところにマッピングを入れています。
マッピングの内容については後述します。
ちょっと特殊なのが、バッチの開始日時、終了日時のフォーマットが hh:mm までなのに対し、データはミリ秒まで入っているので、バッチをキックするスクリプト変数(startDate,endDate)と、テーブルの削除に使うスクリプト変数(DelstartDate,DelendDate)を分ける必要がありました。
バッチ起動の変数の受け渡しはこちらです。
また各テーブルに対し、削除処理が2回入っています。
最初の削除はログを24ヶ月分でキープするためです。
次の削除で、ログで抽出した分だけ(デフォルトは7日前から今に設定)削除をしています。
あとはCSVを読み込んで、テーブルに取り込むだけですね。
ここのテーブル取り込みで1点注意です。
Dr.Sumも文字列型は65,535文字まで入りますが、ログの中にはたまに65,535文字を超える文字列が入るときがあります。このままだと取り込みエラーになってしまうのですね。
さすがに65,535文字以上の文字列は分析に必要ないので、65,535文字を超える可能性のある項目には制限をかけましょう。
こちらでは以下の項目は65,535文字以上は取り込まないようにしています。
・ERRORログ メッセージ
・OLAPログ 行項目
・OLAPログ 列項目
・OLAPログ 集計項目
・OLAPログ 抽出条件式
・OLAPログ 抽出条件式(ドリルダウン/アップ)
上記の項目には数のように左文字列65,535文字のデータを取り込むようにしています。
以上でDr.Sumのログデータ取り込みの説明は終了です。
最後に
ログデータは適切な管理をして取り込みをすれば、有用な資産になります。
不要不急ですぐに必要ではないと思いますが、いざというときや何かあった時の調査に役立ちますので、ぜひ参考にしてデータを定期的に取り込むようにしてください。
またDr.Sumの開発コスト・運用コストを抑えたスクリプトの作り方について下記の記事で説明をしていますので、あわせてご確認いただけますと幸いです。