6. ALog EVAを使う

6.1. ALog EVAの概要

本章ではALog EVAのマッピング機能や仕組みについて説明します。

6.1.1. ALog EVAとは

ALog EVAは、他のALogシリーズ製品では取得できないあらゆる種類のログを収集することができる統合ログ管理ツールです。
ALog EVA用ライセンスを登録するだけで、1つのWebコンソールで他のライセンスのログとALog EVAのログをまとめて管理できます。
../_images/LogCollectionMechanism01.png

ALog EVAでは以下の3つを組み合わせながら設定します。

1

収集方式を決定する

2

収集するログの形式の決定しフォーマットの定義をする

3

どのようなアクセスログにするか、出力結果を定義する

イベントログ、Syslog、アプリケーションが出力するログなど、様々なログを収集し、あらかじめ指定したフォーマットにマッピングします。
例えば、CSV形式のログを収集し、ユーザーが適切にマッピング設定を行うと、以下のように出力ファイル(アクセスログ)へ整形・生成することができます。
../_images/ALogEVAOutlineFixed.png

6.1.2. ログのフォーマットについて

ALog EVAでは、5つのログフォーマットを用意しています。

ログフォーマットの選択肢

説明

プレーンテキスト 各種

あらゆるテキストデータのログを取り扱うことができる
ALog EVAではサンプルのテキストデータからログのフォーマットとなる正規表現を自動で作成することのできる特別な機能を持つ選択肢
1つのデータを複数のフォーマットに分類したい場合も本選択肢を使う
区切り文字
(CSV/TSV/DSV)
CSV(カンマ区切り)、TSV(タブ区切り)、スペース区切りなど、特定の区切り文字で区切られたテキストデータのログ
ALog EVAでは、ユーザーが任意の区切り文字を指定できる
イベントログ
(evt/evtxファイル)
evtまたはevtxファイル形式のイベントログ
イベントログからは、標準的な項目およびイベントログ固有のプロパティ値(EventData値)を取得できる

Syslog

Unix系OSが出力するシステムの動作やメッセージの記録に関するテキストデータのログ
ALog EVAで処理可能なSyslogはRFC3164に準拠したもので、「日時」、「ホスト名」、「メッセージ」の順に「スペース区切り」で記録されたフォーマットになっている

JSON

MySQLやHPE 3PAR File Parsonaなどに見られるJSON形式によるログ
ALog EVAでは、JSONパスとして表記可能な値を取得できる
(通常では、キー・値ペアのような単純な形式で、キーを指定すると、それに対応する値が取得できる)

6.1.3. 収集可能なログについて

6.1.3.1. ログの収集方式

ALog EVAでは、4つの収集方式から選択し、ログを収集します。

ログの収集方式

説明

対象サーバのイベントログを収集

マネージャーサーバが、対象サーバからイベントログ形式(evtx)のログを収集する
<条件>
・対象サーバがWindowsサーバであること(Windows Server 2012以上)
・対象サーバの管理者権限を持つアカウントが利用可能であること
・対象サーバの管理共有へアクセスできること

マネージャーサーバのローカルフォルダーから収集

マネージャーサーバのローカルフォルダーに出力または転送されたログを収集する
この収集方式では、「ログのフォーマットについて」に記載のログフォーマットすべてを収集できる
<条件>
・マネージャーサーバが指定のローカルフォルダーに対してファイルの読み取り、削除が行えること
・対象サーバから、マネージャーサーバの指定フォルダーにログを送信する仕組みがあること

対象サーバの共有フォルダーから収集

マネージャーサーバがWindows共有を介して、対象サーバの任意のフォルダーからログを収集する
この収集方式では、「ログのフォーマットについて」に記載のログフォーマットすべてを収集できる
<条件>
・マネージャーサーバから、対象サーバの指定の共有フォルダーに対してファイルの読み取り、削除が行えること

対象サーバにSCP接続して収集

マネージャーサーバが、対象サーバに対してSCP接続を行い、指定したディレクトリからログを収集する
<条件>
・ログディレクトリが対象サーバ登録時に存在していること

注意

以下のファイルはALog EVAでは収集・マッピングできません。

  • バイナリファイル

6.1.3.2. ログの収集方式とログフォーマットの組み合わせについて

ログ収集方式とログフォーマットには、組み合わせがあります。 また、収集方式によって収集できるログフォーマットが異なります。 それぞれの対応表と、差分収集が可能な条件、注意事項を説明します。

ログの収集方式とログフォーマットの各組み合わせにおける収集可能なログファイルの条件

「ログの収集方式」と「ログフォーマット」を組み合わせた場合の動作仕様について説明します。

ログの収集方式

ログフォーマット

プレーンテキスト
区切り文字形式(CSV/TSV/DSV)
Syslog形式
JSON形式

イベントログ形式(evt/evtx)

対象サーバのイベントログを収集

組み合わせ不可

evtxファイル

マネージャーサーバのローカルフォルダーから収集

テキストファイル
ZIPファイル
evt/evtxファイル
ZIPファイル ※

対象サーバの共有フォルダーから収集

テキストファイル
ZIPファイル
evt/evtxファイル
ZIPファイル ※

対象サーバにSCP接続して収集

テキストファイル
ZIPファイル
gzファイル
bz2ファイル
evtxファイル ※
ZIPファイル ※
gzファイル ※
bz2ファイル ※

注意

※はいかなる条件下においても差分収集することができません。

注意

ZIPファイルはDeflate32形式、書庫内のファイルエントリは1つのみとしてください。 tarファイルには対応していません。

注意

「対象サーバにSCP接続して収集」でSyslog(もしくはそれに類する方式でログが出力されるケース)を収集する場合は、[収集したファイルを削除する]設定はチェックを外してください。(削除しないでください)
Syslogはカレントログを削除するとログ出力する先を失い動作が停止してしまい、カレントログファイルを再作成しません。

注意

「マネージャーサーバのローカルフォルダーから収集」、「対象サーバの共有フォルダーから収集」で、[収集したファイルを削除する]設定にチェックをいれた(削除する)場合、収集対象となるログファイルは書き込みやリネームが行われないようにしてください。
書き込みやリネームが行われるログファイルをマネージャーサーバが収集後に削除しようとすると、I/Oが競合してしまう可能性があり、その場合に予期せぬ動作を招きます。

ヒント

「対象サーバにSCP接続して収集」で圧縮形式のファイルを収集する場合、ファイル形式にあわせて下記のコマンドを使用できる必要があります。
 ZIP = unzip 、 gz=gunzip 、 bz2=bunzip2

ヒント

「対象サーバにSCP接続して収集」でダウンロード処理の負荷を減らしたい場合、対象サーバへのZIPコマンドのインストールを推奨します。
ZIPコマンドがインストールされていない環境では、圧縮せずにデータをダウンロードするケースがあります。
(圧縮ファイルを差分収集しないでそのまま収集する場合は、圧縮ファイルの元の形式のままダウンロードされるため、ZIPコマンドは不要です。)

6.1.3.3. 差分収集の条件

収集方式によって差分収集に必要な条件が異なります。

【対象サーバのイベントログを収集】

収集方式「対象サーバのイベントログを収集」を選択した場合は、常に差分収集します。

【マネージャーサーバのローカルフォルダーから収集 / 対象サーバの共有フォルダーから収集】

収集方式「マネージャーサーバのローカルフォルダーから収集」、「対象サーバの共有フォルダーから収集」を選択した場合に、差分収集するためのログファイルに対する条件を示します。 差分収集は[収集したファイルを削除する]設定のチェックを外した(削除しない)場合に行われます。

  1. ログファイルへの書込みは、末尾への追記のみであり、追記の際、ファイル更新日時が更新されていること

新たに出力されたログレコードは、ログファイルの末尾に追記されており、その際、ファイルの作成日時は維持され、ファイルの更新日時は新しくなっている必要がある
  1. ログのローテートは、ファイルの移動またはリネームによって実施されていること(※ローテート機能がある場合)

ログファイルが一定サイズに到達、または一定期間が経過したなどの条件により、ローテートされる場合、移動またはリネームが実施される必要がある
その際、ファイルの作成日時は維持されている必要がある
  1. [収集したファイルを削除する]設定のチェックを外した(削除しない)場合に、ファイルの途中から切り出して収集した際、破損してしまうようなログファイルを対象にしていないこと

尚、上記の前提条件を満たさない場合は、具体的に以下のような問題が発生する可能性があります。

前提条件

前提条件が満たされない場合に発生する問題

1. ログファイルへの書込みは、末尾への追記のみであり、追記の際、ファイル更新日時が更新されていること
追加形式でログが書き込まれることを前提にしているため、差分収集では、ファイルのNバイト目までを収集した場合、次回はN+1バイト目以降を収集する仕様になっている。そのため、リングバッファ形式や最古レコードを上書きする形式などのローテーション方式では、正しくログの差分収集ができなくなる

