リンクを使用した詳細アナリティクスの実行

このトピックで説明するユースケースを使用して、高度なアナリティクスを実行するためのリンク機能の適用を理解します。

リンク機能を使用してログ・レコードを分析するステップは、リンクのビジュアライゼーションを参照してください。

シナリオの例:

ユース・ケース リンク機能 サンプル・ログ

リンク・トレンド機能を使用した時系列データのビジュアル化

リンク・トレンド

EBS Concurrent Request Logs

Oracle WebLogic Serverのアクセス・ログの分析

リンク基本機能

FMW WLS Server Access Logs

仮想フィールドを使用したチャートの生成

チャートの仮想フィールドの使用

SAR CPU Logs

分析のフィールドとしてのSQL文を使用したリンク

フィールドとしてのSQL文の使用

Database Audit Logs, Database Audit XML Logs, Oracle Unified DB Audit Log Source Stored in Database 12.1

トランザクションのステップ間に要した時間の分析

時間分析

Access Logs

複数のフィールドとその値に対するチャートの生成

複数のフィールドとその値に対するチャート

-

リンクでのeventstatsコマンドを使用した第2レベルの集計

第2レベルの集計

Access Logs

リンク・ナビゲーション・ファンクションを使用したデータベースのイベントの識別

ナビゲーション・ファンクション

Database Alert Logs

ログ分析での通貨記号の使用

グループ表およびチャートでの通貨記号の使用

Gasoline Prices

timestatsコマンドを使用した時系列分析

フィールドのトレンドの分析

OCI VCN Flow Unified Schema Logs

時系列クラスタリング

類似の時系列値のグループ化

OCI VCN Flow Unified Schema Logs

リンク・トレンド機能を使用した時系列データのビジュアル化

リンクは、ログ・レコードを特定のフィールドでグループ化するために使用されます。これらのグループから抽出できる様々な統計は、バブル・チャート・ビジュアライゼーションを使用してビジュアル化できます。バブル・チャート・ビジュアライゼーションは、軸として時間フィールドをサポートするように拡張されました。

次のステップでは、トレンド機能を使用してOracle E-Business Suite (EBS)同時リクエストのジョブ期間を分析する方法について説明します。

ファイルパスが/u01/oracle/appl_top/req/l7474445.reqの次のサンプル・ログについて考えます:

Human Resources: Version : 12.2

Copyright (c) 1998, 2013, Oracle and/or its affiliates. All rights reserved.

AME_MIGRATIONB: Approvals Management Post Upgrade Process
+---------------------------------------------------------------------------+

Current system time is 24-JUL-2018 01:04:29 
+---------------------------------------------------------------------------+

**Starts**24-JUL-2018 01:04:30
**Ends**24-JUL-2018 01:04:30
Migration of item class usages successful
+---------------------------------------------------------------------------+
Start of log messages from FND_FILE
+---------------------------------------------------------------------------+
+---------------------------------------------------------------------------+
End of log messages from FND_FILE
+---------------------------------------------------------------------------+

+---------------------------------------------------------------------------+
No completion options were requested.

Output file size: 
0
Deleting empty output file.

+---------------------------------------------------------------------------+
Concurrent request completed successfully
Current system time is 24-JUL-2018 01:04:32

+---------------------------------------------------------------------------+

Oracle定義ソースのEBS Concurrent Request Logs - Enhancedは、ファイルパスからRequest IDフィールドを抽出します。たとえば、数値データ7474445は、前述のサンプル・ログのファイルパスから抽出されたリクエストIDです。ソースは、各リクエストIDの関連メタデータも抽出します。

  1. ソースを選択してリンク・ビジュアライゼーションに切り替えます:

    「フィールド」パネルで、「ログ・ソース」をクリックし、EBS Concurrent Request Logs - Enhancedログ・ソースを選択して、リンク・ビジュアライゼーションに切り替え、「リクエストID」フィールドを「グループ化基準」パネルにドラッグ・アンド・ドロップしてリクエストのリストを取得します:


    link_request_id.pngの説明が続きます

    自動生成された問合せは次のようになります:

    'Log Source' = 'EBS Concurrent Request Logs - Enhanced' | link 'Request ID'
  2. リクエストの開始時間と終了時間を抽出します:

    各リクエストには、ファイルに出力された開始時間と終了時間があります。終了時間がない場合、ファイルの更新時間が終了時間とみなされます。ログ・ソースは、これらの値をEvent Start TimeおよびEvent End Timeフィールドとして取得するように構成されます。

    問合せを編集して、これらのフィールドを抽出します:

    'Log Source' = 'EBS Concurrent Request Logs - Enhanced'
    | link 'Request ID'
    | stats earliest('Event Start Time') as 'Request Start Time',
    latest('Event End Time') as 'Request End Time'

    earliestは、statsコマンドのファンクションです。これにより、各リクエストIDのレコードが時間でソートされ、最も古いEvent Start Timeが返されます。同様に、latestでは、最後のEvent End Timeが返されます。

    これで、レコード表に新しいフィールドが表示されます:


    link_request_start_n_end_time.pngの説明が続きます

    Request Start TimeおよびRequest End Timeは、タイムスタンプとして自動的に検出され、ローカル・タイムゾーンでフォーマットされます。ファイルが収集されると、エージェントは、EBSデータベースのタイムゾーンを使用してタイムスタンプを解釈します。

    ノート

    データベース・タイムゾーンがOracle Infrastructure Monitoring構成ホームで期待どおりに表示されるようにして、値の不一致を回避するには、アップロード時にタイムゾーンを指定します。
  3. リクエスト期間を計算します:

    ここで、各リクエストの開始時間と終了時間がわかったため、これらの2つのフィールドの差異として期間を計算できます。

    問合せを適切に変更します:

    'Log Source' = 'EBS Concurrent Request Logs - Enhanced'
    | link 'Request ID'
    | stats earliest('Event Start Time') as 'Request Start Time',
    latest('Event End Time') as 'Request End Time'
    | eval 'Time Taken' = 'Request End Time' - 'Request Start Time'

    Time Takenは、リクエストIDグループごとに作成される新しいフィールドです。これには、リクエストの開始時間と終了時間の差異が含まれます。


    link_request_eval_time_taken.pngの説明が続きます

    ノート

    Oracle Logging Analyticsでは、2つのタイムスタンプ・フィールドの差によって生成されるため、「所要時間」が期間フィールドとして自動的に検出されます。そのため、これは判読可能な方法で自動的にフォーマットされます。

  4. EBS同時リクエストに要した時間のトレンド:

    これで、トレンドについてTime Takenフィールドを分析できます。「分析」アイコン分析をクリックし、「分析」ダイアログ・ボックスでRequest Start TimeおよびTime Takenフィールドを選択して、「OK」をクリックします。

    これにより、問合せが自動的に次に変更されます:

    'Log Source' = 'EBS Concurrent Request Logs - Enhanced'
    | link 'Request ID'
    | stats earliest('Event Start Time') as 'Request Start Time',
    latest('Event End Time') as 'Request End Time'
    | eval 'Time Taken' = 'Request End Time' - 'Request Start Time'
    | classify topcount = 300 'Request Start Time', 'Time Taken'

    classifyコマンドは、2つのフィールドを使用し、結果をクラスタ化して、該当する場合は異常をマークします。結果はバブル・チャートで表示されます。

    軸に対してTimeを選択すると、バブル・チャートは自動的に「トレンド」オプションに切り替わります。チャート・オプションを変更するには、「グラフ・オプション」アイコングラフ・オプションをクリックして、必要なパラメータを変更します。

    結果のバブル・チャートで、Request Start Timeはx軸に沿ってプロットされ、Time Takenのクラスタはy軸に沿ってプロットされます:


    link_request_trend_chart.pngの説明が続きます

    時間は、ローカル・タイムゾーンで表示されます。バブルのサイズは、リクエストの数を示します。

    前述のバブル・チャートでは、2018年7月21日の4分を超えるリクエスト期間が目立っています。リクエストの大部分は、2分未満で終了しています。

    1つ以上のバブルをクリックしてドリルダウンし、特定のリクエストを表示できます。

