オンラインアクセスログ集計機能

オンラインアクセスログ集計機能では、画面機能から出力されるアクセスログを元にリクエストID [1] 単位に以下の情報を集計する。

  • リクエスト数
  • 閾値を超えた処理時間のリクエスト数
  • 処理時間(平均)
  • 処理時間(中央値)
  • 処理時間(最大値)
[1]

リクエストIDは設定ファイルに指定することで、集計対象の機能を絞り込むことができる。

設定例は、後述のオンラインアクセスログ解析及び集計サンプルの設定を参照。

サンプル構成

本サンプルは、以下の3種類で構成される。

サンプル名 概要
オンラインアクセスログ解析バッチ オンラインアクセスログを解析し、集計時に必要となる情報のみをCSVファイルに出力するバッチ処理。
オンラインアクセスログ解析結果集計バッチ

オンラインアクセスログ解析バッチで出力されたCSVファイルを元に集計処理を行うバッチ処理。

集計期間は、設定ファイルに指定された日数分となる。

オンラインアクセスログ集計結果レポートサンプル オンラインアクセスログ解析結果集計バッチで出力した集計結果を元にExcelにレポート(集計結果表)を 出力するExcelマクロ。

処理の流れ

上記のサンプルを使用してオンラインアクセスログと元にExcelにレポート情報を出力するまでの処理の流れを以下に示す。

../../../_images/OnlineLogStatistics.png

ちなみに

上記図では、オンラインログ配置サーバと運用担当者様端末を明示的に分けて記載している。 これは、オンラインアクセスログには個人情報が含まれている可能性があり、セキュリティで保護された環境で事項することを推奨するためである。

なお、リクエスト情報集計結果には、個人情報等の項目は含まれないため、セキュリティで保護された環境以外で実行することも可能となっているが、 ログの解析及び集計処理を実行した環境で実行することに特に問題はない。

各サンプルの仕様及び実行手順

オンラインアクセスログ解析バッチ

オンラインアクセスログを解析し、集計処理を行う際に必要となる情報のみをCSVファイルに出力するバッチ処理。

本サンプルは、日次で実行することを想定している。 また、解析結果のCSVファイルは削除せずに解析結果として蓄積すること。過去分の解析結果CSVを蓄積することにより、 後続のオンラインアクセスログ解析結果集計バッチ処理で正確な集計処理を行うことが可能となる。

CSVのファイル名は、「REQUEST_INFO_ + “システム日付(8桁)” + .csv」となる。

本バッチ実行後のCSVファイルには、以下の情報を出力する。

CSVファイルへの出力内容

項目名 備考
リクエストの終了(END)ログ出力日時の年
リクエストの終了(END)ログ出力日時の日
リクエストの終了(END)ログ出力日時の日
プロセス名

プロセス名

※ ログにプロセス名が出力されていない場合は、ブランク

リクエストID リクエストID
処理時間 リクエストの処理時間
ステータスコード 処理ステータスコード

本サンプルを実行するための設定情報

オンラインアクセスログ解析及び集計サンプルの設定を参照。

実行方法

本バッチは、Nablarchのバッチ方式を使用して実装されている。このため、本バッチ実行にはNablarch.jarが必要である。 また、Nablarchバッチはデータベースへの接続が必須となるため、 データベース接続設定 も必要である。

本サンプル実行時に必要となるパラメータを以下に示す。

  • diConfig

    ログ集計機能プロジェクトの「main/resources/statistics-batch.xml」を指定すれば良い。 resourcesディレクトリにクラスパスを設定した場合、指定する値は「statistics-batch.xml」となる。

  • requestPath

    本バッチアクションクラスのクラス名(OnlineAccessLogParseAction)を指定する。

    ログ集計機能プロジェクトの設定値を変更した場合には、設定するクラス名にパッケージ名を含める必要が出てくるので、その場合は設定値を見直すこと。

  • リクエストID

    リクエストIDを必要とする機能(二重起動防止や、バッチ停止制御)を使用しない場合は、本バッチにリクエストIDを付与しなくても実行可能である。 リクエストIDが必要とする機能を使用する場合には、プロジェクトの採番体系に従いリクエストIDを付与すること。

  • userId

    バッチユーザIDを設定する。

オンラインアクセスログ解析結果集計バッチ

オンラインアクセスログ解析バッチで出力されたCSVファイルを元に集計処理を行うバッチ処理。集計期間は、設定ファイルに指定された日数分となる。

ちなみに

対象日数の判定は、解析結果のファイル名に含まれている日付を使用して行う。