収集したログファイルのファイル名は、収集対象ファイルの名称と更新日時をもとに作成しているため、更新日時を更新せずにログレコードを追記する形式のログの場合、前回収集したログファイルのファイル名と重複してしまい、後続の処理が正常に行えなくなる
2. ログのローテートは、ファイルの移動またはリネームによって実施されていること
ログファイルを差分収集する際、前回収集したかどうかの判定の一つとして、ログファイルの作成日時をチェックしている。そのため、ログレコードが追記される際にログファイルの作成日時が変更されたり、ログファイルの作成日時が変更されてしまうローテート方式の場合、そのログファイルは別のものと識別してしまい、ログファイルのすべてのログレコードを収集し、ログレコードの重複が発生してしまう
3. [収集したファイルを削除する]設定のチェックを外した(削除しない)場合に、ファイルの途中から切り出して収集した際、破損してしまうようなログファイルを対象にしていないこと
ログファイルの収集では、バイトカットにより差分収集しているため、evtxファイルのように、ファイルにヘッダーとフッターを含むようなログファイルの場合、差分収集により破損した(正しくないフォーマット)ログファイルとなってしまう。ただし、書き込みが行われない状態となったローテート済みのログファイルを収集する場合は、この問題は発生しない

【対象サーバにSCP接続して収集】

収集方式「対象サーバにSCP接続して収集」を選択した場合に、差分収集するためのログファイルに対する条件を示します。 差分収集は[収集したファイルを削除する]設定のチェックを外した(削除しない)場合に行われます。

  1. ログファイルへの書き込みは、末尾への追記方式であること

新たに出力されたログレコードは、ログファイルの末尾に追記されている必要がある

  1. [収集したファイルを削除する]設定のチェックを外した(削除しない)場合に、ファイルの途中から切り出して収集した際、破損してしまうようなログファイルを対象にしていないこと

尚、上記の前提条件を満たさない場合は、具体的に以下のような問題が発生する可能性があります。

前提条件

前提条件が満たされない場合に発生する問題

1. ログファイルへの書込みは、末尾への追記方式であること
追加形式でログが書き込まれることを前提にしているため、差分収集では、ファイルのNバイト目までを収集した場合、次回はN+1バイト目以降を収集する仕様になっている。そのため、リングバッファ形式や最古レコードを上書きする形式などのローテーション方式では、正しくログの差分収集ができなくなる
2. [収集したファイルを削除する]設定のチェックを外した(削除しない)場合に、ファイルの途中から切り出して収集した際、破損してしまうようなログファイルを対象にしていないこと
ログファイルの収集では、バイトカットにより差分収集しているため、evtxファイルのように、ファイルにヘッダーとフッターを含むようなログファイルの場合、差分収集により破損した(正しくないフォーマット)ログファイルとなってしまう。ただし、書き込みが行われない状態となったローテート済みのログファイルを収集する場合は、この問題は発生しない

6.1.4. ライセンスについて

ALog EVAでは、他のALog製品とは異なり、対象サーバ(デバイス)から1日に収集するログの総容量に応じたライセンスが必要です。 対象サーバ(デバイス)数が増加した場合であっても、1日に収集するログの総容量が保有するライセンスのレンジ内に収まる場合は、追加のライセンスは必要ありません。

収集した日別のログ総容量の確認は、ホーム画面の「EVA変換ログ量」、管理画面内の「統計情報」で確認することができます。

[ホーム画面] 「ライセンス」パネル内に表示

../_images/HomeEVALogAmount.png

[管理画面]-[統計情報]

../_images/StatisticsEVALogAmount.png

6.2. 対象サーバ追加

ALog EVAでログ収集の対象サーバを追加する場合の手順について説明します。 事前に「ALogをインストールする」を参照し、ALogのインストールとライセンス登録を行ってください。

6.2.1. 対象サーバの追加手順

ALog EVAでログを収集する対象サーバの追加は以下の手順で行います。

  1. Webコンソールにログインし、画面上部のメニューから[管理]を選択する

../_images/AddTargetServer01.png
  1. 画面左側のメニューから[対象サーバ]をクリックする

../_images/AddTargetServer02.png
  1. [追加]ボタンをクリックする

../_images/AddTargetServer03.png
  1. 対象サーバ追加ウィザードが起動するので、[次へ]ボタンをクリックする

../_images/AddTargetServer04.png
  1. 「サーバの選択」で、[EVA]を選択し、[次へ]ボタンをクリックする

../_images/AddTargetServer05.png
  1. 対象サーバのサーバ名を指定し、[次へ]ボタンをクリックする

../_images/AddTargetServer06.png
同名のサーバで複数の対象サーバ登録を行う場合(1台のサーバ内で複数種類のログを収集する場合)
[名称設定]ボタンをクリックし、接続時に利用する対象サーバのサーバ名(ホスト名またはIPアドレスなど、接続時に利用できるサーバ名)を指定する
[サーバ名]はそれぞれ一意になるように命名する
../_images/AddTargetServer07.png

ヒント

後続の「ログ収集方法の選択」画面で「マネージャーサーバのローカルフォルダーから収集」を選択する場合、こちらで入力した「サーバ名」を接続に使用することはありません。
そのため、[Pingによる存在チェックを行う]のチェックを外し、[サーバ名]にはログが発生したマシン名や機器名を入れることを推奨します。
  1. [新規にログ設定を作成する]にチェックを入れ、[次へ]ボタンをクリックする。なお、テンプレートを使用してマッピングなどを行う場合は[テンプレートを使用する]にチェックを入れる

../_images/AddTargetServer08.png
  1. ログ収集方式には4つの方法があり、「対象サーバのイベントログを収集」、「対象サーバの共有フォルダーから収集」、「マネージャーサーバのローカルフォルダーから収集」、「対象サーバにSCP接続して収集」のいずれかから選択する

../_images/AddTargetServer09.png
  1. [ログ収集方式]で選択した方式により対象サーバ追加の手順が異なるので、該当する収集方式の手順に従い、対象サーバ追加ウィザードを進めていく

[対象サーバのイベントログを収集]

※本方式はWindows Server用です
../_images/AddTargetServer10.png

項目

設定内容

ログ収集方式

[対象サーバのイベントログを収集]を選択する

イベントログ名(チャネル)

取得したいイベントログの[イベント ビューアー] - [プロパティ] から「フルネーム」を確認して設定する

アカウント

対象サーバにおいて管理者権限のあるアカウントを設定する

収集したファイルを削除する

[削除しない/削除する/指定した期間後に削除する(日単位)]から選択する

注意

同一フォルダーに出力された複数のイベントログを同じタイミングで収集した場合、処理がバッティングし、正常に収集できない場合があります。 収集対象とするイベントログが複数ある場合は、出力先のフォルダーを別々にしてください。 同一フォルダーに複数のイベントログを出力しなければならない場合は、「タスクの設定」画面で収集処理の時間が重ならないようにスケジュールを調整してください。

[対象サーバの共有フォルダーから収集]

../_images/AddTargetServer11.png

項目

設定内容

ログ収集方式

[対象サーバの共有フォルダーから収集]を選択する

アカウント

収集アカウントを設定する。共有フォルダー内の収集するログに対して、読み取り/削除が行える権限が必要

フォルダー

収集するログが格納されている共有フォルダーを指定する

ファイル名

収集するファイル名を指定する
ファイル名指定の文字は、大文字小文字を区別せずに動作する
ワイルドカードが使用可能 「*(0文字以上)」、「?(0~1文字)」
 例:「*.csv」 ⇒.csv拡張子を持つファイルのみを収集する

収集したファイルを削除する

[削除しない/削除する/指定した期間後に削除する(日単位)]から選択する

[マネージャーサーバのローカルフォルダーから収集]

../_images/AddTargetServer12.png

項目

設定内容

ログ収集方式

[マネージャーサーバのローカルフォルダーから収集]を選択する

フォルダー

収集するログが格納されているローカルフォルダーを指定する

ファイル名

収集するファイル名を指定する
ファイル名指定の文字は、大文字小文字を区別せずに動作する
ワイルドカードが使用可能 「*(0文字以上)」、「?(0~1文字)」
 例:「*.csv」 ⇒.csv拡張子を持つファイルのみを収集する

収集したファイルを削除する

[削除しない/削除する/指定した期間後に削除する(日単位)]から選択する

注意

本方式ではALogの管理者アカウント(共通アカウント)でログを収集します。マネージャーサーバの管理者アカウントは、収集するログの読み取り、削除が行える権限が必要です。

[対象サーバにSCP接続して収集]

パスワード認証

公開鍵認証

../_images/AddTargetServer13-01.png ../_images/AddTargetServer13-02.png

項目

設定内容

ログ収集方式

[対象サーバにSCP接続して収集]を選択する

認証方式

[パスワード認証 / 公開鍵認証]を選択する

ユーザー名

SCP接続に使用するユーザーアカウントを指定する

パスワード

[パスワード認証]の場合:指定したユーザーアカウントに紐づくパスワードを設定する
[公開鍵認証]の場合:「ログファイル収集時にsudoが必要」ONの場合は指定したユーザーアカウントに紐づくパスワードを設定する

秘密鍵ファイルパス

※[公開鍵認証]の場合に設定
対象サーバに設定された公開鍵に対する秘密鍵を指定する

秘密鍵パスフレーズ