Oracle WebLogic Serverのアクセス・ログの分析

ログ・ソースFMW WLS Server Access LogsのOracle WebLogic Serverアクセス・ログで構成されるデータ・セットの例について考えます。ログ・レコードには、特定の期間におけるユーザーによるOracle WebLogic Serverへのアクセスに関するデータが含まれます。これらの個々のログ・レコードを分析すると、使用状況統計、URLの人気、最もアクティブなユーザーなどのデータに関する有意義なインサイトを取得できます。ログから、結果ごとに特定のフィールドを選択してログ・レコードを分析することで、次の結果を取得する方法を学習します:

  1. ヒット数別の上位URLの表示

  2. ヒット数別の異常の表示

  3. アクセス期間別の異常の表示

  4. アップロード・サイズ別のURLの識別

  5. ダウンロード・サイズ別のURLの識別

  6. ヒット数とダウンロード・サイズの相関関係の分析

  7. 訪問数が最も多いページの特定

  8. 上位ユーザーの識別

  9. 上位ユーザーとそのお気に入りページの識別

  10. 最大訪問数につながるエントリ・ページの識別

  11. 大部分のユーザーのエントリおよびイグジット・パスの識別

ノート

  • renameコマンドを使用して、フィールドの名前を、ユースケースに関連する名前に変更します。

  • classifyコマンドでは、グループを分析し、結果をバブル・チャートの形式で表示できます。問合せの実行結果を表形式で簡易表示するには、問合せからclassifyコマンドを削除して再実行します。

  • チャートの異常バブルをクリックして、異常グループの詳細を表示します。バブルの調査後に元の結果に戻るには、「元に戻す」元に戻すアイコンをクリックします。

  • linkコマンドを実行する場合、グループ期間は、バブル・チャートでなどの読取り可能なフォーマットで表示されます。ただし、linkコマンドの後にwhereコマンドを実行して、指定した秒数(200秒など)を超えるトランザクションを検索する場合、使用する必要がある単位はミリ秒です。

データ・セットを取得するには、適切な日付範囲を選択し、ログ・ソースを指定して問合せを実行します:

'Log Source' = 'FMW WLS Server Access Logs'