以下に例を示す。

  • 解析処理が日次で実行している場合

    以下4ファイルの解析結果をインプットとして集計処理を行う場合で、バッチ実行日次が2012/10/10で集計期間を過去2日とした場合、 20121008から20121010までのCSVファイルが集計対象となる。

    それぞれのCSVファイルの内容は、1日分の解析結果のみが格納されているので、集計範囲は指定した過去2日と基本的に一致する。

    REQUEST_INFO_20121007.csv (7日のオンラインログの解析結果)
    REQUEST_INFO_20121008.csv (8日のオンラインログの解析結果)
    REQUEST_INFO_20121009.csv (9日のオンラインログの解析結果)
    REQUEST_INFO_20121010.csv (10日のオンラインログの解析結果)
  • 解析処理が日次で実行されていない場合(例えば2日に一回実行されていた場合)

    以下4ファイルの解析結果をインプットとして集計処理を行う場合で、バッチ実行日次が2012/10/10で集計期間を過去2日とした場合、 20121008から20121010までのCSVファイルが集計対象となる。

    この場合、20121008のCSVファイルには、7,8の2日分の解析結果が格納されているため、 集計範囲の過去2日以前の7日のログも集計結果として出力される。

    REQUEST_INFO_20121008.csv (7,8日のオンラインログの解析結果)
    REQUEST_INFO_20121010.csv (9,10日のオンラインログの解析結果)

集計結果のCSVファイルは、以下の3種類を出力する。

ファイル名 出力内容
時間別集計結果 時間単位の集計処理を出力する。
年月別集計結果 日単位の集計結果を出力する。
日別集計結果

年月単位の集計結果を出力する。

なお、年月単位の集計結果はシステム日次の年月のデータのみを集計対象とする。 このため、過去分の年月の集計結果は削除せずに蓄積していくこと。

ちなみに

集計範囲が10日のように1ヶ月未満の値の場合、年月集計結果に出力される値は10日のみの集計結果となる。 、30日に集計処理を実行した場合で集計範囲が10日の場合、20日から30日までの範囲が集計対象となる。

CSVファイルへの出力内容

項目名 備考
リクエストID リクエストID
集計対象期間

ファイルごとに以下の値が出力される。

時間別:0~23
日別:1-31
年月別:システム日付の年月
プロセス名 プロセス名
リクエスト数 集計対象期間内のリクエスト数
処理時間が閾値を超えたリクエスト数 処理時間が、設定ファイルで指定された閾値時間を超えたリクエストの数
処理時間(平均) 集計対象期間内での平均値
処理時間(中央値) 集計対象期間内での中央値
処理時間(集計対象期間内での最大処理時間) 集計対象期間内での最大処理時間

本サンプルを実行するための設定情報

オンラインアクセスログ解析及び集計サンプルの設定を参照。

実行方法

本バッチは、Nablarchのバッチ方式を使用して実装されている。このため、本バッチ実行にはNablarch.jarが必要である。 また、Nablarchバッチはデータベースへの接続が必須となるため、 データベース接続設定 も必要である。

本サンプル実行時に必要となるパラメータを以下に示す。

  • diConfig

    ログ集計機能プロジェクトの「main/resources/statistics-batch.xml」を指定すれば良い。 resourcesディレクトリにクラスパスを設定した場合、指定する値は「statistics-batch.xml」となる。

  • requestPath

    本バッチアクションクラスのクラス名(RequestInfoAggregateAction)を指定する。

    ログ集計機能プロジェクトの設定値を変更した場合には、設定するクラス名にパッケージ名を含める必要が出てくるので、その場合は設定値を見直すこと。

  • リクエストID

    リクエストIDを必要とする機能(二重起動防止や、バッチ停止制御)を使用しない場合は、本バッチにリクエストIDを付与しなくても実行可能である。 リクエストIDが必要とする機能を使用する場合には、プロジェクトの採番体系に従いリクエストIDを付与すること。

  • userId

    バッチユーザIDを設定する。

オンラインアクセスログ集計結果レポートサンプル

本サンプルは、オンラインアクセスログ解析結果集計バッチで出力した集計結果を元にExcelにレポート(集計結果表)を出力する。

本サンプルは、集計結果表を作成するサンプルである。表を元にグラフの作成などをする場合には、Excelの機能を使用してグラフ化を行うこと。

実行方法

使用方法の詳細は、ログ集計プロジェクト配下の以下ファイルを参照。

  • /tool/ウェブアプリケーションリクエストレポートツール.xls

オンラインアクセスログ解析及び集計サンプルの設定

オンラインアクセスログ解析バッチ及びオンラインアクセスログ解析結果集計バッチを実行するための設定値について解説する。