※[公開鍵認証]の場合に設定
秘密鍵が暗号化されている場合、パスフレーズを指定する

ポート番号

ポート番号を指定する

ログディレクトリ

収集するログが格納されているディレクトリを指定する

ファイル名

収集するファイル名を指定する
ファイル名指定の文字は、大文字小文字を区別せずに動作する
ワイルドカードが使用可能 「*(0文字以上)」、「?(0~1文字)」
 例:「*.log」 ⇒.log拡張子を持つファイルのみを収集する

ログファイル収集にsudoが必要

収集時にスーパーユーザー権限が必要なログファイルを削除する場合はチェックをつける

作業ディレクトリ

ログ収集のために一時的に使用するディレクトリを指定する

収集したファイルを削除する

収集したログを収集後に削除する場合はチェックをつける

コマンドテストを実行する

対象サーバ環境でログ収集タスクが実行可能かテストする
時間がかかる場合がある

ヒント

公開鍵で認証する場合はあらかじめ対象サーバに公開鍵を設定してください。

注意

1つの対象サーバに対し、複数のマネージャーサーバから「対象サーバにSCP接続して収集」方式で収集する場合、「作業ディレクトリ」は異なるディレクトリを指定する必要があります。

  1. ログの収集タスクの[スケジュールタイプ]および、[開始時刻]を指定する。スケジュールタイプを「繰り返し」を選択した場合は、タスクスケジュールの[間隔]および[開始日]を指定し、[次へ]ボタンをクリックする

../_images/AddTargetServer14.png
  1. 収集するログのファイル形式を選択する。次に[プレビュー]ボタンをクリックする事でプレビュー画面が表示される。その際、入力するログの一部をサンプルデータとして収集する

../_images/AddTargetServer15.png
  1. 収集するログのフォーマットに応じて、下表の手順に従い、対象サーバ追加ウィザードを進めていく

ファイル形式

手順

プレーンテキスト

[文字コード]を指定し、[自動フォーマット設定]ボタンをクリックする
自動フォーマット設定画面でフォーマット設定を行ってから、[次へ]ボタンをクリックする
自動フォーマット設定の詳細は「[自動フォーマット設定]」 を参照

CSV/TSV/DSV

ログファイルの[文字コード]および[区切り文字]を指定し、[次へ]ボタンをクリックする
入力ファイルにヘッダー情報が含まれる場合は、[入力ファイルにヘッダーを含む]のチェックボックスにチェックを入れる
また、コメント行を含むログファイルの場合は、[コメント行の先頭文字]にコメントアウトで使用される文字を指定し、[次へ]ボタンをクリックする

イベントログ

必要に応じて、[イベントID]に取得対象とするイベントIDを指定し、[次へ]ボタンをクリックする(複数指定可)

JSON

[文字コード]を指定し、[次へ]ボタンをクリックする

Syslog

[文字コード]を指定し、[次へ]ボタンをクリックする

../_images/AddTargetServer20.png ../_images/AddTargetServer16.png ../_images/AddTargetServer17.png ../_images/AddTargetServer18.png ../_images/AddTargetServer19.png

ヒント

後続の画面においても[プレビュー]ボタンをクリックし、サンプルデータ(入力するログの一部)を収集することはできますが、この段階で収集することで後続処理でのファイルの読み込みが必要なくなる上、内部関数(F())などの処理があらかじめ評価され、入力補助が有効に利用できるようになります。

注意

書き込み(レコードの追記)が継続しているログファイルを収集する場合は、[入力ファイルにヘッダーを含む]にチェックを入れないでください。 このオプションは入力ファイルの1行目をマッピング処理から除外するため、ヘッダー以外のログ行を除外してしまうことがあります。

  1. アクセスログの各項目(「時刻」、「ユーザー」、「サーバ」、「対象」、「操作」、「詳細」)にマッピングする列や文字列などを選択、または個別に定義する。

  • ALog EVAで提供される関数および、MicrosoftC# の関数の一部を利用できる。設定方法の詳細は、「ログのマッピング」 を参照

../_images/AddTargetServer21.png

ヒント

ALog EVAでは、以下のnamespaceを持つMicrosoft C#の関数を利用することが可能です。

  • System

  • System.Collections.Generic

  • System.Linq

  • System.Text.RegularExpressions

  • テンプレートを選択している場合、「テンプレートのマッピング値を使用する」チェックボックスが表示される。

    • チェックON: 選択したテンプレートのマッピング値をそのまま使用する。バージョンアップでテンプレートの内容が変更になった場合に対象サーバを編集せずに追随することができる

    • チェックOFF:テンプレートのマッピング値を変更できる

../_images/AddTargetServer25.png

  1. [プレビュー]ボタンをクリックし、入力したログが期待したとおりにマッピングされているかを[出力]の内容で確認する。[出力]が期待通りになっている事を確認したら、「マッピング設定 – 出力」画面にある[次へ]ボタンをクリックする

  • 期待どおりにマッピングが出来ていない場合は、「マッピング設定 – 出力」で行ったマッピング設定を修正して、プレビュー画面右下の[再描画]ボタンをクリックし、再度[出力]の内容を確認する

  • マッピング設定とプレビューを繰り返し、希望するログに調整を行う

../_images/AddTargetServer22.png ../_images/AddTargetServer23.png

ヒント

サンプルとするログを変更する場合は、プレビュー画面の[サンプルデータの変更]ボタンをクリックして、取り込むログを指定します。 詳細は「サンプルデータの指定方法」を参照してください。

ヒント

サンプルデータを最新の情報にしたい場合は、[サンプルデータの変更]から「対象サーバからサンプルファイルを収集」をクリックしてください。

注意

マッピングで指定できる式評価外の文字は、文字種によってエスケープシーケンスで入力する必要があります。 詳細は「特別な文字列のエスケープ方法」を参照してください。

  1. 「対象サーバ追加ウィザードの完了」の画面が表示されたら、設定内容に誤りがないことを確認し、[完了]ボタンをクリックする

../_images/AddTargetServer24.png

6.2.2. プレビュー画面の見方とサンプルデータの指定方法

収集したログをマッピングした場合に、どのようなフォーマットでアクセスログとして出力するかを確認するのがプレビュー画面です。
以下では、プレビュー画面の見方とサンプルデータの指定方法について説明します。

6.2.2.1. プレビュー画面の見方

「プレビュー」画面は、以下の2つによって構成されています
  1. サンプルデータの変更や入力したログを指定されたファイル形式などに従って変数に割り当てた状態を表示する「ログの入力部」

  2. 「マッピング設定 – 出力」の定義に従って、出力されるアクセスログのマッピング結果を表示する「アクセスログの出力部」

また、「マッピング設定 – 出力」との関係は以下の図のようになっています。
../_images/ALogEVAMappingPreview.png

プレビュー画面

項目

説明

ログの入力部

サンプルデータ

「ログ収集方法の選択」や「マッピング設定 - 入力」の設定に従い、マッピングする元となるログのファイル名とその容量および、収集方式が表示される
また、[サンプルデータの変更]では、対象サーバから現在あるログを収集する、またはサンプルデータとして入力するログを個別に指定することで、入力するログ(サンプルデータ)を変更できる

入力

入力されたログ(サンプルデータ)が変数に割り当てられた状態で表示される
この入力に表示された情報を参考に「マッピング設定 - 出力」画面でマッピング設定を行っていく
(プレビューされるのは最初の100行分)

アクセスログの出力部

出力

「マッピング設定 - 出力」画面で行ったマッピング設定に従って、整形した場合に出力されるアクセスログが表示される
[詳細項目ごとに表示列を分割]にチェックを入れることで、「詳細」欄の項目を列に分割して表示できるので、アクセスログの各レコードで、どのような詳細項目が出力されるかを確認できる

ヒント

対象サーバ追加ウィザードのダイアログとプレビューのダイアログは、ブラウザ上で同時に表示して並べることが可能です。 並べながらマッピング設定の調整を行ってください。

6.2.2.2. サンプルデータの指定方法

1. 対象サーバ追加ウィザードの「マッピング設定 – 入力」または、「マッピング設定 – 出力」画面の左下にある[プレビュー]ボタンをクリックする

../_images/SampleDataSpecification01.png ../_images/SampleDataSpecification02.png
  1. 「プレビュー」画面の右上にある[サンプルデータの変更]ボタンをクリックする

../_images/SampleDataSpecification03.png
  1. 対象サーバから、入力するログファイル(サンプルデータ)を収集する場合は、「対象サーバからサンプルファイルを収集」をクリックする

ログ収集設定で指定した方法によってログファイル(サンプルデータ)を取得する
入力するログファイルを任意の格納先から指定する場合は、「サンプルファイルをアップロード」をクリックする
../_images/SampleDataSpecification04.png

注意

[サンプルファイルをアップロード]から指定するファイルは、圧縮されていないものを指定してください。

ヒント