「ビジュアル化」パネルから「リンク」リンクを開くを選択します。'FMW WLS Server Access Logs'グループ表およびバブル・チャートが表示されます。

  1. ヒット数別の上位URLを表示するには、ログ・レコードのURLの値でログ・レコードをグループ化し、各グループのURLの合計数を取得し、グループ表のデフォルト・フィールド名を適切な値に変更して、結果を表形式で表示します。この分析により、最も使用されているURLを特定できます。

    1. 「URI」フィールドを「グループ化基準」にドラッグ・アンド・ドロップし、「ログ・ソース」フィールドを「グループ化基準」から削除します。

    2. 問合せの実行後、コマンドラインで、フィールドCountの名前をNumber of Hitsに、Start TimeFirst Accessに、End TimeLast Accessに、Group DurationAccess Durationに変更します。

    3. コマンドラインからclassifyコマンドを削除し、問合せを発行します。

      問合せは次のようになります:

      'Log Source' = 'FMW WLS Server Access Logs' | link URI | rename Count as 'Number of Hits', 'Start Time' as 'First Access', 'End Time' as 'Last Access', 'Group Duration' as 'Access Duration'

    問合せを実行すると、表でヒット数別の上位URLを特定できます。列の名前は、renameコマンドで指定したとおりに変更されます。

  2. ヒット数別の異常を表示するには、ログ・レコードのURLの値でログ・レコードをグループ化し、グループ表のデフォルト・フィールド名を適切な値に変更して、URLのヒット数のグループを分析します。この分析により、URLへのアクセスにおける例外的なパターンを分離できます。

    「分析」をクリックし、Number of Hitsを選択して、「OK」をクリックします。

    問合せは、次に変更する必要があります:

    'Log Source' = 'FMW WLS Server Access Logs' | link URI | rename Count as 'Number of Hits', 'Start Time' as 'First Access', 'End Time' as 'Last Access', 'Group Duration' as 'Access Duration' | classify topcount = 300 'Number of Hits'

    この問合せによって、'Number of Hits'列の分析がトリガーされ、よく見られる範囲を表すバブルが作成されます。値の多数部分は、ベースラインとして扱われます。たとえば、大きなバブルがベースラインになる場合や、まとめてクラスタ化された多数のより小さなバブルがベースラインになる場合があります。ベースラインから最も遠いバブルは、異常としてマークされます。

    つまり、異常URLがバブル・チャートの別々のバブルにグループ化されて表示されます。ヒット数の各範囲のURLのパーセンテージを表示するには、バブルの上にカーソルを置きます。

  3. アクセス期間別の異常を表示するには、ログ・レコードのURLの値でログ・レコードをグループ化し、グループ表のデフォルト・フィールド名を適切な値に変更して、URLのアクセス期間のグループを分析します。この分析により、URLへのアクセスに要した時間の例外的なパターンを分離できます。ステップ2に続けて:

    「分析」をクリックし、Access Durationを選択して、「OK」をクリックします。

    Access Durationは、各URLがアクセスされた期間の指標です。これは、各URLのログ・ファイルの最後のタイムスタンプと最初のタイムスタンプの差異として計算されます。

  4. アップロード・サイズ別のURLを識別するには、ログ・レコードのURLの値でログ・レコードをグループ化し、グループ表のデフォルト・フィールド名を適切な値に変更して、アップロードされたデータのサイズのグループを分析します。この分析により、例外的なサイズのデータがアップロードされたURLを識別できます。ステップ3に続けて:

    1. フィールドContent Size In「値」セクションにドラッグ・アンド・ドロップします。

    2. コマンドラインの問合せを変更して、フィールドContent Size Inの名前をBytes Uploadedに変更し、問合せを実行します。

    3. 「分析」をクリックし、Bytes Uploadedを選択して、「OK」をクリックします。

      問合せは次のようになります:

      'Log Source' = 'FMW WLS Server Access Logs' | link URI | stats avg('Content Size In') as 'Bytes Uploaded' | rename Count as 'Number of Hits', 'Start Time' as 'First Access', 'End Time' as 'Last Access', 'Group Duration' as 'Access Duration' | classify topcount = 300 'Bytes Uploaded'

      分析グラフに、アップロードされたバイト別のURLのグループが表示されます。

    4. 時間範囲を横断してBytes Uploadedデータを相互に関連付けるには、ヒストグラム・チャート・オプションでチャートの表示/非表示を選択的に切り替えます。棒グラフ以外の他のビジュアライゼーション・オプションを探索します。

  5. ダウンロード・サイズ別のURLを識別するには、ログ・レコードのURLの値でログ・レコードをグループ化し、グループ表のデフォルト・フィールド名を適切な値に変更して、ダウンロードされたデータのサイズのグループを分析します。この分析により、ダウンロードされたデータが例外的なサイズのURLを識別できます。ステップ4に続けて:

    1. フィールドContent Size Out「値」セクションにドラッグ・アンド・ドロップし、Content Size In「値」セクションから削除します。

    2. コマンドラインの問合せを変更して、フィールドContent Size Outの名前をDownload Sizeに変更し、問合せを実行します。

    3. 「分析」をクリックし、Download Sizeを選択して、「OK」をクリックします。

      問合せは次のようになります:

      'Log Source' = 'FMW WLS Server Access Logs' | link URI | stats avg('Content Size Out') as 'Download Size' | rename Count as 'Number of Hits', 'Start Time' as 'First Access', 'End Time' as 'Last Access', 'Group Duration' as 'Access Duration' | classify topcount = 300 'Download Size'

      分析グラフに、ダウンロード・サイズ別のURLのグループが表示されます。

    4. 時間範囲を横断してDownload Sizeデータを相互に関連付けるには、ヒストグラム・チャート・オプションでチャートの表示/非表示を選択的に切り替えます。棒グラフ以外の他のビジュアライゼーション・オプションを探索します。

  6. ヒット数とダウンロード・サイズの相関関係を分析するには、ログ・レコードのURLの値でログ・レコードをグループ化し、グループ表のデフォルト・フィールド名を適切な値に変更して、ダウンロードされたデータのサイズおよびヒット数のグループを分析します。この分析により、ダウンロードされたデータのサイズおよびヒット数が例外的なパターンのURLを識別できます。ステップ5に続けて:

    1. 「分析」をクリックし、フィールドNumber of HitsDownload Sizeを選択して、「OK」をクリックします。

    2. すべてのバブルを表示するために問合せからtopcount=300を削除し、問合せを実行します。

      問合せは次のようになります:

      'Log Source' = 'FMW WLS Server Access Logs' | link URI | stats avg('Content Size Out') as 'Download Size' | rename Count as 'Number of Hits', 'Start Time' as 'First Access', 'End Time' as 'Last Access', 'Group Duration' as 'Access Duration' | classify 'Download Size', 'Number of Hits'

    バブル・チャートで、フィールドNumber of Hitsはx軸に沿って、Download Sizeはy軸に沿ってプロットされます。


    correlation.bmpの説明が続きます

    バブルは次のように解釈できます:

    • URLの73.8%が1回から7回アクセスされました。

    • URLの73.8%の平均ダウンロード・サイズは、32,345から34,000の間にあります。この狭い範囲は、多数のURLが、ダウンロード・サイズの点では非常によく似た動作になっていることを示します。

    • 73.8%は大多数であるため、残りのポイントは異常としてマークされます。

    • 実際のデータでは、.css、.jsおよびイメージ・ファイルは他のURLとは別にシステムでグループ化することが一般的です。これらは、ダウンロードの動作が異なる傾向があるためです。

  7. 訪問数が最も多いページを特定するには、ログ・レコードのURLの値でログ・レコードをグループ化し、グループ表のデフォルト・フィールド名を適切な値に変更して、一意の訪問者数のグループを分析します。この分析により、一意の訪問者によって最も訪問されたURLを識別できます。ステップ6に続けて:

    1. フィールドUser Name「値」セクションにドラッグ・アンド・ドロップします。

    2. フィールド名の横にある下矢印をクリックし、ファンクションを「一意」から「個別件数」に変更します。数値フィールドに選択できるその他のファンクションを参照してください:

    3. コマンドラインの問合せを変更して、フィールドUser Nameの名前をNumber of Unique Usersに変更し、classifyコマンドを削除して、問合せを実行します。問合せは次のようになります:

      'Log Source' = 'FMW WLS Server Access Logs' | link URI | stats avg('Content Size In') as 'Bytes Uploaded', avg('Content Size Out') as 'Download Size', distinctcount('User Name') as 'Number of Unique Users' | rename Count as 'Number of Hits', 'Start Time' as 'First Access', 'End Time' as 'Last Access', 'Group Duration' as 'Access Duration' 
    4. 「分析」をクリックし、フィールドNumber of Unique Usersを選択して、「OK」をクリックします。

    表に、URLおよび対応する一意のユーザーの数がリストされるため、一意のユーザーによって最も訪問されたURLを識別するのに役立ちます。表から、各URLのヒット数を特定することもできます。

    分析では、99%を超えるURLで、一意のユーザーが0または1人であることが示されます。これは、ログインを必要としないURLや、ほとんどアクセスされないURLの場合には普通です。小さいバブルにドリルダウンすると、特定のページ、通常のヒット数、および一意の訪問者数が示されます。

  8. 上位ユーザーを識別するには、ログ・レコードのユーザー名の値でログ・レコードをグループ化し、グループ表のデフォルト・フィールド名を適切な値に変更して、ヒット数のグループを分析します。この分析により、最もアクティブなユーザーを識別できます。

    1. コマンドラインを編集して、すべてのフィルタを削除します: 'Log Source' = 'FMW WLS Server Access Logs' | link URI

    2. 「ユーザー名」フィールドを「グループ化基準」にドラッグ・アンド・ドロップし、「URI」を削除して、問合せを実行します。

    3. classifyコマンドを削除し、コマンドラインのデフォルト・フィールド名を変更して、次の問合せを実行します:

      'Log Source' = 'FMW WLS Server Access Logs' | link 'User Name' | rename Count as 'Number of Hits', 'Start Time' as 'First Access', 'End Time' as 'Last Access', 'Group Duration' as 'Access Duration'

      表は、ユーザー別のヒット数でソートされます。

    4. アクセス別のユーザー動作を表示するには、「分析」をクリックし、フィールドNumber of Hitsを選択して、「OK」をクリックします。

    5. 異常をクリックして、他のユーザーと比べて多いかまたは少ないヒット数を記録したユーザーを識別します。

  9. 上位ユーザーとそのお気に入りページを識別するには、ログ・レコードのユーザー名の値でログ・レコードをグループ化し、グループ表のデフォルト・フィールド名を適切な値に変更して、一意のページ数のグループを分析します。この分析により、最もアクティブなユーザーおよび最もアクティブでないユーザーと、そのお気に入りページを識別できます。ステップ8に続けて:

    1. フィールドURI「値」セクションにドラッグ・アンド・ドロップします。ファンクションを「一意」から「個別件数」に変更します。

    2. コマンドラインの問合せを変更して、フィールドURIの名前をNumber of Unique Pagesに変更し、問合せを実行します。

    3. 「分析」をクリックし、フィールドNumber of Unique Pagesを選択して、「OK」をクリックします。

  10. 最大訪問数につながるエントリ・ページを識別するには、ログ・レコードのユーザー名の値でログ・レコードをグループ化し、グループ表のデフォルト・フィールド名を適切な値に変更して、エントリURLの値およびURLのヒット数のグループを分析します。この分析により、ユーザーが最初にヒットするページを識別できます。ステップ9に続けて:

    1. エントリURLを取得するには、フィールドURIのファンクションを「個別件数」から「最も古い」に変更します。

    2. コマンドラインの問合せを変更して、フィールドURIの名前をEntry URLに変更し、問合せを実行します。

    3. 「分析」をクリックし、フィールドNumber of HitsおよびEntry URLを選択し、topcountとして20を選択して、「OK」をクリックします。

      'Log Source' = 'FMW WLS Server Access Logs' | link 'User Name' | stats earliest(URI) as 'Entry URL' | rename Count as 'Number of Hits', 'Start Time' as 'First Access', 'End Time' as 'Last Access', 'Group Duration' as 'Access Duration' | classify topcount = 20 'Number of Hits', 'Entry URL'

    entry_page.bmpの説明が続きます

    これにより、ヒット数との関係でユーザーによって最初に使用されたURLが表示されます。たとえば、/loginは、ユーザーが最初に使用するURLの大部分です。

  11. 大部分のユーザーのエントリおよびイグジット・パスを識別するには、ログ・レコードのユーザー名の値でログ・レコードをグループ化し、グループ表のデフォルト・フィールド名を適切な値に変更して、エントリURLとイグジットURLの値のグループを分析します。この分析により、識別できます
    • ユーザーがWebサイトを移動する場合に使用する最も一般的なパス

    • ユーザーがWebサイトを終了する最も一般的な製品ページ

    • 製品会計ページや支払ゲートウェイなどの最も一般的なイグジットURL

    • 例外的なイグジットURLおよび予期しない終了の根本原因

    ステップ10に続けて:
    1. フィールドURI「値」セクションにドラッグ・アンド・ドロップします。

    2. イグジット・ページを取得するには、フィールドURIのファンクションを「一意」から「最新」に変更します。

    3. コマンドラインを編集し、フィールドlatest(URI)の名前をExit URLに変更して、問合せを発行します。

    4. 「分析」をクリックし、フィールドEntry URLおよびExit URLを選択し、topcountとして20を選択して、「OK」をクリックします。

      'Log Source' = 'FMW WLS Server Access Logs' | link 'User Name' | stats earliest(URI) as 'Entry URL', latest(URI) as 'Exit URL' | rename Count as 'Number of Hits', 'Start Time' as 'First Access', 'End Time' as 'Last Access', 'Group Duration' as 'Access Duration' | classify topcount = 20 'Entry URL', 'Exit URL'
    5. 分析グラフ・オプションを使用して、チャートのサイズを大きくします。


    entry_exit.bmpの説明が続きます

    このツリー・マップには、サイトのエントリURLとイグジットURLの関係が示されています。これは、顧客を会計ページに導くエントリURLや、ユーザーが会計まで進まなかった製品URLをサービス・プロバイダが識別しようと考えている小売サイトにとって非常に役立ちます。