設定値は、please.change.me.statistics.action.settings.OnlineStatisticsDefinitionのプロパティへ設定する必要があり、全て必須項目となる。

ただし、標準構成の設定値を運用情報統計機能プロジェクトの以下ファイルに用意してあるので、 本サンプルを使用するプロジェクトの環境などにより変更が必要な項目だけを修正すれば良い構成としている。

  • main/resources/statistics/onlineStatisticsDefinition.xml
  • main/resources/statistics/statistics.config
設定プロパティ名 設定内容
accessLogDir

解析対象のオンラインアクセスログが格納されているディレクトリのパス

絶対パス or 相対パスで指定する。

accessLogFileNamePattern

解析対象のオンラインアクセスログのファイル名パターン

任意の値を指定する場合には、「*」を使用する。(正規表現とは異なるため注意すること)

例::
ファイル名が必ず「access」で始まっている場合には、「access*」と指定する。
accessLogParseDir

アクセスログを解析するために使用する一時ディレクトリのパス

解析対象のアクセスログは、このディレクトリにコピーし解析処理を行う。

絶対パス or 相対パスで指定する。

endLogPattern アクセスログの終了ログを特定するための正規表現パターン
includeRequestIdList

解析対象のリクエストIDリストを設定する。

ちなみに

リクエストIDが増減した場合は、解析対象のリクエストIDの追加(削除)を行うこと。

findRequestIdPattern

終了ログからリクエストIDを抽出するための正規表現

リクエストIDが出力される部分はグループ化するように正規表現を設定すること。

findProcessNamePattern

終了ログからプロセス名を抽出するための正規表現

プロセス名が出力される部分はグループ化するように正規表現を設定すること。

findStatusCodePattern

終了ログからステータスコードを抽出するための正規表現

ステータスコードが出力される部分は、グループ化するように正規表現を設定すること。

logOutputDateTimeStartPosition

ログ出力日時が出力されているエリアの開始位置

0始まりの文字数で設定すること。(String#substringと同じ仕様である)

logOutputDateTimeEndPosition

ログ出力日時が出力されているエリアの終了位置

0始まりの文字数で設定すること。(String#substringと同じ仕様である)

logOutputDateTimeFormat

ログ出力日時のフォーマット

SimpleDateFormatに指定できる型式で設定する。

findExecutionTimePattern

リクエストの処理時間を抽出するための正規表現

処理時間が出力されている部分はグループ化するように正規表現を設定すること。

requestInfoFormatName

解析結果CSVのフォーマット定義ファイルのファイル名

定義ファイルは、ログ集計プロジェクト配下の以下ファイルを使用する。

このフォーマットファイルは、オンラインアクセスログ解析結果集計バッチ で解析結果を読み込む際にも使用する。

  • main/format/requestInfo.fmt

ちなみに

基本的に上記フォーマット定義ファイル以外を指定する必要はない。 ただし、解析及び集計バッチを拡張してフォーマット定義ファイルに出力する項目を 追加(削除)した場合は、拡張したバッチに対応したフォーマット定義ファイルを 作成する必要がある。 このような場合は、あらたに作成したフォーマット定義ファイルの名前を設定する必要がある。

requestInfo.dir

解析結果CSVの出力先ディレクトリの論理名

実ディレクトリとのマッピングは、ログ集計プロジェクト配下の以下ファイルを参照すること。

  • main/resources/statistics/file.xml
requestInfoSummaryBaseName

集計結果CSVの出力先ディレクトリの論理名

実ディレクトリとのマッピングは、ログ集計プロジェクト配下の以下ファイルを参照すること。

  • main/resources/statistics/file.xml
requestInfoSummaryFormatName

集計結果CSVファイルのフォーマット定義ファイル名

定義ファイルは、ログ集計プロジェクト配下の以下ファイルを使用する。

  • main/format/requestInfoAggregate.fmt

ちなみに

基本的に上記フォーマット定義ファイル以外を指定する必要はない。 ただし、集計バッチを拡張してフォーマット定義ファイルに出力する項目を 追加(削除)した場合は、拡張したバッチに対応したフォーマット定義ファイルを 作成する必要がある。 このような場合は、あらたに作成したフォーマット定義ファイルの名前を設定する必要がある。

thresholdExecutionTime

1リクエスト要求の処理時間の閾値(ミリ秒)

処理時間が閾値を超えているリクエスト数を求めるために使用する。 例えば、3000を設定すると3秒を超えているリクエスト数を求める事ができる。

aggregatePeriod

集計期間を設定する。

年月の集計処理をもれなく行うために、最低でも30を設定することを推奨する。