「対象サーバからサンプルファイルを収集」では、収集方式が「対象サーバの共有フォルダーから収集」、「マネージャーサーバのローカルフォルダーから収集」または「対象サーバにSCP接続して収集」を指定していた場合、指定フォルダーおよび指定ファイルにマッチするファイル名で、かつ更新日時が最も新しい1ファイルを収集します。
「対象サーバのイベントログを収集」を指定していた場合は、指定したイベントログ名のカレントログをそのまますべて収集します。そのため、最大サイズを大きく設定している場合、サンプルデータの取得に時間を要することがあります。
  1. (「サンプルファイルをアップロード」ボタンをクリックした場合) [参照]ボタンをクリックして、アップロードするログファイルを指定し、[アップロード]ボタンをクリックする

../_images/SampleDataSpecification05.png

6.2.3. ログ収集の動作確認

対象サーバの登録が完了した後、ログ収集の動作確認を行います。
手順はすべてステータス画面から実施可能です。
../_images/LogCollectionConfirmation.png

  1. Webコンソールの[管理]をクリックし、「ステータス」画面を表示する

  2. 「ステータス」画面で、対象サーバの一覧から動作を確認したい対象サーバの[タスク操作]ボタン、[開始]ボタンをクリックする。開始後、収集が完了するか確認する

  3. 「ステータス」画面で、管理サーバの一覧から「ログ変換」の[タスク操作]ボタン、[開始]ボタンをクリックし、変換が完了するか確認する

注意

「対象サーバにSCP接続して収集」方式で収集に失敗する場合、必要なコマンドが対象サーバ環境で不足している可能性があります。「サーバ編集」画面の「コマンドテストを実行する」にチェックを入れ[OK]ボタンをクリックすることで、不足しているコマンドがないか確認できます。

6.2.4. 登録した対象サーバの設定変更

すでに登録されている対象サーバの各設定を変更する場合は、以下の手順で行います。

  1. 「管理」画面の[対象サーバ]から「対象サーバ」画面を表示し、設定を変更したいサーバをクリックする

../_images/ChangeTargetServerSetting01.png
  1. 「サーバ編集」画面が表示されるので、各設定を適宜変更する。変更後、[プレビュー]ボタンをクリックする

../_images/ChangeTargetServerSetting02.png ../_images/ChangeTargetServerSetting03.png
  1. プレビュー画面で意図したとおりにアクセスログが出力されるかを確認する

  • 意図したとおりにマッピングが出来ていない場合は、マッピング設定の 入力/出力を修正して、プレビュー画面右下の[再描画]ボタンをクリックし、再度[出力]の内容を確認する

  • マッピング設定とプレビューを繰り返し、希望するアクセスログとなるよう調整する

../_images/ChangeTargetServerSetting04.png ../_images/ChangeTargetServerSetting05.png
  1. マッピング設定が確定したら、プレビュー画面を閉じて、「サーバ編集」画面下部にある[OK]ボタンをクリックする


6.3. ログのマッピング

本章ではALog EVAで収集したログの入出力およびマッピングについて説明します。

6.3.1. マッピング設定 – 入力

6.3.1.1. ログフォーマットの選択

各画面で設定する項目について解説します。

ログフォーマット

項目

説明

プレーンテキスト

文字コード

入力されるログファイルの文字コードを指定する

自動フォーマット設定

入力されるサンプルデータから候補となる正規表現を自動生成する

CSV/TSV/DSV

文字コード

入力されるログファイル(テキスト)の文字コードを指定する

区切り文字

各列を区切る文字を指定する
カンマ、タブ、スペースなど、ユーザーは任意の文字を指定できる
ただし、ダブルクォーテーションや連続した同じ文字などは指定できない

入力ファイルにヘッダーを含む

この設定を有効にすると、ファイルの最初の行はファイルのヘッダーとして扱われ、マッピング処理の対象から除外される

空のフィールドを除外

この設定を有効にすると、指定した区切り文字で区切られたフィールドの内容が空だった場合にフィールドとして扱われない
例: 区切り文字「空白」の際、連続空白を除外したい

コメント行の先頭文字

ここで指定した文字が行頭に出現した場合、当該行はコメント行として扱われ、マッピング処理の対象から除外される

イベントログ

イベントID

収集したイベントログのうち、イベントIDを限定したい場合に使用する
- 複数のイベントIDを指定したい場合は、カンマ区切りで列挙する
- 特定の範囲のイベントIDを指定したい場合は、「数字-数字」のようにする
- 処理対象外(除外)とするイベントIDの指定はできない
- イベントIDの指定は最大23個

Syslog

文字コード

入力されるSyslog形式のログファイルの文字コードを指定する

JSON

文字コード

入力されるJSON形式のログファイルの文字コードを指定する

../_images/MappingSettingInput05.png ../_images/MappingSettingInput01.png ../_images/MappingSettingInput02.png ../_images/MappingSettingInput03.png ../_images/MappingSettingInput04.png

注意

V8.2.0以前に「プレーンテキスト」を選択している対象サーバでは、V8.3.0以降のバージョンアップを行うと編集画面で「プレーンテキスト(旧方式)」と表示されます。 「プレーンテキスト(旧方式)」を使用している場合、「プレーンテキスト」への切り替えを推奨します。

ヒント

文字コードの指定では、代表的な文字コード(utf-8/utf-16/shift_jis/euc-jp)についてはリストから選択できます。
上記の文字コード以外にもMicrosoft .NET Frameworkでサポートされている文字コードを指定できます。

6.3.1.2. [自動フォーマット設定]

自動フォーマット設定画面は、できるだけ簡単にフォーマットを設定するための画面です。

ポイント

  • 難しい正規表現を自分で考えなくても、サンプルデータをもとにデータのフォーマットを表す正規表現をALogが自動で考える

  • 候補から希望する正規表現を選択するだけでいい

  • 1つのデータに対し、複数のフォーマットを設定できる

../_images/AutoFormat.png

使い方

1

適切なサンプルデータを指定する

2

[時刻フォーマット]タブ で時刻の正規表現を決定する

3

[フォーマット(数字)]タブ で時刻以外の正規表現を決定する

4

プレビューで確認する、必要に応じてフォーマット設定を調整する

ヒント

サンプルデータは先頭から2000行分を表示します。

注意

各項目がダブルクォーテーション("")で囲まれているログは使用できません。
(例)
"2021/04/01 10:10:10.000","AMIYA.CO.JP\sample","server","C:/User","WRITE","ClientIP:127.0.0.1" Count:1"
6.3.1.2.1. [時刻フォーマット]タブ
  1. サンプルデータから時刻フォーマットを抽出するため[自動抽出]ボタンをクリックする

  2. ALogが自動でフォーマットを抽出することを確認

  • サンプルデータの時刻部分がマークされる

  • 「正規表現文字列」欄に正規表現が表示される

../_images/FormatSetting01.png
  1. 変更したい場合は、「正規表現文字列」欄を手動で変更し[自動抽出]ボタンをクリックする

ヒント

  • Microsoft C#で使われる一般的な正規表現文字列が使用可能です。

  • 自動判別できる時刻フォーマットは 自動判別可能な時刻フォーマット と同様です。

  • 1つの対象サーバに対し、時刻フォーマットは1つのみ設定できます。

ヒント

サンプルデータに時刻を表す箇所がない場合は、「正規表現文字列」欄に何も表示されません。
時刻フォーマットを設定しない場合、「それ以外のフォーマットタブ」で自動作成される正規表現の精度が下がる可能性があります。
6.3.1.2.2. [フォーマット(数字)]タブ
  1. [追加]ボタンをクリックし、フォーマットタブを作成、この時点でALogが自動でフォーマットを抽出することを確認

  • サンプルデータ内に存在するフォーマットの正規表現が「正規表現文字列の候補一覧」に表示される

  • このとき自動生成される正規表現は、時刻として指定した箇所の次の文字からとなる

  1. 候補一覧をクリックしながら、希望の正規表現を決定する

  • 「正規表現文字列」欄に正規表現が表示される

  • クリックしていくと、サンプルデータにマークされ可視化されるため、どの行のどの部分が抽出されているかがわかる

  • マークのカラーは左下のグループ名と連動している

../_images/FormatSetting02.png
  1. フォーマット名、正規表現文字列、グループ名を必要に応じて変更し、プレビューで確認する

フォーマット名について
そのログを指し示すわかりやすい名前を付ける
 例:1つ目のフォーマットに「LOGIN」、2つ目のフォーマットに「LOGOUT」など
出力の設定では初期状態で操作欄に入る設定になっている
正規表現文字列について
Microsoft C#で使われる一般的な正規表現を使用して変更することができる
グループ名について
グループ名は、次に設定する「マッピング設定 - 出力」において関数として使用される
出力側でわかりやすくしたい場合は事前にここで変更する
同一フォーマット内で同じグループ名を設定することはできない
複数フォーマットでは同じグループ名を設定することができる
../_images/FormatSetting02-2.png

ヒント

出力設定画面に遷移した際、初回はフォーマット設定で作成したグループ名は自動で詳細キー、詳細値欄に入力されます。
複数フォーマットで同一のグループ名が複数存在していた場合、詳細キーに表示されるのは一つのみです。
※戻るボタン等を押して出力設定画面への遷移が二回目以降の場合は詳細キー、詳細値欄への自動入力はされません。
  1. 複数のフォーマットを作成したい場合は、この作業を繰り返す