仮想フィールドを使用したチャートの生成

新しい仮想フィールドを作成するには、リンク機能でevalコマンドを使用します。コマンドラインのeval問合せによって、仮想フィールドの折れ線グラフが生成され、時系列でのトラッキングが可能になります。

新しい仮想フィールドを作成するには、リンク機能でevalコマンドを使用します。コマンドラインのeval問合せによって、仮想フィールドの折れ線グラフが生成され、時系列でのトラッキングが可能になります。

:

  • ログ・ソースSAR CPU Logsのログ・レコードがホスト名とCPUによってグループ化されるシナリオについて考えます。時間の経過とともにサーバーのCPUによって発生する負荷を確認するために、evalコマンドで仮想フィールドLoad %を作成し、折れ線グラフを生成します。

    'Log Source' = 'SAR CPU Logs' | rename Instance as CPU | link 'Host Name (Server)', CPU | stats avg('CPU Idle Time (%)') as 'CPU Idle Time (%)' | eval 'Load %' = 100 - 'CPU Idle Time (%)'

    折れ線グラフを表示するには:

    1. 「ヒストグラム」タブをクリックします。

    2. 「グラフ・オプション」(グラフ・オプション)アイコンの横にある下矢印をクリックします。「グラフの表示/非表示」をクリックします。Load %を選択します。

    3. 「グラフ・オプション」(グラフ・オプション)アイコンの横にある下矢印をクリックします。「グラフ・オプション」をクリックします。「チャート・タイプ」リストから、「マーカーなし折れ線」を選択します。「閉じる」をクリックします。


    eval_load_cpu.pngの説明が続きます

  • ログ・ソースOMC WLS Server Access Logsのログ・レコードがURIによってグループ化されるシナリオについて考えます。時間の経過とともにアクセスされるデータのサイズ(MB)を確認するために、evalコマンドで仮想フィールドContent Size (MB)を作成し、フィールドContent Sizeの値に基づいてコンテンツ・サイズ(MB)を計算して、折れ線グラフを生成します。

    'Log Source' = 'WLS Server Access Logs' | link URI | stats avg('Content Size') as 'Content Size Bytes' | eval 'Content Size (MB)' = 'Content Size Bytes' / 1024

    折れ線グラフを表示するには:

    1. 「ヒストグラム」タブをクリックします。

    2. 「グラフ・オプション」(グラフ・オプション)アイコンの横にある下矢印をクリックします。「グラフの表示/非表示」をクリックします。Content Size (MB)およびAccess Log Recordsを選択します。

    3. 「グラフ・オプション」(グラフ・オプション)アイコンの横にある下矢印をクリックします。「グラフ・オプション」をクリックします。「チャート・タイプ」リストから、「マーカーなし折れ線」を選択します。「閉じる」をクリックします。


    content_size_mb.pngの説明が続きます

分析のフィールドとしてのSQL文を使用したリンク

リンクでは、分析用のフィールドとしてSQL文がサポートされます。SQL文には、実行されてDatabase Audit XML LogsOracle Unified DB Audit Log Source Stored in Database 12.1などのログ・ソースによって取得されるSQLが含まれます。

link 'SQL Statement'を使用すると、SQLをグループ化してその動作を分析し、異常を識別できます。

:

フィールドSQL Statementに基づいてログ・レコードをリンクする次の問合せについて考えます:

'Log Source' in ('Database Audit Logs', 'Database Audit XML Logs') 
	| rename 'Host Name (Server)' as 'DB Server', 'User Name (Originating)' as 'OS User', 'User Name' as 'DB User' 
	| link 'SQL Statement' 
	| rename Count as 'Number of Runs', 'Start Time' as 'First Run', 'End Time' as 'Last Run', 'Group Duration' as Age 
	| addfields [ Object = dual | stats count as 'dual Table Access' ], 
		[ Object like 'all_%' | stats count as 'ALL_ Table Access' ], 
		[ Object like 'dba_%' | stats count as 'DBA_ Table Access' ], 
		[ Object like 'user_%' | stats count as 'USER_ Table Access' ], 
		[ Object like 'v$%' | stats count as 'VDollar Table Access' ], 
		[ Object = null | stats count as 'No Table Access' ], 
		[ Action = '2' | stats count as 'Insert Count' ], 
		[ Action = '3' | stats count as 'Select Count' ], 
		[ Action = '6' | stats count as 'Update Count' ], 
		[ Action = '7' | stats count as 'Delete Count' ], 
		[ Type = '8' | stats count as 'Connect Count' ], 
		[ 'Status Code' = 1 | stats count as Failures ] 
	| eval 'Object Type' = if('dual Table Access' > 0, Dual, 
		'ALL_ Table Access' > 0, System, 
		'DBA_ Table Access' > 0, System, 
		'USER_ Table Access' > 0, System, 
		'VDollar Table Access' > 0, System, 
		'No Table Access' > 0, 'No Table', Other) 
	| eval 'SQL Type' = if('Insert Count' > 0, Insert, 
		'Select Count' > 0, Select, 
		'Update Count' > 0, Update, 
		'Delete Count' > 0, Delete, 
		'Connect Count' > 0, Connect, Other) 
	| stats distinctcount(Object) as Objects, distinctcount('Database ID') as 'Number of DBs', 
		distinctcount(Session) as 'Number of Sessions' 
	| fields -'dual Table Access', -'No Table Access', -'ALL_ Table Access', 
		-'USER_ Table Access', -'DBA_ Table Access', -'VDollar Table Access', -'Insert Count', 
		-'Select Count', -'Update Count', -'Delete Count', -'Connect Count', -'SQL Type', -'Object Type' 
	| classify Age 
	| classify 'Number of Sessions' 
	| classify 'Number of DBs' 
	| classify 'Number of Runs', 'Object Type' 
	| classify 'Object Type', 'SQL Type'
ノート

addfieldsは、リンク・ビジュアライゼーションで使用可能な機能で、仮想フィールドを問合せに追加できます。これは、問合せを取得し、出力をstatsコマンドにパイプします。結果の仮想フィールドは、表でも時系列チャートでも使用できます。

addfieldsコマンドの構文およびその他の詳細は、addfieldsを参照してください。

前述の問合せを実行すると、次の結果を確認できます:

  • classifyコマンドに基づいて、AgeNumber of SessionsNumber of DBsNumber of Runs, Object TypeおよびObject Type, SQL Typeのバブル・チャートが生成されます。


    link_sql_statement.pngの説明が続きます


    link_sql_bubble.pngの説明が続きます

    バブル・チャートでは、各パラメータ・セットに分類されるSQLの数に基づいてログ・レコードがグループ化されます。Object TypeおよびSQL Typeパラメータは、問合せのevalコマンドを使用して決定されます。

  • 面付き折れ線ヒストグラム・チャートは、時間に対してプロットされたdual Table AccessNo Table AccessALL_ Table AccessUSER_ Table AccessDBA_ Table AccessVDollar Table AccessInsert CountSelect CountUpdate CountDelete CountConnect CountLog Recordsなどのフィールドの出現を表します。

    1. ヒストグラム・チャート・タブで、「グラフ・オプション」(グラフ・オプション)アイコンの横にある下矢印をクリックします。

    2. すべてのフィールドのチャートを表示するように選択します。

    3. 「チャート・タイプ」で、「面付き折れ線」を選択します。

    4. 行ごとに2つのチャートを表示するように幅を調整します。


    link_sql_area_chart.pngの説明が続きます

  • グループ表には、SQL Statementフィールドに基づいてリンクで識別されるグループがリストされます。各SQLについて、SQLが実行された回数、開始時間、終了時間およびグループ期間が表にリストされていることがわかります。各グループをクリックすると、ログ・レコードの詳細が表示されます。クラスタ・ビジュアライゼーションでグループを表示して、さらに分析することもできます。


    link_sql_table.pngの説明が続きます

トランザクションのステップ間に要した時間の分析

リンク機能によって、ユーザー・セッションの分析、グループ化による様々な時間パラメータの抽出、およびビジネス・インサイトの取得に役立つトランザクション時間に関するデータの推測を行うことができます。

アクセス・ログ・ファイルから取得されたこの順序付けされていないデータ・セットについて考えます。次のフィールドは、ユーザー・セッションに関する情報と、ユーザーによって実行されたアクションを示します:

Time | Session ID | Action
 T2  | 1          | Login
 T1  | 5          | Login
 T6  | 1          | addtocart
 T3  | 1          | productlisting
 T4  | 1          | purchase
 T9  | 1          | purchase
 T7  | 5          | addtocart
 T5  | 1          | addtocart
 T8  | 5          | purchase 

Loginaddtocartproductlistingpurchaseなどのアクションは、T1からT9までのランダムな順序で記録され、セッションID 15の2つのセッションで発生しています。

アクセス・ログで同様の時間分析を実行するには、ログからフィールドにSession IDを抽出します。ログからURLを取得する正規表現を適用して、アクセス・ログからセッションの中間ステップを抽出します。

一般的なコンテキストでは、この例のセッションは任意のユーザー・トランザクションを表し、アクションはユーザーがトランザクションを完了するために実行した中間ステップを表します。

この順序付けされていないデータを分析し、必要な情報を抽出するために、次の問合せ例を実行できます:

'Upload Name' = logadmin 
| link 'Session ID'
| rename 'Group Duration' as 'Session Duration' 
| addfields 
  [ Action = addtocart | stats earliest(Time) as 'First Add To Cart Time' ], 
  [ Action = purchase | stats latest(Time) as 'Last Purchase Time' ] 
| eval 'Time Taken for Purchase (Secs)' = ('Last Purchase Time' - 'First Add To Cart Time') / 1000 
| fields -'First Add To Cart Time', 
         -'Last Purchase Time' 
| classify 'Time Taken for Purchase (Secs)'
  • link 'Session ID'は、セッションIDによってアクセス・ログ・レコードをグループ化し、2つのグループを作成します:

    Time | Session ID | Action
     T2  | 1          | Login
     T6  | 1          | addtocart
     T3  | 1          | productlisting
     T4  | 1          | purchase
     T5  | 1          | addtocart
     T9  | 1          | purchase
    
     T1  | 5          | Login
     T7  | 5          | addtocart
     T8  | 5          | purchase
  • addfieldsは、これらの各グループに対して実行されます。最初のaddfieldsは、Action = addtocartのレコードを取得します。この問合せの結果は、両方のグループについて次のようになります:

    Time | Session ID | Action
     T6  | 1          | addtocart
     T5  | 1          | addtocart
    
     T7  | 5          | addtocart
  • stats earliest(Time)は、グループごとに前述の結果を時間順にソートします:

    Time | Session ID | Action
     T5  | 1          | addtocart
     T6  | 1          | addtocart
     
     T7  | 5          | addtocart
  • 次に、指定されたフィールド(Time)が最初のレコードから取得されます:

    'First Add To Cart Time' = T5 for Group = 1
    'First Add To Cart Time' = T7 for Group = 5
  • 2番目のaddfieldsは、Action = purchaseに対して実行され、次のレコードが抽出されます:

    Time | Session ID | Action
     T4  | 1          | purchase
     T9  | 1          | purchase
    
     T8  | 5          | purchase
  • latest(Time)も、前述のレコードをTime順にソートします:

    Time | Session ID | Action
     T4  | 1          | purchase
     T9  | 1          | purchase
    
     T8  | 5          | purchase
  • latest(Time)は、最後のレコードを取得し、指定されたフィールド(Time)を抽出します:

    'Last Purchase Time' = T9 for Group = 1
    'Last Purchase Time' = T8 for Group = 5
  • この時点で、両方のグループにFirst Add to Cart TimeおよびLast Purchase Timeの値が設定されます。これらはタイムスタンプです。evalは、一方から他方を差し引いて経過時間を取得します。

  • 事実上、各セッションのカートへの追加から購入までのステップに要した時間を取得できます。これをclassifyで使用して、セッション間でのこの経過時間の差異を分析できます。


    time_analysis_bubble.pngの説明が続きます

