リンクを使用した詳細アナリティクスの実行
このトピックで説明するユースケースを使用して、高度なアナリティクスを実行するためのリンク機能の適用を理解します。
シナリオの例:
ユース・ケース | リンク機能 | サンプル・ログ |
---|---|---|
リンク・トレンド |
|
|
リンク基本機能 |
|
|
チャートの仮想フィールドの使用 |
|
|
フィールドとしてのSQL文の使用 |
|
|
時間分析 |
|
|
複数のフィールドとその値に対するチャート |
- |
|
第2レベルの集計 |
|
|
ナビゲーション・ファンクション |
|
|
グループ表およびチャートでの通貨記号の使用 |
|
|
フィールドのトレンドの分析 |
|
|
類似した時系列値のグループ化 |
|
リンク・トレンド機能を使用した時系列データのビジュアル化
リンクは、ログ・レコードを特定のフィールドでグループ化するために使用されます。これらのグループから抽出できる様々な統計は、バブル・チャート・ビジュアライゼーションを使用してビジュアル化できます。バブル・チャート・ビジュアライゼーションは、軸として時間フィールドをサポートするように拡張されました。
次のステップでは、トレンド機能を使用して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の関連メタデータも抽出します。
-
ソースを選択してリンク・ビジュアライゼーションに切り替えます:
「フィールド」パネルで、「ログ・ソース」をクリックし、EBS Concurrent Request Logs - Enhancedログ・ソースを選択して、リンク・ビジュアライゼーションに切り替え、「リクエストID」フィールドを「グループ化基準」パネルにドラッグ・アンド・ドロップしてリクエストのリストを取得します:
自動生成された問合せは次のようになります:
'Log Source' = 'EBS Concurrent Request Logs - Enhanced' | link 'Request ID'
-
リクエストの開始時間と終了時間を抽出します:
各リクエストには、ファイルに出力された開始時間と終了時間があります。終了時間がない場合、ファイルの更新時間が終了時間とみなされます。ログ・ソースは、これらの値を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が返されます。これで、レコード表に新しいフィールドが表示されます:
Request Start TimeおよびRequest End Timeは、タイムスタンプとして自動的に検出され、ローカル・タイムゾーンでフォーマットされます。ファイルが収集されると、エージェントは、EBSデータベースのタイムゾーンを使用してタイムスタンプを解釈します。
ノート
データベース・タイムゾーンがOracle Infrastructure Monitoring構成ホームで期待どおりに表示されるようにして、値の不一致を回避するには、アップロード時にタイムゾーンを指定します。 -
リクエスト期間を計算します:
ここで、各リクエストの開始時間と終了時間がわかったため、これらの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グループごとに作成される新しいフィールドです。これには、リクエストの開始時間と終了時間の差異が含まれます。
ノート
Oracle Logging Analyticsでは、期間フィールドとしてTime Takenが自動的に検出されます(これは2つのタイムスタンプ・フィールドの差異によって生成されるため)。そのため、これは判読可能な方法で自動的にフォーマットされます。
-
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軸に沿ってプロットされます:
時間は、ローカル・タイムゾーンで表示されます。バブルのサイズは、リクエストの数を示します。
前述のバブル・チャートでは、2018年7月21日の4分を超えるリクエスト期間が目立っています。リクエストの大部分は、2分未満で終了しています。
1つ以上のバブルをクリックしてドリルダウンし、特定のリクエストを表示できます。
Oracle WebLogic Serverのアクセス・ログの分析
ログ・ソースFMW WLS Server Access Logs
のOracle WebLogic Serverアクセス・ログで構成されるデータ・セットの例について考えます。ログ・レコードには、特定の期間におけるユーザーによるOracle WebLogic Serverへのアクセスに関するデータが含まれます。これらの個々のログ・レコードを分析すると、使用状況統計、URLの人気、最もアクティブなユーザーなどのデータに関する有意義なインサイトを取得できます。ログから、結果ごとに特定のフィールドを選択してログ・レコードを分析することで、次の結果を取得する方法を学習します:
-
ヒット数別の上位URLの表示
-
ヒット数別の異常の表示
-
アクセス期間別の異常の表示
-
アップロード・サイズ別のURLの識別
-
ダウンロード・サイズ別のURLの識別
-
ヒット数とダウンロード・サイズの相関関係の分析
-
訪問数が最も多いページの特定
-
上位ユーザーの識別
-
上位ユーザーとそのお気に入りページの識別
-
最大訪問数につながるエントリ・ページの識別
-
大部分のユーザーのエントリおよびイグジット・パスの識別
-
rename
コマンドを使用して、フィールドの名前を、ユースケースに関連する名前に変更します。 -
classify
コマンドでは、グループを分析し、結果をバブル・チャートの形式で表示できます。問合せの実行結果を表形式で簡易表示するには、問合せからclassify
コマンドを削除して再実行します。 -
チャートの異常バブルをクリックして、異常グループの詳細を表示します。バブルの調査後に元の結果に戻るには、「元に戻す」アイコンをクリックします。
-
link
コマンドを実行する場合、グループ期間は、バブル・チャートで分や秒などの読取り可能なフォーマットで表示されます。ただし、link
コマンドの後にwhere
コマンドを実行して、指定した秒数(200秒など)を超えるトランザクションを検索する場合、使用する必要がある単位はミリ秒です。
データ・セットを取得するには、適切な日付範囲を選択し、ログ・ソースを指定して問合せを実行します:
'Log Source' = 'FMW WLS Server Access Logs'
「ビジュアル化」パネルから「リンク」を選択します。'FMW WLS Server Access Logs'グループ表およびバブル・チャートが表示されます。
-
ヒット数別の上位URLを表示するには、ログ・レコードのURLの値でログ・レコードをグループ化し、各グループのURLの合計数を取得し、グループ表のデフォルト・フィールド名を適切な値に変更して、結果を表形式で表示します。この分析により、最も使用されているURLを特定できます。
-
「URI」フィールドを「グループ化基準」にドラッグ・アンド・ドロップし、「ログ・ソース」フィールドを「グループ化基準」から削除します。
-
問合せの実行後、コマンドラインで、フィールドCountの名前をNumber of Hitsに、Start TimeをFirst Accessに、End TimeをLast Accessに、Group DurationをAccess Durationに変更します。
-
コマンドラインから
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コマンドで指定したとおりに変更されます。
-
-
ヒット数別の異常を表示するには、ログ・レコードの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のパーセンテージを表示するには、バブルの上にカーソルを置きます。
-
アクセス期間別の異常を表示するには、ログ・レコードのURLの値でログ・レコードをグループ化し、グループ表のデフォルト・フィールド名を適切な値に変更して、URLのアクセス期間のグループを分析します。この分析により、URLへのアクセスに要した時間の例外的なパターンを分離できます。ステップ2に続けて:
「分析」をクリックし、Access Durationを選択して、「OK」をクリックします。
Access Durationは、各URLがアクセスされた期間の指標です。これは、各URLのログ・ファイルの最後のタイムスタンプと最初のタイムスタンプの差異として計算されます。
-
アップロード・サイズ別のURLを識別するには、ログ・レコードのURLの値でログ・レコードをグループ化し、グループ表のデフォルト・フィールド名を適切な値に変更して、アップロードされたデータのサイズのグループを分析します。この分析により、例外的なサイズのデータがアップロードされたURLを識別できます。ステップ3に続けて:
-
フィールドContent Size Inを「値」セクションにドラッグ・アンド・ドロップします。
-
コマンドラインの問合せを変更して、フィールドContent Size Inの名前をBytes Uploadedに変更し、問合せを実行します。
-
「分析」をクリックし、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のグループが表示されます。
-
時間範囲を横断してBytes Uploadedデータを相互に関連付けるには、ヒストグラム・チャート・オプションでチャートの表示/非表示を選択的に切り替えます。棒グラフ以外の他のビジュアライゼーション・オプションを探索します。
-
-
ダウンロード・サイズ別のURLを識別するには、ログ・レコードのURLの値でログ・レコードをグループ化し、グループ表のデフォルト・フィールド名を適切な値に変更して、ダウンロードされたデータのサイズのグループを分析します。この分析により、ダウンロードされたデータが例外的なサイズのURLを識別できます。ステップ4に続けて:
-
フィールドContent Size Outを「値」セクションにドラッグ・アンド・ドロップし、Content Size Inを「値」セクションから削除します。
-
コマンドラインの問合せを変更して、フィールドContent Size Outの名前をDownload Sizeに変更し、問合せを実行します。
-
「分析」をクリックし、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のグループが表示されます。
-
時間範囲を横断してDownload Sizeデータを相互に関連付けるには、ヒストグラム・チャート・オプションでチャートの表示/非表示を選択的に切り替えます。棒グラフ以外の他のビジュアライゼーション・オプションを探索します。
-
-
ヒット数とダウンロード・サイズの相関関係を分析するには、ログ・レコードのURLの値でログ・レコードをグループ化し、グループ表のデフォルト・フィールド名を適切な値に変更して、ダウンロードされたデータのサイズおよびヒット数のグループを分析します。この分析により、ダウンロードされたデータのサイズおよびヒット数が例外的なパターンのURLを識別できます。ステップ5に続けて:
-
「分析」をクリックし、フィールドNumber of Hits、Download Sizeを選択して、「OK」をクリックします。
-
すべてのバブルを表示するために問合せから
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軸に沿ってプロットされます。
バブルは次のように解釈できます:
-
URLの73.8%が1回から7回アクセスされました。
-
URLの73.8%の平均ダウンロード・サイズは、32,345から34,000の間にあります。この狭い範囲は、多数のURLが、ダウンロード・サイズの点では非常によく似た動作になっていることを示します。
-
73.8%は大多数であるため、残りのポイントは異常としてマークされます。
-
実際のデータでは、.css、.jsおよびイメージ・ファイルは他のURLとは別にシステムでグループ化することが一般的です。これらは、ダウンロードの動作が異なる傾向があるためです。
-
-
訪問数が最も多いページを特定するには、ログ・レコードのURLの値でログ・レコードをグループ化し、グループ表のデフォルト・フィールド名を適切な値に変更して、一意の訪問者数のグループを分析します。この分析により、一意の訪問者によって最も訪問されたURLを識別できます。ステップ6に続けて:
-
フィールドUser Nameを「値」セクションにドラッグ・アンド・ドロップします。
-
フィールド名の横にある下矢印をクリックし、ファンクションを「一意」から「個別件数」に変更します。数値フィールドに選択できるその他のファンクションを参照してください:
-
コマンドラインの問合せを変更して、フィールド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'
-
「分析」をクリックし、フィールドNumber of Unique Usersを選択して、「OK」をクリックします。
表に、URLおよび対応する一意のユーザーの数がリストされるため、一意のユーザーによって最も訪問されたURLを識別するのに役立ちます。表から、各URLのヒット数を特定することもできます。
分析では、99%を超えるURLで、一意のユーザーが0または1人であることが示されます。これは、ログインを必要としないURLや、ほとんどアクセスされないURLの場合には普通です。小さいバブルにドリルダウンすると、特定のページ、通常のヒット数、および一意の訪問者数が示されます。
-
-
上位ユーザーを識別するには、ログ・レコードのユーザー名の値でログ・レコードをグループ化し、グループ表のデフォルト・フィールド名を適切な値に変更して、ヒット数のグループを分析します。この分析により、最もアクティブなユーザーを識別できます。
-
コマンドラインを編集して、すべてのフィルタを削除します:
'Log Source' = 'FMW WLS Server Access Logs' | link URI
-
「ユーザー名」フィールドを「グループ化基準」にドラッグ・アンド・ドロップし、「URI」を削除して、問合せを実行します。
-
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'
表は、ユーザー別のヒット数でソートされます。
-
アクセス別のユーザー動作を表示するには、「分析」をクリックし、フィールドNumber of Hitsを選択して、「OK」をクリックします。
-
異常をクリックして、他のユーザーと比べて多いかまたは少ないヒット数を記録したユーザーを識別します。
-
-
上位ユーザーとそのお気に入りページを識別するには、ログ・レコードのユーザー名の値でログ・レコードをグループ化し、グループ表のデフォルト・フィールド名を適切な値に変更して、一意のページ数のグループを分析します。この分析により、最もアクティブなユーザーおよび最もアクティブでないユーザーと、そのお気に入りページを識別できます。ステップ8に続けて:
-
フィールドURIを「値」セクションにドラッグ・アンド・ドロップします。ファンクションを「一意」から「個別件数」に変更します。
-
コマンドラインの問合せを変更して、フィールドURIの名前をNumber of Unique Pagesに変更し、問合せを実行します。
-
「分析」をクリックし、フィールドNumber of Unique Pagesを選択して、「OK」をクリックします。
-
-
最大訪問数につながるエントリ・ページを識別するには、ログ・レコードのユーザー名の値でログ・レコードをグループ化し、グループ表のデフォルト・フィールド名を適切な値に変更して、エントリURLの値およびURLのヒット数のグループを分析します。この分析により、ユーザーが最初にヒットするページを識別できます。ステップ9に続けて:
-
エントリURLを取得するには、フィールドURIのファンクションを「個別件数」から「最も古い」に変更します。
-
コマンドラインの問合せを変更して、フィールドURIの名前をEntry URLに変更し、問合せを実行します。
-
「分析」をクリックし、フィールド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'
これにより、ヒット数との関係でユーザーによって最初に使用されたURLが表示されます。たとえば、/loginは、ユーザーが最初に使用するURLの大部分です。
-
-
大部分のユーザーのエントリおよびイグジット・パスを識別するには、ログ・レコードのユーザー名の値でログ・レコードをグループ化し、グループ表のデフォルト・フィールド名を適切な値に変更して、エントリURLとイグジットURLの値のグループを分析します。この分析により、識別できます
-
ユーザーがWebサイトを移動する場合に使用する最も一般的なパス
-
ユーザーがWebサイトを終了する最も一般的な製品ページ
-
製品会計ページや支払ゲートウェイなどの最も一般的なイグジットURL
-
例外的なイグジットURLおよび予期しない終了の根本原因
-
フィールドURIを「値」セクションにドラッグ・アンド・ドロップします。
-
イグジット・ページを取得するには、フィールドURIのファンクションを「一意」から「最新」に変更します。
-
コマンドラインを編集し、フィールドlatest(URI)の名前をExit URLに変更して、問合せを発行します。
-
「分析」をクリックし、フィールド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'
-
分析グラフ・オプションを使用して、チャートのサイズを大きくします。
このツリー・マップには、サイトのエントリ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 (%)'
折れ線グラフを表示するには:
-
「ヒストグラム」タブをクリックします。
-
「グラフ・オプション」()アイコンの横にある下矢印をクリックします。「グラフの表示/非表示」をクリックします。Load %を選択します。
-
「グラフ・オプション」()アイコンの横にある下矢印をクリックします。「グラフ・オプション」をクリックします。「チャート・タイプ」リストから、「マーカーなし折れ線」を選択します。「閉じる」をクリックします。
-
-
ログ・ソース
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
折れ線グラフを表示するには:
-
「ヒストグラム」タブをクリックします。
-
「グラフ・オプション」()アイコンの横にある下矢印をクリックします。「グラフの表示/非表示」をクリックします。Content Size (MB)およびAccess Log Recordsを選択します。
-
「グラフ・オプション」()アイコンの横にある下矢印をクリックします。「グラフ・オプション」をクリックします。「チャート・タイプ」リストから、「マーカーなし折れ線」を選択します。「閉じる」をクリックします。
-
分析のフィールドとしてのSQL文を使用したリンク
リンクでは、分析用のフィールドとしてSQL文がサポートされます。SQL文には、実行されてDatabase Audit XML Logs
やOracle 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コマンドに基づいて、
Age
、Number of Sessions
、Number of DBs
、Number of Runs, Object Type
およびObject Type, SQL Type
のバブル・チャートが生成されます。バブル・チャートでは、各パラメータ・セットに分類されるSQLの数に基づいてログ・レコードがグループ化されます。
Object Type
およびSQL Type
パラメータは、問合せのeval
コマンドを使用して決定されます。 -
面付き折れ線ヒストグラム・チャートは、時間に対してプロットされた
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
、Log Records
などのフィールドの出現を表します。-
ヒストグラム・チャート・タブで、「グラフ・オプション」()アイコンの横にある下矢印をクリックします。
-
すべてのフィールドのチャートを表示するように選択します。
-
「チャート・タイプ」で、「面付き折れ線」を選択します。
-
行ごとに2つのチャートを表示するように幅を調整します。
-
-
グループ表には、SQL Statementフィールドに基づいてリンクで識別されるグループがリストされます。各SQLについて、SQLが実行された回数、開始時間、終了時間およびグループ期間が表にリストされていることがわかります。各グループをクリックすると、ログ・レコードの詳細が表示されます。クラスタ・ビジュアライゼーションでグループを表示して、さらに分析することもできます。
トランザクションのステップ間に要した時間の分析
リンク機能によって、ユーザー・セッションの分析、グループ化による様々な時間パラメータの抽出、およびビジネス・インサイトの取得に役立つトランザクション時間に関するデータの推測を行うことができます。
アクセス・ログ・ファイルから取得されたこの順序付けされていないデータ・セットについて考えます。次のフィールドは、ユーザー・セッションに関する情報と、ユーザーによって実行されたアクションを示します:
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
Login
、addtocart
、productlisting
、purchase
などのアクションは、T1
からT9
までのランダムな順序で記録され、セッションID 1
と5
の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
で使用して、セッション間でのこの経過時間の差異を分析できます。
addfields
コマンドの構文およびその他の詳細は、addfieldsを参照してください。
複数のフィールドとその値に対するチャートの生成
問合せでaddfields
コマンドを使用して、複数のフィールドを指定して個別のチャートを生成できます。また、UIでヒストグラムの「チャートの追加/編集」オプションを使用して、addfields
コマンドと同じ操作を実行できます。
通常、単一フィールドのチャートを、様々な値(たとえば、Error、Critical、Alert、WarningなどのフィールドSeverityの値)と比較します。「チャートの追加」オプションによって、ダイアログ・ボックスでフィールドとその値を指定することで、並べて比較する複数のチャートを生成できます。
または、コマンドで問合せを入力して更新できます。「チャートの追加」オプションでは、addfields
コマンドで問合せを作成するよりも高速に操作を実行できます。
-
リンクUIから、「ログ・レコード」タブに移動し、「グラフ・オプション」メニューで「チャートの追加/編集」をクリックして、
addfields
コマンドで問合せを自動的に更新します。「チャートの追加/編集」ダイアログ・ボックスが開きます。
-
「副問合せ」の横で、メニューから
Severity
などのフィールドを選択します。関係演算子を選択します。
編集アイコンをクリックして、
alert
などの1つ以上の値を選択します。計算フィールドはサポートされていません。 -
オプションで、統計ファンクションを選択します。
「統計」の横で、フィールドに実行するファンクションおよびファンクション・フィールドをドロップダウン・メニューから選択します。
count
ファンクションを除く他のすべてのファンクションには、ファンクション・フィールドが必要です。 -
「チャートの追加」をクリックして、結果の問合せを表示します。編集アイコンをクリックして、問合せを編集します。
-
たとえば、フィールド
Severity
の値error
、critical
およびwarning
のチャートを生成するには、ステップ2から4までを繰り返して別のチャートを追加します。「更新」をクリックします。
-
「グラフ・オプション」メニューをクリックし、生成した新しいチャートが「表示/非表示」オプションに含まれ、選択されていることを確認します。さらに、チャートのタイプ、チャートのサイズ、高さ、幅などの属性を選択できます。ヒストグラム・チャートを参照してください。
これで、「ログ・レコード」タブに、選択フィールドのカスタマイズされたチャートとその選択値が表示され、それらをビジュアル化して比較できます。
リンクでの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
は、各グループの値を集計して単一のグローバル・ロールアップを生成します。次にこれを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つの値を計算します:
合計は、最初に個別の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
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つ以上のプロパティを使用して実行できます。プロパティは、グループ・キーか、stats
やeval
によって生成された文字列値です。
グループ比較のためのパーセンテージの計算
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
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
コマンドとともに使用できます:
ファンクション | 説明 |
---|---|
|
行番号列を作成します |
|
指定されたフィールドの最初の値を取得します |
|
指定されたフィールドの最後の値を取得します |
|
指定された行の列値を取得します |
|
前の行の列値を取得します |
|
次の行の列値を取得します |
ファンクションの詳細は、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'
これにより、DatabaseのLabelごとに一意の行が作成されます。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 NumberはDatabaseごとにリセットされます。
データベース・クラッシュ・イベントが含まれる行の識別
ラベル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で定義されたフォーマットを使用して通貨単位を指定できます。その後、リンク表とチャートに適切な通貨記号が表示されます。
次の例では、フィールド「価格」の値を使用して、新しいフィールド「価格(USD)」、「価格(GBP)」、「価格(JPY)」、「価格(CNY)」および「価格(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
コマンドを使用して、このフィールドのトレンドを分析します。timestatsを参照してください。
基本的なlink
コマンドから開始します。
'Log Source' = 'OCI VCN Flow Unified Schema Logs' | link Action
これは、選択した期間に2つの異なる値があることを示しています。
前述の場合、一意のアクションごとに1つの行のみを使用できます。これは、デフォルトの動作では、指定されたフィールド別にグループ化されるためです。最初のステップでは、期間に基づいて各値に複数の行があることを確認します。これを行うには、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フロー統合スキーマ・ログは、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があることを示しています。
この表には、一意のパブリックIPごとに1行が含まれます。期間ごとに1行になるように分割する必要があります。これを行うには、link
コマンドに「時間」フィールドを追加します:
'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
のかわりに、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'
各行は、「ネットワーク転送」の値が似ている1つ以上のパブリックIP値を表します。
詳細を表示するには、任意のポイントにマウス・オーバーします。
timecluster
コマンドおよび時系列のクラスタリングの詳細は、timeclusterおよびtimeclusterコマンドを使用した時系列のグラフ化を参照してください。