複数のフォーマットを作成する例
サンプルデータのログが100行あり、最初に定義したフォーマット1では10行目~30行目のログが抽出できなかった場合、フォーマット2を作成して10行目~30行目のログを抽出する
  • タブ数の制限はない

  • 同じ行のログで複数のフォーマット設定で抽出された場合、左側のフォーマット設定タブの内容を優先する


6.3.2. マッピング設定 - 出力

ALog EVAでは、あらかじめ用意された関数およびMicrosoft C# で使用可能な関数の一部を利用して、マッピングの設定を行います。
収集したログは設定されたマッピングルールに従い処理され、アクセスログとして出力されます。

6.3.2.1. マッピング処理の概要

ALog EVAの変換処理は、大きく「デコーダ部」と「マッピング部」に区分することができます。
「デコーダ部」では、収集したログファイルの形式に応じて、「行の分割」を行い、次に指定された区切り文字などに従って、「列の分割」をし、変数への「列の展開」が行われます。
「デコーダ部」で処理されたログは、マッピング部に引き渡され、マッピング設定に従って、「除外フィルターの設定・評価」や「アクセスログへの変数の割り当て」が行われ、最終的にアクセスログとなります。
../_images/MappingProcessOutlineFixed.png

6.3.2.2. デコーダ部

ALog EVAの「デコーダ部」では、以下のような処理を行っています。

6.3.2.2.1. 行の分割処理
テキストファイルである区切り文字形式(CSV/TSV/DSV)やSyslog形式、プレーンテキスト形式のログファイルでは、改行コードにより1行ずつ行を分割処理します。
一方、イベントログ形式のログファイルでは、1イベントレコードを1行と見なし、行の分割処理を行います。

注意

ALog EVAでは、複数行のログを1つの行として扱うことができません。
そのため、1つの処理で複数行のログが出力されるケースでは対象サーバ側のログ出力設定を変更し、1行のログにする必要があります。
6.3.2.2.2. 列の分割処理および列の展開
行の分割処理後、指定された区切り文字に従って、各行のログを列に分割します。
分割したログは、ALog EVAが用意した関数に展開します。

6.3.2.3. マッピング部

ALog EVAの「マッピング部」について説明します。

6.3.2.3.1. アクセスログのフォーマット
ALog EVAのアクセスログは6つの項目から構成されます。
それぞれの項目に割り当てる文字列は以下のとおりです。

No.

項目

説明

1

時刻

ログ出力のもととなる操作や行為の発生した時刻に該当する文字列を割り当てる
なお、ALog EVAでは、時刻項目に代入される文字列が自動判別可能な時刻フォーマットまたは、任意に指定した時刻フォーマットに該当するかをチェックし、日付時刻の判断をする

2

ユーザー

ログ出力のもととなる操作や行為を行った主体となる情報を割り当てる
具体的には、ユーザー名や、クライアントホスト名、装置名などがこれにあたる

3

サーバ

ログ出力のもととなる操作や行為が行われた場所を示す情報を割り当てる
具体的には、操作や行為が行われ、ログを出力した機器名やサーバホスト名などがこれにあたる
この「サーバ」に入る情報は、検索、レポートなどで検索条件のキーとしてリスト化して使用するため、この欄に入る情報のバリエーションは限定されるよう、考慮することを推奨

4

対象

ログ出力のもととなる操作や行為が行われた対象に該当する情報を割り当てる
具体的には、操作対象となったファイル名やDBのテーブル、機器名などがこれにあたる

5

操作

ログ出力のもととなる操作や行為に該当する情報を割り当てる
具体的には、ファイルの読み込みや削除(READ/DELETEなど)やアプリケーションの起動(CREATE)、SYSLOGなど、ログの操作内容を表す
この「操作」に割り当てた文字列は、検索やレポート画面で「操作」欄に反映される
プルダウンやチェックボックスで選択肢として表示され、検索時にログを絞り込むための役割を果たす
種類を増やすと検索の利便性を損なうので、種類は最小限になるよう指定する

6

詳細

上記のいずれにも該当しないが、ログに記録されている特徴的な情報を割り当てる
具体的には、操作や行為に及んだ接続元のIPアドレスや、情報を操作したアプリケーション名などがこれにあたる
「詳細」には、「詳細キー」と「詳細値」からなる項目が0個以上含まれる
また、ユーザーが定義した詳細キーは、CSV出力した際、先頭に「アンダーバー(_)」が付加されて表示される

ヒント

固定の文字列の指定は、時刻、ユーザー、サーバ、対象、操作および、詳細の各項目で行えます。

ヒント

ユーザーが定義した詳細キーには、ALogの検索用DBにインポートするため、CSV出力時、先頭に「アンダーバー(_)」が付加されています。
しかし、WebコンソールからCSV出力する際、表示項目を変更した場合は、その時点でインポートできない形式になるため「アンダーバー(_)」を付加しません。

注意

詳細項目のキー名の先頭は半角英字、続く文字は半角英数字しか使えません(記号は利用不可)。

注意

「サーバ」および「操作」には、マッピングの際、改行を含む文字列が指定されないようにしてください。

6.3.2.3.2. 「マッピング – 出力」の設定例

ALog EVAの「マッピング – 出力」では、以下のように設定(例)を行います。

../_images/MappingSettingOutputExample.png

No.

項目

設定例の説明

1

時刻

上記では、時刻に相当する文字列は「F(1)」と「F(2)」の2つの列に存在している
この場合、「F(1)」と「F(2)」をスペースで区切って並べることで、時刻の文字列を作ることができる
(本例では、「2016/10/01 21:37:30.025」という文字列になる)
文字列の結合は、「{F(1)} {F(2)}」のように中括弧でくくり、並べて記載することで簡単に行える

2

ユーザー

上記では、「ユーザー」の列に「firewall」を割り当てるために「{F(4)}」を指定している

3

サーバ

通常、「サーバ」には対象サーバのホスト名などを固定文字列で代入するが、対象サーバのホスト名がログファイル内にないため、ALog EVAが用意する関数の一つである、「{Server()}」を使用し、サーバ名の情報を取得している

4

対象

上記では、「対象」の列に「{F(5)}」を指定することで、第5列目の情報をそのまま割り当てている

5

操作

上記では、「操作」の列に固定文字列の「Invalid Access」を指定している
この場合、ログの内容の如何に関わらず、操作項目には必ず「Invalid Access」が割り当てられる

6

詳細