addfieldsコマンドの構文およびその他の詳細は、addfieldsを参照してください。

複数のフィールドとその値に対するチャートの生成

問合せでaddfieldsコマンドを使用して、複数のフィールドを指定して個別のチャートを生成できます。また、UIでヒストグラムの「チャートの追加/編集」オプションを使用して、addfieldsコマンドと同じ操作を実行できます。

通常、単一フィールドのチャートを、様々な値(たとえば、ErrorCriticalAlertWarningなどのフィールドSeverityの値)と比較します。「チャートの追加」オプションによって、ダイアログ・ボックスでフィールドとその値を指定することで、並べて比較する複数のチャートを生成できます。

または、コマンドで問合せを入力して更新できます。「チャートの追加」オプションでは、addfieldsコマンドで問合せを作成するよりも高速に操作を実行できます。

  1. リンクUIから、「ログ・レコード」タブに移動し、「グラフ・オプション」アイコン「グラフ・オプション」メニューで「チャートの追加/編集」をクリックして、addfieldsコマンドで問合せを自動的に更新します。

    「チャートの追加/編集」ダイアログ・ボックスが開きます。

  2. 「副問合せ」の横で、メニューからSeverityなどのフィールドを選択します。

    関係演算子を選択します。

    編集アイコン「編集」アイコンをクリックして、alertなどの1つ以上の値を選択します。計算フィールドはサポートされていません。

  3. オプションで、統計ファンクションを選択します。

    「統計」の横で、フィールドに実行するファンクションおよびファンクション・フィールドをドロップダウン・メニューから選択します。

    countファンクションを除く他のすべてのファンクションには、ファンクション・フィールドが必要です。

  4. 「チャートの追加」をクリックして、結果の問合せを表示します。編集アイコン「編集」アイコンをクリックして、問合せを編集します。

  5. たとえば、フィールドSeverityの値errorcriticalおよびwarningのチャートを生成するには、ステップ2から4までを繰り返して別のチャートを追加します。

    「更新」をクリックします。

  6. 「グラフ・オプション」グラフ・オプションメニューをクリックし、生成した新しいチャートが「表示/非表示」オプションに含まれ、選択されていることを確認します。さらに、チャートのタイプ、チャートのサイズ、高さ、幅などの属性を選択できます。ヒストグラム・チャートを参照してください。

これで、「ログ・レコード」タブに、選択フィールドのカスタマイズされたチャートとその選択値が表示され、それらをビジュアル化して比較できます。

リンクでのeventstatsコマンドを使用した第2レベルの集計

リンクは、1つ以上の一意キーを使用してログ・レコードをグループ化するために使用されます。たとえば、一意のトランザクションIDを使用して、トランザクションに属するすべてのログ・レコードをグループ化できます。statsコマンドを使用して、各グループに統計を生成できます。eventstatsは、これらの統計をさらに集計できる新しいコマンドです。次の例は、eventstatsのユース・ケースを示しています。

例全体で次のアクセス・ログ・データセットを考えます:

1-Jan-2020 10:00:00 PST, chicago_dc1    /index.html      100
1-Jan-2020 10:00:00 PST, chicago_dc1    /index.html      100
1-Jan-2020 10:00:00 PST, chicago_dc1    /index.html      50
1-Jan-2020 10:00:00 PST, chicago_dc1    /index.html      50
1-Jan-2020 10:00:00 PST, chicago_dc2    /index.html      200
1-Jan-2020 10:00:00 PST, chicago_dc2    /index.html      200
1-Jan-2020 10:00:00 PST, austin_dc7     /report/download 5000
1-Jan-2020 10:00:00 PST, austin_dc7     /users/auth      50
1-Jan-2020 10:00:00 PST, amsterdam_dc1  /index.html      350
1-Jan-2020 10:00:00 PST, amsterdam_dc1  /report/download 1024

データセットには次のフィールドがあります:

  • Time: たとえば、1-Jan-2020 10:00:00 PST
  • Host Name (Server): このリクエストを処理したホスト。たとえば、chicago_dc1
  • URI: リクエストのURL。たとえば、/index.html
  • Content Size Out: ダウンロードされたバイト数。たとえば、100

単純なグループ化:

   * | link 'Host Name (Server)', URI
     | stats sum('Content Size Out') as 'Bytes Downloaded'

前述の問合せは、Host Name (Server)フィールドとURIフィールドの別個の組合せを使用してログ・レコードをグループ化します。各レコードのContent Size Outフィールドは、グループごとに新しいフィールドBytes Downloadedに合計されます。

eventstatsを使用したグローバル合計

前の例のダウンロードされたバイト数は、サーバーとURLの各組合せを対象としています。eventstatsの単純なユース・ケースは、すべてのサーバーおよびURL全体で、ダウンロードされた合計データを計算することです:

  * | link 'Host Name (Server)', URI
    | stats sum('Content Size Out') as 'Bytes Downloaded'
    | eventstats sum('Bytes Downloaded') as 'Total Bytes Downloaded'

eventstats_simple.pngの説明が続きます

前述の例で、eventstatsは、各グループの値を集計して単一のグローバル・ロールアップを生成します。次にこれをclassifyまたはevalに渡したり、where句で使用したりできます。

複数のeventstatsコマンド:

次の例のように複数のeventstatsをグループ化または連鎖できます:

.. | eventstats sum('Content Size In') as 'Bytes Uploaded', sum('Content Size Out') as 'Bytes Downloaded'
   | eventstats avg('Duraton') as 'Global Average Duration'

eventstatsを使用したグループ化

コマンドeventstatsには、group byモードもあります。次の問合せについて考えます:

* | link 'Host Name (Server)', URI
  | stats sum('Content Size Out') as 'Bytes Downloaded'
  | eventstats sum('Bytes Downloaded') as 'Total Bytes Downloaded' by URI

eventstatsは、単一値を計算するのではなく、一意のURIごとに1つの値を計算します:


eventstats_by_uri.pngの説明が続きます

合計は、最初に個別のURIを取得してから集計を実行することで生成されます:

index.html       -> 300 + 400 + 350 = 1050
/report/download -> 5000 + 1024     = 6024
/users/auth      -> 50              = 50

evalを使用したeventstats

コマンドeventstatsは、evalコマンドによって生成されたフィールドで実行することもできます。たとえば、URLのかわりに、データ・センターに対する合計を生成できます:

* | link 'Host Name (Server)',  URI
  | stats sum('Content Size Out') as 'Bytes Downloaded'
  | eval offset = indexof('Host Name (Server)', _)
  | eval Datacenter = substr('Host Name (Server)', 0, offset)
  | eventstats sum('Bytes Downloaded') as 'Total Bytes Downloaded' by Datacenter
  | fields -offset

eventstats_eval.pngの説明が続きます

sumファンクションは、部分文字列によるグループ化の後に実行されます:

chicago_dc1 = 300 
chicago_dc2 = 400
  -> chicago = 300+400 = 700

amsterdam_dc1 = 350
amsterdam_dc1 = 1024
  -> amsterdam = 350 + 1024 = 1374

austin_dc7 = 5000
austin_dc7 = 50
 -> austin = 5000 + 50 = 5050

グループ化は、1つ以上のプロパティを使用して実行できます。プロパティは、グループ・キーか、statsevalによって生成された文字列値です。

グループ比較のためのパーセンテージの計算

eventstatsコマンドの非常に重要な用途は、グローバル値を生成し、様々なグループによる寄与度のパーセンテージが高いか低いかを識別することです:

 * | link 'Host Name (Server)', URI
   | stats sum('Content Size Out') as 'Bytes Downloaded'
   | eval offset = indexof('Host Name (Server)', _)
   | eval Datacenter = substr('Host Name (Server)', 0, offset)
   | eventstats sum('Bytes Downloaded') as 'Total Bytes Downloaded' by Datacenter
   | eval 'Download Contribution %' = 100 / ('Total Bytes Downloaded' / 'Bytes Downloaded')
   | fields -offset

eventstats_computing_percentages.pngの説明が続きます

Download Contribution %は、eventstats..byによって生成されたグローバル値と、statsによって生成されたグループごとの値を使用して計算されます:

chicago_dc1, index.html         => 100/(700/300)   = 42.857
chicago_dc2, index.html         => 100/(700/400)   = 57.143
amsterdam_dc1, index.html       => 100/(1374/350)  = 25.473
amsterdam_dc1, /report/download => 100/(1374/1024) = 74.527
austin_dc7, /report/download    => 100/(5050/5000) = 99.01
austin_dc7, /users/auth         => 100/(5050/50)   = 0.99

この問合せでは、同じデータ・センター内の他のURLと比較して、ダウンロード・トラフィックが最も多いURLを確認できます。Download Contribution %フィールドは、次を使用してグループをフィルタするために使用できます:

  • where
  • ランキング用のsortコマンド
  • 異常検出用のclassifyコマンド

リンク・ナビゲーション・ファンクションを使用したデータベースのイベントの識別

リンクを使用して、ログ・レコードから構造化データを作成し、データを順序付き表として表示します。統計ファンクションは、statsコマンドを使用して表の列に適用し、導出列を作成できます。これらの導出列は、eventstatsコマンドを使用してさらに集計できます。

ナビゲーション・ファンクション

ナビゲーション・ファンクションは、特定の行から特定の列の値をフェッチする場合に役立ちます。これらにより、前述のsortコマンドに応じて異なる結果が生成されます。

次のナビゲーション・ファンクションは、リンクのeventstatsコマンドとともに使用できます:

ファンクション 説明

rownum

行番号列を作成します

first()

指定されたフィールドの最初の値を取得します

last()

指定されたフィールドの最後の値を取得します

nthval()

指定された行の列値を取得します

lag()

前の行の列値を取得します

lead()

次の行の列値を取得します

ファンクションの詳細は、eventstatsを参照してください。

イベントのコンテキストの取得

Oracle Log Analyticsには、Database Alert Logsの即時利用可能なラベルが用意されています。ラベルAbnormal Terminationは、データベースが停止する重大な問題を示します。一般的なトリアージでは、そのような停止の前に発生したイベントの順序を分析します。これは、停止後のイベントを把握する場合にも役立ちます。

次の項では、Database Alert Logsに対していくつかのeventstatsファンクションを使用して、トリアージするステップについて説明します。

Database Alert Logsのイベントのリンク

次の問合せを実行して、選択したデータベースのイベントをリンクします:

'Log Source' = 'Database Alert Logs' and Label != null and Entity = MyDB
| rename Entity as Database
| link span = 1minute Time, Database, Label
| sort Database, 'Start Time'

これにより、DatabaseLabelごとに一意の行が作成されます。Time列を含めているため、行が異なる時間に繰り返される場合、同じLabelに対して複数の行が生成されます。

sortコマンドは、最も古いものが最初の行になるように、Labelの順序で表をソートします。

行番号の追加

次の問合せを実行して、各行に番号を追加します:

'Log Source' = 'Database Alert Logs' and Label != null and Entity = MyDB
| rename Entity as Database
| link span = 1minute Time, Database, Label
| sort Database, 'Start Time'
| eventstats rownum as 'Row Number' by Database

問合せに複数のデータベースがある場合、by Database句があるため、Row NumberDatabaseごとにリセットされます。

データベース・クラッシュ・イベントが含まれる行の識別

ラベルAbnormal Terminationは、データベースがクラッシュしたことを示します。次の問合せを使用して、そのような行を識別します:

'Log Source' = 'Database Alert Logs' and Label != null and Entity = MyDB
| rename Entity as Database
| link span = 1minute Time, Database, Label
| sort Database, 'Start Time'
| eventstats rownum as 'Row Number' by Database
| addfields
   [ * | where Label = 'Abnormal Termination'
       | eventstats last('Row Number') as 'Crash Row'
   ]

addfieldsは、ログ・レコードのサブセットを識別するために使用されます。この場合、addfieldsは、表の複数の行を検索します。一致行はeventstatsに渡され、last('Row Number')によって、最後の一致行のRow Numberが取得されます。これは、新しいフィールドのCrash Rowとして移入されます。Crash Rowの値は、addfieldsで指定した条件に一致する行に対してのみ設定されます。

Crash Rowは、特定の行に対してのみ移入されます。別のeventstatsを使用して、すべての行に値を移入します:

'Log Source' = 'Database Alert Logs' and Label != null and Entity = MyDB
| rename Entity as Database
| link span = 1minute Time, Database, Label
| sort Database, 'Start Time'
| eventstats rownum as 'Row Number' by Database
| addfields
   [ * | where Label = 'Abnormal Termination'
       | eventstats last('Row Number') as 'Crash Row'
   ]
| eventstats max('Crash Row') as 'Event Row' by Database

これにより、すべての行にEvent Row列が作成され、最後のデータベース・クラッシュの行が含まれます。

データベース・クラッシュ近辺のイベントの識別

表にはまだ複数の(たとえば数百の)イベントがあります。Event Rowの前の少数のイベントと、Event Rowの後の少数のイベントを識別するには、問合せを変更して行をフィルタします:

'Log Source' = 'Database Alert Logs' and Label != null and Entity = MyDB
| rename Entity as Database
| link span = 1minute Time, Database, Label
| sort Database, 'Start Time'
| eventstats rownum as 'Row Number' by Database
| addfields
   [ * | where Label = 'Abnormal Termination'
       | eventstats last('Row Number') as 'Crash Row'
   ]
| eventstats max('Crash Row') as 'Event Row' by Database
| eval 'Start Row' = 'Event Row' - 3
| eval 'End Row' = 'Event Row' + 2
| where 'Row Number' >= 'Start Row' and 'Row Number' <= 'End Row'

これで、表にAbnormal Terminationの前に発生したイベントが表示されます。また、Abnormal Terminationの後に発生したイベントも表示されます。

前と次のイベント

lag()を使用して、前のイベントを取得できます。オプションの行番号を渡すと、特定の前の行を取得できます。同様に、lead()を使用して次の行を取得できます:

'Log Source' = 'Database Alert Logs' and Label != null and Entity = MyDB
| rename Entity as Database
| link span = 1minute Time, Database, Label
| sort Database, 'Start Time'
| addfields
   [ *
      | where Label != null
      | eventstats lag(Label) as 'Previous Event',
                   lead(Label) as 'Next Event'
   ]

さらに、nthVal()は、特定の行から値を取得できます。

ログ分析での通貨記号の使用

evalコマンドのunit関数を使用して、フィールドを包含通貨としてマークできます。このフィールド値を分析で使用し、対応する通貨記号をビジュアライゼーションおよびグループ表に表示できます。

最初に、evalで定義された書式を使用して通貨単位を指定できます。その後、リンク表とチャートに適切な通貨記号が表示されます。

次の例では、フィールドPriceの値を使用して、新しいフィールドPrice (USD)Price (GBP)Price (JPY)Price (CNY)およびPrice (INR)の値を計算し、それらを含める通貨としてマークします。数年間にわたるガソリンの地域ごとの平均価格の分析にも同じ新しい分野が使用されている。

'Log Source' = 'Gasoline Prices'
| eval 'Price (USD)' = unit(Price, currency_usd)
| eval 'Price (GBP)' = unit(Price * 0.72, currency_gbp)
| eval 'Price (JPY)' = unit(Price * 110.6, currency_jpy)
| eval 'Price (CNY)' = unit(Price * 6.47, currency_cny)
| eval 'Price (INR)' = unit(Price * 74.79, currency_inr)
| link Time, Type, Region
| stats avg('Price (USD)') as 'Cost (USD)', 
        avg('Price (GBP)') as 'Cost (GBP)', 
        avg('Price (JPY)') as 'Cost (JPY)', 
        avg('Price (CNY)') as 'Cost (CNY)', 
        avg('Price (INR)') as 'Cost (INR)'
| classify 'Start Time', 'Cost (USD)', Region, Type as 'Gas Price Analysis'

次のイメージでは、ガソリンの地域、時間およびタイプに基づいてグループが識別されます。ガソリンの平均価格帯はy軸に沿ってバブルをプロットするのに使用される。


地域、時間、ガソリンのタイプに基づいて識別されるグループ

次のイメージでは、グループ表には様々な通貨でのガソリンの平均価格が示されています。チャートには、通貨値ごとに数年間の原価の変動が示されます。


グループ表には、様々な通貨でのガソリンの平均価格が表示されます

timestatsコマンドを使用した時系列分析

timestatsコマンドを使用して、フィールドのトレンドを分析できます。linkコマンドの後にtimestatsコマンドを使用すると、追加の時系列分析およびリッチ・ビジュアライゼーションが提供されます。

OCI VCNフロー統合スキーマ・ログの例について考えてみます。OCI VCNフロー統合スキーマ・ログの「アクション」フィールドは、特定のネットワーク・リクエストが受け入れられたか拒否されたかを示します。timestatsコマンドを使用して、このフィールドのトレンドを分析します。タイムスタンプを参照してください。

基本的なlinkコマンドから開始します。

'Log Source' = 'OCI VCN Flow Unified Schema Logs' | link Action

これは、選択した期間に2つの個別値があることを示しています。


選択した期間の2つの個別値

上記の場合、デフォルトの動作は指定されたフィールドでグループ化されるため、一意のアクションごとに1行のみを使用できます。最初のステップは、期間に基づいて各値に複数の行があることを確認することです。これを行うには、Timeを別のフィールドとしてlinkコマンドに追加します。

'Log Source' = 'OCI VCN Flow Unified Schema Logs' | link span=1day Time, Action

spanパラメータはオプションです。指定しない場合、選択した期間に適したデフォルトが計算されます。別の日に同じアクションが別の行に表示されるようになりました。


期間に基づく各値の複数の行

ここで、timestatsコマンドを使用します。この場合、X軸には開始時間を、Y軸には件数値を指定します。timestatsには常に関数が必要なため、sum()関数を使用して、指定したアクション値を持つレコード数を間隔ごとに合計します。

'Log Source' = 'OCI VCN Flow Unified Schema Logs' 
| link span=1day Time, Action
| timestats name="Trend of Action" sum(Count) as Records by Action

各アクションの合計(件数)値が表示されます。


各アクションの合計(件数)値

timestatsコマンド、フィールド、制限および構成オプションを使用した時系列のプロットの詳細は、「timestatsコマンドを使用した時系列のプロット」を参照してください。

時系列クラスタリング

同様の時系列値は、linkコマンドの後にtimeclusterコマンドを使用してグループ化できます。クラスタリングは、分析する時系列が多数ある場合や、時系列値の異なる動作を識別する場合に便利です。

OCI VCN Flow Unified Schema Logsは、OCI VNICのネットワーク・トラフィック情報を記録します。異なるパブリックIPによって転送されるデータの量を識別するために、「パブリックIP」および「コンテンツ・サイズ・アウト」フィールドを使用して問合せを構成できます。

基本的なlinkコマンドから開始します。

'Log Source' = 'OCI VCN Flow Unified Schema Logs' | eval 'Content Size Out (bytes)' = unit('Content Size Out', byte) | link 'Public IP'

これは、システムに25kを超える一意のパブリックIPがあることを示しています。


25kを超える一意のパブリックIP

この表には、一意のパブリックIPごとに1行が含まれます。これは、期間ごとに1行になるように分割する必要があります。これを行うには、linkコマンドにTimeフィールドを追加します:

'Log Source' = 'OCI VCN Flow Unified Schema Logs'
| eval 'Content Size Out (bytes)' = unit('Content Size Out', byte)
| link Time, 'Public IP'

パブリックIP値ごとに複数の行が表示されます。

timestatsコマンドを使用して時系列をプロットすると、上位100個のパブリックIPのみが返されます。チャートに25k個のIPをプロットすることはできません。


timestatsコマンドは上位100個のパブリックIPのみを返します

したがって、timestatsのかわりに、timeclusterを使用して代表的なサンプルを取得します。

'Log Source' = 'OCI VCN Flow Unified Schema Logs'
| eval 'Content Size Out (bytes)' = unit('Content Size Out', byte)
| link Time, 'Public IP'
| timecluster avg('Content Size Out (bytes)') as 'Network Transfer' by 'Public IP'

timeclusterコマンドを使用した時系列のプロット

各行は、ネットワーク転送に同様の値を持つ1つ以上のパブリックIP値を表します。

任意のポイントにマウスを重ねると、詳細が表示されます。


任意のポイントにマウス・オーバーして詳細を表示します

timeclusterコマンドおよび時系列のクラスタリングの詳細は、timeclusterおよびtimeclusterコマンドを使用した時系列のグラフ化を参照してください。