上記では、「詳細」の「詳細キー」に「IPAddr」を指定し、「詳細値」にはALog EVAの用意する関数「F()」とMicrosoft C#の標準的な関数「string.Split()」を組み合わせることで、第5列のIPアドレスの値を抽出し、割り当てている
具体的には関数「F()」で文字列を出力し、「F(5).Split(' ')[3]」でスペース区切りの分割をし、4番目の文字列(192.168.0.1)を抽出している(Microsoft C#のSplitは、0からカウントするため、4番目の項目を抽出する場合は、「[3]」とする)

ヒント

後述する「除外フィルター」を除き「時刻」「ユーザー」「サーバ」「対象」「操作」「詳細の各項目」に指定できる文字列はMicrosoft C#の補間文字列として扱われます。
そのため、{}で関数を括ることで、その評価結果を表示することが可能となっています。
逆に{}などで括らない文字列は、アクセスログへ直接出力されることになります。
例えば「F(3)」とした場合、アクセスログへ「F(3)」と出力されますが、「{F(3)}」とした場合は、F(3)の関数を実行し、その評価結果が文字列としてアクセスログへ割り当てられます。

注意

日付、時刻が別の列として現れる場合、時刻の自動判別には、日付と時刻の間にスペースが必要です。

注意

時刻項目に代入しようとする文字列が自動判別可能な時刻フォーマットまたは、任意に指定した時刻フォーマットに該当しない場合、変換処理がエラーとなります。
マッピング設定時にプレビュー画面などで変換後の時刻項目の文字列を確認し、マッピングの設定が正しい時刻フォーマットに則した文字列になっているかを確認してください。

注意

マッピングで指定できる式評価外の文字は、文字種によってエスケープシーケンスで入力する必要があります。
詳しくは「特別な文字列のエスケープ方法」を参照してください。

6.3.2.4. マッピング設定で使用可能な関数

6.3.2.4.1. ALog EVAが標準で用意している関数
ALog EVAでは、マッピングの設定にあたり、以下の関数を標準で用意しています。
また、以下に記載した関数以外にも Microsoft C# が用意する関数の一部を使用できます。

関数

説明

string F(int idx)

分割した列のidx番目(カウントは1から)の文字列を取得する

string[] F(int start, int end)

分割した列のstart番目(カウントは1から)からend番目の文字列の配列を取得する
なお、取得した行の最後尾の列を指定する場合は。Endを-1にする
(例として、 2番目から最後までの列を取得する場合には、「F(2, -1)」と表記する)

DateTime Now()

関数が呼び出されたときの時間をそのまま文字列として出力する

DateTime Now(TimeSpan offset)

関数が呼び出されたときの時間をOffsetで指定した差分を加味して文字列として出力する

string Server()

対象サーバ設定で指定したサーバ名を文字列として出力する

int LineCount()

読み込んだログの行数を数値として出力する
また区切り文字形式(CSV/TSV/DSV)では1レコードが複数行になる場合、1レコードを1行とする

string RawLine()

マッピングで1行に相当する行のすべての文字列を取得する

stirng Extract(
string input,
string pattern,
int groupIdx=1,
int matchIdx=-1
)
正規表現を使った、特定の文字列から特定のパターンに合致した文字のみを抽出する機能
inputには入力となる文字列を、patternには正規表現を指定できる
またpatternの内容に則して、グループとなる位置の指定(指定しなかった場合、最初のグループ)、またパターンが繰り返し適合(マッチ)した場合に、何番目に適合した文字列を抽出するかの指定をする(指定しなかった場合、最後に適合した文字列を抽出する)
DateTime ConvSerialToDateTime(
string input,
bool withLocalTimeGap = true
)
シリアル値(Unix時間、秒)を日付時間に変換する
Inputに入力された文字列をUnix時間(秒数)と勘案し、DateTimeに変換する
変換の際に、withLocalTimeGapをtrueにすると、入力された時間にALogサーバのUTC時差を付加し、出力する
falseの場合には、与えられた入力値をUTC0のまま出力する
DateTime ConvSerialMSToDateTime(
string input,
bool withLocalTimeGap = true
)
シリアル値(Unix時間、ミリ秒)を日付時間に変換する
Inputに入力された文字列をUnix時間(ミリ秒数)と勘案し、DateTimeに変換する
変換の際に、withLocalTimeGapをtrueにすると、入力された時間にALogサーバのUTC時差を付加し、出力する
falseの場合には、与えられた入力値をUTC0のまま出力する

int FCount()

分割した列の総数を返す

string ReplaceByFile(
string input,
string filePath,
int keyIndex,
string formatOutput,
ReplaceByFileOptions options = ReplaceByFileOptions.None
)
外部ファイルを参照して置換する
filePathに入力されたパスのファイルを使用し、ファイル内のkeyIndexで指定したカラム番号の値とinputに入力された文字列とマッチした行の値(外部ファイル)を使用してformatOutputに入力されたフォーマットに沿って文字列を出力する
string KeySearch(
string line, string key, string
delimiter="\t", char
escapeChar='\\', string
escapedChars="\"\'\\", string
quotes="\"\'"
)
与えられた文字列から、指定したKey 項目に対する「値(Value)」を探す
line で指定した文字列の中からKey で指定したキー項目を探し、もしquotes で指定されている文字で引用されている場合は、quote で示された文字列を、そうでなければ、delimiter で指定した文字までを抽出し返す
もし当該のKey が発見されなかった場合は空文字を返す
詳細は「関数「KeySearch」の使用方法」を参照

string InputFileName()

収集したファイル名をそのまま出力する

6.3.2.4.2. CSV/TSV/DSV形式のログのみに使用できる関数

CSV/TSV/DSV形式のログに対しては以下の関数も使用できます。

関数

説明

string F(string rowName)

「マッピング-入力」設定で、[入力ファイルにヘッダーを含む]を有効にした場合、関数の引数にヘッダー名を使用することが可能
また、プレビュー画面でマッピング用の列名にヘッダー名が表示される
[入力ファイルにヘッダーを含む]を無効にして本関数を利用した場合、あるいは存在しないヘッダー名(列名)が指定された場合には、本関数は空文字を返す
6.3.2.4.3. イベントログ形式のログのみに使用できる関数

イベントログ形式のログに対しては以下の関数も使用できます。

関数

説明

string F("TimeCreated")

イベントが作成された日時を取得する

string F("ProviderName")

イベントを発行したイベント プロバイダーの名前を取得する

string F("ProviderID")

このイベントを発行したイベント プロバイダーのグローバル一意識別子 (GUID) を取得する

string F("EventID")

このイベントの識別子を取得する

string F("Version")

イベントのバージョン番号を取得する

string F("Level")

イベントのレベルを取得します。レベルは、イベントの重要度を示す

string F("Task")

アプリケーションまたはイベントを発行するコンポーネントの一部のタスクの識別子を取得する

string F("Opcode")

イベントのオペレーション コードを取得する
このオペコードは、アクティビティまたはイベントが発生したときに、アプリケーションが実行していたアクティビティ内のポイントを識別する数値を定義する

string F("Keywords")

イベントのキーワードのマスクを取得する

string F("EventRecordID")

ログのイベントのイベント レコード識別子を取得する

string F("ProcessID")

イベントを記録したイベント プロバイダーのプロセス ID を取得する

string F("ThreadID")

イベント プロバイダーが実行されているスレッドのスレッド識別子を取得する

string F("Channel")

このイベントが記録される場所、イベントログの名前を取得する

string F("Computer")

このイベントが記録されたコンピューターの名前を取得する

string F(<Name>)

イベントログをXML形式で参照した際の<system>要素内にある上記以外の子要素名を指定することで、その値を取得する

string Description()

イベントビューアーの「全般」タブに表示される情報を取得する
イベントログ形式以外でこの関数を使用すると空文字を返す

string DF(int idx)

イベントログ形式のログの詳細項目(EventDataなどに該当する部分)のidx番目を取得する
イベントログ形式以外でこの関数を使用すると空文字を返す

string DF()

イベントログ形式のログの詳細(EventDataなどに該当する部分)の全てを取得する。その際、項目の区切り文字は「|」となる。
イベントログ形式以外でこの関数を使用すると空文字を返す

string[] DF(int start, int end)

イベントログ形式のログの詳細項目(EventDataなどに該当する部位)のstart番目(カウントは1から)からend番目の文字列の配列を取得する
取得した行の最後尾の列を指定する場合は。Endを-1にする
(例として、 2番目から最後までの列を取得する場合には、「F(2, -1)」と表記する)
イベントログ形式以外でこの関数を使用すると空文字を返す

int DFCount()

当該のイベントログ行に含まれる詳細項目の総数を返す

注意

Description()関数を使用すると変換タスクのパフォーマンスに影響があります。
ログが大量に発生する対象サーバで本関数を使用する場合は、除外フィルターにより不要なログを削減するなど、変換対象とするログを事前に絞り込むことを推奨します。
6.3.2.4.4. JSON形式のログのみに使用できる関数

JSON形式のログに対しては以下の関数が使用できます。

関数

説明

string F(<JSONパス書式>)

JSON形式のログでフィールドの内容を取得するには、関数の引数にJSONパス書式で記述して指定する
例えば、取得したいオブジェクトのキー名が「Operation」の場合、本関数では「F("Operation")」と書く

以下の記号を用いて特定のオブジェクトの値を取得する事も可能

記号

意味

$

オブジェクトや要素のルート

. or [ ]

子オペレーター

[ ]

配列の指定

 例: JSONパスが /store/book[0]/titleの値を取得したい場合 「$.store.book[0].title」

注意

JSON形式では、添え字(数字)によるF()関数の指定が利用できません。

6.3.2.4.5. プレーンテキストのログのみに使用できる関数

プレーンテキストのログに対しては以下の関数が使用できます。

関数

説明

string FormatName()

自動フォーマット設定画面で指定したフォーマット名を使用することが可能

string F(string GroupName)

自動フォーマット設定画面で指定したグループ名を使用することが可能
また、プレビュー画面でマッピング用の列名にグループ名が表示される
6.3.2.4.6. 良く使う関数例

(1)複数のフィールドを結合する – Join関数

関数

説明

{string.Join(":", F(3,5))}

F3から開始し、F5までを1つのフィールドに出力する
区切り文字は「:」

{string.Join("-",DF(5,-1))}

DF5から開始し、DFの最大値までを1つのフィールドに出力する
区切り文字は「-」
※DFはイベントログのみ指定可能

(2)1つのフィールド内を特定の区切り文字で分離する – Split関数

関数

説明

{F("ProviderName").Split('-')[3]}

「ProviderName」のフィールドを区切り文字「-」ごとに分割し、左から数えて4個目の値を抽出する (左から0、1、2、3と数える)

{F(2).Split(' ')[0]}

F2のフィールドを区切り文字「 」(半角スペース)ごとに分割し、左から数えて0個目の値を抽出する(左から0と数える)

注意

Join関数/Split関数等の関数による文字列操作が行われる場合、変換タスクのパフォーマンスに影響があります。 同環境で上記の関数を使用しない場合と比較し約70%程度となることを確認しています。(設定する関数の複雑さにより変動します。) ログ出力量によりマシンスペックが追加で必要になる場合がありますので構築時に注意してください。

6.3.2.4.7. 関数「ReplaceByFile」の使用方法

ここでは、ユーザー欄のアカウントを氏名に置換する例を用いて使用方法を説明します。

  1. 以下の様な置換前と置換後の文字列がセットになったCSVファイルを用意する

(ファイルの配置先は D:\UserData\User.csv とします)

../_images/UseReplaceByFileFunction01.png
  1. Webコンソール-対象サーバの追加ウィザード、もしくは編集画面を開き、「マッピング設定-出力」の欄に下記のように設定する

※この例では「ユーザー欄」に入力する。その他の欄はそれぞれ必要なマッピング設定を行う

../_images/UseReplaceByFileFunction02.png ../_images/UseReplaceByFileFunction03.png
コピー用
{ReplaceByFile(F(2), @"D:\UserData\User.csv", 0, "{1} {2}", ReplaceByFileOptions.IgnoreCase)}

引数

記述する内容

1

入力文字列

「マッピング設定-入力」で指定したログデータにおける列を指定する。プレビュー画面を見て確認可能

2

ファイル名

手順1で用意した置換用テーブルとして扱うCSVファイルをフルパスで指定する

3

キーインデックス

手順1で用意したファイルにおける検索対象としたい列の番号を指定する。0からカウントする

4

出力フォーマット

置換後の出力フォーマットを指定する。{列番号} という形で手順1にて用意したファイルの列番号を指定する。0からカウントする

5

オプション値

「IgnoreCase」と指定すると、ログのデータと置換用テーブルにおける文字列の、大文字小文字を比較せずに置換する

【解説】
上記のように記述することで、F(2)の文字列がCSVファイルの1列目の値と一致した場合に、「2列目の項目、全角スペース、3列目の項目」をユーザー欄に出力する
IgnoreCaseオプションを指定しているため、大文字小文字を無視してF(2)の文字列とCSVの1列目の値を比較する
また、一つもマッチしなかった場合、最初の引数に指定した文字列(この例ではF(2)の文字列)がそのまま出力される

F(2)の値

出力結果

Domain.co.jp\s-sato

佐藤 詩織

domain.co.jp\k-kato

加藤 光一

test.co.jp\t-tanaka

test.co.jp\t-tanaka

  1. 設定完了後、運用前に収集タスクと変換タスクを実行し、置換が期待した通りに行われているか確認する

6.3.2.4.8. 関数「KeySearch」の使用方法

「KeySearch」という関数は、入力データで順序に規則性のない「キー=値」のような組み合わせが複数出力されている場合に、「キー 名」を指定することで「キー名」で検索し、紐づく「値」を返すものです。

ここでは、代表でsyslog のメッセージ部分を例にし、キー名から値を検索する使用方法を説明します。
(例)

日付(F1)

ホスト (F2)

メッセージ (F3)

1 行目

Jan 6

10.249.3.13

version="1.0" class="high"uid="0"

2 行目

Jan 6

10.249.3.13

class="high"

3 行目

Jan 6

10.249.3.13

sshd="15880" version="1.1" class="high"uid="0"

メッセージ部分は複数の情報が含まれています。キーによっては存在する行と存在しない行があり得ます。 この中から「version の情報があった場合に値を出したい」という要望がある場合、メッセージ部の順番指定では切り出すことができません。 このようなときに 「KeySearch(F(3), "version=")」と指定すると、メッセージ内で「version」を探し、それに紐づく値を返すことができます。

関数返り値

1 行目

1.0

2 行目

(なし)

3 行目

1.1

【省略可能なオプション引数】
省略可能なオプションは、通常の使い方においてユーザーが指定する必要はありませんが、エスケープ文字の違いや区切り文字の異なったフォーマットの場合には、ユーザーが適宜、適切な文字を指定することで、KeyValue の探索ができるようになります。

オプション引数

初期値

解説

delimiter

「 」(空白)
「\t」(タブ)
ここで指定するのは「キーと値の組み合わせ」の間で分割する区切り文字である
通常このパラメタを変更する必要はないが、特殊な文字、例えば「,」などで区切られている場合にはdelimiter="," と指定する

escapeChar

「\」

クォートの中でエスケープが必要な際に、エスケープの開始文字を指定する
デフォルト値は「\」キャラクタで、後続に指定する被エスケープ文字(escapedChars)をエスケープするシーケンス開始として認識する

escapedChars

「"」「'」「\」

ここで指定される文字は、前述のescapeChar の後続で指定される「エスケープされる文字」を指定する

quotes

「"」「'」

Key に対する値が発見された場合に、それらの文字が「クォートされている」ときの、クォート文字を指定する

注意

「KeySearch」の関数は毎行キーを検索することになるため変換タスクのパフォーマンスは低下します。規則性のないログに限定して使用することを推奨します。

6.3.2.5. 時刻のマッピング処理

時刻へのマッピングにあたっては、時刻を自動認識する方法とユーザーが独自に時刻フォーマットを指定する方法の2つから選択できます。
下図のとおり、[時刻フォーマットを指定する]チェックボックスを外した状態(既定値)にするとマッピング処理において、ログ内で時刻に相当する項目を自動的に評価し、時刻を判別します。
独自書式の時刻フォーマットを指定する場合は、[時刻フォーマットを指定する]チェックボックスにチェックを入れ、[時刻フォーマット]に指定したい時刻フォーマットを入力します。
ここに指定できる文字列は、Microsoft C# の「カスタム日付書式」と同じものになります。
../_images/TimeMappingProcess.png

注意

時刻に代入しようとする文字列が自動判別可能な時刻フォーマットまたは、任意に指定した時刻フォーマットに該当しない場合、変換処理がエラーとなります。 プレビュー画面で変換後の時刻の文字列を確認し、正しい時刻フォーマットになっているかを確認してください。

6.3.2.5.1. 自動判別可能な時刻フォーマット

ALog EVAでは、標準で以下の時刻フォーマットを自動で判別できます。

No.

フォーマット

例示

1

yyyy/MM/dd HH:mm:ss.FFFFFFF
yyyy/MM/ddTHH:mm:ss.FFFFFFF

1999/12/31 23:59:59.123

2

yyyy/MM/dd H:mm:ss.FFFFFFF
yyyy/MM/ddTH:mm:ss.FFFFFFF

1999/12/31 9:59:59.123

3

yyyy-MM-dd HH:mm:ss.FFFFFFF
yyyy-MM-ddTHH:mm:ss.FFFFFFF

1999-12-31 23:59:59.123

4

yyyy-MM-dd H:mm:ss.FFFFFFF
yyyy-MM-ddTH:mm:ss.FFFFFFF

1999-12-31 9:59:59.123

5

yyyy/MM/dd HH:mm:ss
yyyy/MM/ddTHH:mm:ss

1999/12/31 23:59:59

6

yyyy/MM/dd H:mm:ss
yyyy/MM/ddTH:mm:ss

1999/12/31 9:59:59

7

yyyy-MM-dd HH:mm:ss
yyyy-MM-ddTHH:mm:ss

1999-12-31 23:59:59

8

yyyy-MM-dd H:mm:ss
yyyy-MM-ddTH:mm:ss

1999-12-31 9:59:59

9

yyyyMMdd HHmmssFFFFFFF
yyyyMMddTHHmmssFFFFFFF

19991231 235959123

10

yyyyMMdd HHmmss
yyyyMMddTHHmmss

19991231 235959

11

MMM dd HH:mm:ss.FFFFFFF

Dec 02 23:59:59.123

12

MMM d HH:mm:ss.FFFFFFF

Dec 2 23:59:59.123

13

MMM dd HH:mm:ss

Dec 02 23:59:59

14

MMM d HH:mm:ss

Dec 2 23:59:59

15

M d HH:mm:ss

12 2 23:59:59

16

MMMM d HH:mm:ss

December 2 23:59:59

注意

上記フォーマットにおいてss(秒指定)の部分は正のうるう秒を判定する事が可能です。
例えば23:59:60となった場合、翌日の00:00:00となります。

注意

MMMの指定に関して、ログ内で年にあたる情報が無い場合、変換時の月と、ログに示される月を比較し、自動的に年を補填します。 変換時点で経過した月の場合は今年を、経過していない月の場合は前年を自動的に補填します。

6.3.2.5.2. 独自書式での時刻フォーマット指定の例
ALog EVAでは、時刻フォーマットを独自に指定できます。
ただし、設定する書式は、Microsoft C# で定義されているカスタム日時書式と同じ書式である必要があります。

以下にユーザーが独自に時刻フォーマットの書式を設定することで読み込める日時書式を例示します。

時刻フォーマットの例

設定値

1999/12/31 23:59:59 +09:00

yyyy/MM/dd HH:mm:ss zzz

Dec 31 1999 23:59:59

MMM dd yyyy HH:mm:ss

6.3.2.6. 除外フィルター

ALog EVAでは、ユーザーが任意の条件を[除外フィルター]に指定することで、ログ内でその条件にマッチした行を出力対象外にできます。
この機能を利用することで、ユーザーはログ内の不必要な行を排除できます。

除外フィルターの条件は、Microsoft C#のbool(真偽値)を返す式で定義する必要があります。

../_images/ExclusionFilterSetting.png
6.3.2.6.1. 除外フィルターの指定の例
例として、下記のログに対し、除外フィルターとして、「F(3) != "WARN"」を指定した場合、1行目の「F(3)」は「INFO」のため、「F(3) != "WARN"」の評価結果は「真(True)」となり、式が成立するので、1行目は「出力対象外」のレコードとして処理されます。
しかし、2行目では、「F(3)」の内容が「WARN」となり、式の評価結果は「偽(False)」となり、出力対象のレコードとして処理されます。
このようにユーザーが定義した条件式を行毎に評価し、行の出力を制御できます。
../_images/ExclusionFilterLog.png

注意

除外フィルターの条件式は、マッチした場合に出力対象とするのではなく、出力対象外にするという点にご注意ください。

注意

除外フィルターの条件式がboolを返さない場合、[エラー時のふるまい]の設定の如何に関わらず、falseと評価され、除外されずに処理対象となります。

6.3.2.7. エラー時のふるまい

「エラー時のふるまい」設定には2つの選択肢がありますが、それぞれ以下のように動作します。

../_images/ErrorHandlingSetting.png

設定の選択肢

設定値

エラーを無視し、フィールドを空文字にする

ALog EVAが提供する関数の評価の失敗、ランタイム時のエラーなどが発生した場合、エラーとなった項目だけを無効(空文字とする)にして扱う
その際、警告は発せられず、そのまま翻訳処理が継続される

警告を発し、エラー行をスキップする

ALog EVAが提供する関数の評価の失敗、ランタイム時のエラーなどがマッピング処理にて発生した場合、ユーザーに警告を促し、当該の「行全体」を無効にして、次の行へマッピング処理を続行する
警告はログ変換タスクにおいて処理される1ファイルにつき10回まで通知しますが、それ以上のエラーが発生した場合は、警告を発しなくなる
警告が発せられなくなった場合でもエラーとなった行は、無効として扱われる

注意

時刻がエラーとなった場合、[エラー時のふるまい]の設定に関わらず、行全体が無効になります。 この仕様は、ALog EVAが「時刻のないログは、アクセスログとして許容しない」という前提に基づいて動作しているためです。

注意

「エラーを無視し、フィールドを空文字にする」を設定した状態で詳細項目の一つがエラーとなった場合は、そのエラーとなった詳細項目だけが無効となり、他の正常な詳細項目はアクセスログに展開されます。

6.3.2.7.1. エラーとなるケース

以下のようなケースでは、マッピング処理においてエラーとなります。

◆サーバ名に「{F(99)}」を指定したが、入力対象となるログの特定の行の列は99列未満だった場合

「警告を発し、エラー行をスキップする」に設定している場合は、警告を発しこの行を無効とします。
一方、「エラーを無視し、フィールドを空文字にする」に設定している場合は、サーバ名が空文字になります。(他の項目はエラーが無い限り出力されます)

◆「{F(5)」のように文法ミスをした場合

この場合は、[エラー時のふるまい]の設定に関わらず、ログ変換タスクそのものが失敗します。

6.3.2.8. 空の詳細項目を出力しない

ALog EVAでは、[マッピング設定-出力]の詳細項目(詳細キーと詳細値をセットで定義している部分)に指定した内容で変換処理が行われた結果、詳細項目が「空」になるケースに対し、「空」の場合は詳細キー自身を表示しないようにする設定が可能です。

../_images/EmptyDetailItemOutputSetting.png

<例>

「詳細キー:To 、詳細値:{_To}」と設定した際、変換において{_To}に相当する内容が無く結果的に詳細欄に「To:」と表示されるケースが存在します。
このケースで「空の詳細項目を出力しない」にチェックをつけると、詳細欄に「To:」という文字列自体が含まれないようになります。

注意

プレビューの際には、マッピング設定自体の正しさをプレビューするために、この設定項目の設定によらず、詳細値が「空」でもそれに対応した詳細キーが表示されます。

6.3.2.9. 重複する行を1行に マージする

ALog EVAでは、アクセスログへの変換処理において「ユーザー」、「サーバ」、「対象」、「操作」および「詳細(Countを除く)」が同じログレコードに対し5秒以内に同じレコードが連続した場合、これらをマージできます。
本オプションを有効にするとマージ処理が動作し、マージされたレコード数を詳細項目の「Count」に反映します。

制限事項がありますので、「ログ変換時のマージ処理について」 を確認してください。

../_images/DuplicateRowMergeSetting.png

注意

「重複する行を1行にマージ」にチェックが入っている場合、プレビュー画面でもマージ処理を行います。 ただし、プレビュー対象となるサンプルログの中にエラーとなる行が存在する場合、プレビュー画面ではマージされずに表示されます。 マージ結果を確認したい場合は、サンプルログに存在するエラーの原因を解消した上で再表示してください。

6.3.2.10. 特別な文字列のエスケープ方法

「マッピング設定―出力」設定にて「時刻」、「ユーザー」、「サーバ」、「対象」、「操作」、「詳細」には、以下のエスケープシーケンスが利用されます。 (これはMicrosoft C#における補間文字列の仕様と同等です。)

エスケープ

文字列名

\'

単一引用符(シングルクォーテーション)

\"

二重引用符(ダブルクォーテーション)

\\

円記号

\0

Null

\a

警告

\b

バックスペース

\f

フォーム フィード

\n

改行

\r

キャリッジ リターン

\t

水平タブ

\U

サロゲート ペアの Unicode エスケープ シーケンス (例:\Unnnnnnnn)

\u

Unicode エスケープ シーケンス (例:\u0041 は "A"に相当)

\v

垂直タブ

\x

Unicode エスケープ シーケンス (可変長である点を除き "\u" に類似)

{{

波括弧(左辺) (このエスケープシーケンスは除外フィルターでは使用しない)

}}

波括弧(右辺) (このエスケープシーケンスは除外フィルターでは使用しない)

6.3.3. EVAテンプレート

ALog EVAでは、マッピング設定や収集設定をテンプレートとして管理できます。
あらかじめ用意されている標準テンプレートがあり、さらにユーザーが独自に作成した設定をテンプレートとして追加、削除することができます。

6.3.3.1. 主な標準テンプレート

ALog EVAでは、あらかじめ用意されているEVAテンプレートがあります。主な標準テンプレートは以下の通りです。
なお、標準テンプレートは削除できません。

テンプレートの種類

説明

イベントログ(System)

Windows OSが提供するSystemイベントログを収集、変換するためのテンプレート
Windows のシステム コンポーネントによって記録されたイベントなどを収集する際に使用する

イベントログ(Application)

Windows OSが提供するApplicationイベントログを収集、変換するためのテンプレート
アプリケーションまたはプログラムによって記録されたイベントを収集する際に使用する

イベントログ (Security)

Windows OSが提供するSecurityイベントログを収集、変換するためのテンプレート
リソースの使用に関連するイベントなどを収集する際に使用する

ALog Syslog Receiver (CSV出力)

ALog Syslog Receiverにより、受信したsyslogデータをCSV出力した場合に利用するテンプレート

Webサーバ (Apache)

Apacheウェブサーバが出力するログを収集、変換するためのテンプレート

DHCPv4サーバ(Windows)

Windows ServerOSにて提供されるDHCP機能が出力するログを収集、変換するためのテンプレート

DBサーバ(PostgreSQL/Symfoware)

PostgreSQL及びSymfoware Server(Openインターフェイス)がCSV形式で出力する監査・システムログファイルを収集、変換するためのテンプレート

HPE 3PAR File Persona

HPE 3PAR File Persona 向けJSON形式のファイル監査ログを収集、変換するためのテンプレート

6.3.3.2. 作成したテンプレートの追加

以下の手順により、ユーザー独自のテンプレートを作成し、追加できます。
ユーザーが独自に作成したテンプレートには、テンプレート名(任意指定)に「(User)」が付加されます。
  1. 「管理」画面の[対象サーバ]をクリックして「対象サーバ」画面を表示し、テンプレートとして追加したいマッピング設定が行われているサーバをクリックする

../_images/AddCreatedEVATemplate01.png
  1. 「サーバ編集」画面が表示されるので、左下部の[テンプレートとして保存]ボタンをクリックする

../_images/AddCreatedEVATemplate02.png
  1. [テンプレート名]に任意の名称を入力し、適宜、[説明]にテンプレートの説明を追加して、[保存]ボタンをクリックする(2つのチェックボックスにはどちらか片方は必ずチェックをつける必要がある)

../_images/AddCreatedEVATemplate03.png
  1. テンプレートが正常に保存されたことを確認し、[閉じる]ボタンをクリックする

../_images/AddCreatedEVATemplate04.png
  1. 「サーバ編集」画面に戻るので、[キャンセル]ボタンをクリックし、画面を閉じる

../_images/AddCreatedEVATemplate05.png

6.3.3.3. 作成したテンプレートの削除

作成したテンプレートが不要になった場合は、以下の手順で削除できます。
なお、標準のテンプレートは削除できません。
  1. 対象サーバの追加手順」の手順「1.~6.」を行い、「ログ設定方法の選択」画面を表示する

../_images/DeleteCreatedEVATemplate01.png
  1. [テンプレートを使用する]にチェックを入れ、プルダウンメニューからテンプレートの一覧を表示し、削除したいテンプレートのごみ箱アイコンをクリックする

../_images/DeleteCreatedEVATemplate02.png

6.3.3.4. テンプレートのインポート/エクスポート

テンプレートをインポートしたり、エクスポートしたりすることができます。詳細は「設定のインポート/エクスポート」を参照してください。