問合せ検索

Oracle Logging Analyticsでは、読みやすくナビゲートしやすいカスタマイズ可能な単一の統合表示を使用して、エンタープライズ・データベース全体の大規模なログ・データをフィルタして分析できます。組込みの検索機能を使用すると、使用可能なすべてのログ・データがフィルタされ、特定のログ・エントリが返されます。

Oracle Logging Analytics検索では、特定のログ・エントリにドリルダウンできるため、集中的な分析や、エンタープライズ全体のモニタリングが可能になります。Oracle Logging Analyticsの問合せ言語を使用して、検索問合せを作成し、トラブルシューティングしている問題に関連するログ・エントリを取得します。

ログを分析するための問合せ言語により、検索結果に対して実行するアクションを指定できます。コマンドには、検索コマンドと統計コマンドがあります。検索コマンドは、使用可能なログ・エントリをさらにフィルタするコマンドです。統計コマンドは、検索結果に対して統計演算を実行します。コマンドの完全なリスト、その構文、およびそれらを使用するための例については、コマンドリファレンスを参照してください。

Oracleロギング・アナリティクス問合せ言語では次の処理が可能です:

  • 使用可能なすべてのログ・データのフィルタおよび探索

  • 根本原因分析の実行

  • 選択したエンティティに対する統計分析の実行

  • レポートの生成

  • 後で使用するための検索問合せの保存

  • ダッシュボードを構築するための保存済検索の取得

検索問合せを構成するには、要素を「フィールド」パネルから「ビジュアル化」列の適切なセクションにドラッグ・アンド・ドロップするか、「検索」フィールドに問合せを直接入力します。ユーザー・インタフェースを使用して問合せを構成する方法の詳細は、ログ・アナリティクスUIを使用した問合せの構成を参照してください。

regexコマンドを使用してパフォーマンスの高い問合せを記述する場合は、RE2J構文(RE2のJava実装)を参照してください。

問合せヘルプ・ウィザードの使用

ログ・アナリティクスでは、問合せの記述をすばやく学習するためのアクティブなヘルプが提供され、高度な分析のための問合せの例も多数用意されています。

ログ・エクスプローラで問合せバーの隣にあるヘルプ・アイコン「問合せヘルプ」アイコンをクリックして、問合せヘルプ・ウィザードを開きます。数分で、作成できるクエリーの形式と構文を理解できます。非常に基本的な検索から高度な分析までの問合せ例を実行し、問合せ参照について理解します。ウィザードには、検索を効率的にするためのヒントとショートカットが用意されています。一般的なユースケースで共通コマンドを実行した結果を表示することもできます。

キーワードおよびフレーズを使用したログの検索

コマンドを使用して、ログ・データを取得したり、そのデータに対して操作を実行したりできます。問合せの最初の(暗黙的な)コマンドは、searchコマンドです。検索は、パイプ文字(|)で区切られた一連のコマンドです。パイプ文字に続く最初の空白文字列で、使用されるコマンドが識別されます。パイプ文字は、前のコマンドの結果が次のコマンドの入力として使用されることを示します。

たとえば、次の論理式をOracle Logging Analyticsの「検索」バーに入力します:

Severity = 'error' AND 'Entity Type' = 'Database Instance'

単語を引用符で囲み、フレーズとして問合せ文字列に含めることで(‘Database Instance’など)、フレーズ‘Database Instance’を含むログのみが返されます。また、キーワード検索で、部分文字列が個別のディレクティブと解釈される可能性がある場合は、引用符で囲んで特定する必要があります。たとえば、文字列andを検索するには、システムがブールの意味で使用しないように、一重引用符内に文字列を入力(‘and’)する必要があります。

問合せ言語を使用してログを検索する他の例および詳細は、検索問合せの記述を参照してください。

最近の検索のリスト

Oracle Logging Analyticsでは、最近使用した検索を選択して実行できます。「検索」フィールドをクリックするか、「検索」フィールドにテキストを入力すると、Oracle Logging Analyticsに最近使用した検索のリストが表示されます。これにより、最近使用した検索コマンドに迅速にアクセスできます。リストされているコマンドのいずれかを選択して「実行」をクリックすると、選択した検索コマンドを実行できます。

ノート

最近使用したリストは、セッション単位ベースで使用できます。そのため、Oracle Logging Analyticsをサインアウトしてから再びサインインすると、前のセッションのリストは表示されません。最近の検索の新しいリストがそのセッション用に作成されます。

自動提案機能の使用

「検索」フィールドに問合せを入力すると、Oracle Logging Analyticsの自動提案機能によって、問合せで使用できる用語が自動的に提案されます。Oracle Logging Analyticsには、「検索」フィールドに入力したテキストに基づいて、提案のリストが表示されます。たとえば、フィールドや検索アクションの名前を入力した場合、自動提案機能によって、そのフィールドまたは使用可能なアクションのリストにのみ指定可能な値が表示されます。

検索問合せの記述

Oracle Logging Analyticsの検索問合せを作成するには、エンティティ、キーワード、フレーズ、ワイルドカード、比較演算子、ブール式、ファンクションおよび時間を指定できます。

Oracle Logging Analyticsの検索機能を使用するには、検索問合せを作成して、それを「検索」フィールドに入力します。

ログ・アナリティクスUIの使用

Oracle Logging Analyticsユーザー・インタフェースによって、検索問合せを構成できます。

UIの次の要素を使用して、検索問合せを構成できます:

  • 検索バー: 検索問合せがここに表示されます。このフィールドのテキストを直接編集して、検索結果を絞り込むことができます。

    検索バーは、問合せに追加された行数に基づいて拡大または縮小します。最大で21行、最小で1行を設定できます。使用可能なカスタム・ショートカットの一部は次のとおりです:

    • [Ctrl] + [i]: エディタに存在するテキストのすべての行をインデントします。大文字の[I]ではデバッガが開くことに注意してください。
    • [Ctrl] + [Enter]: エディタに表示されている問合せを実行します
    • [Ctrl] + [Space]: カーソルの位置に基づいてオプションのオートコンプリート・リストを表示します
    • [Ctrl] + [Z]: 最後の編集を元に戻します
    • [Ctrl] + [Y]: 最後の編集を再実行します
    • [Ctrl] + [D]: 現在の行を削除します

    ノート: 指定がないかぎり[SHIFT]キーは使用しないでください

    開始カッコまたは終了カッコにカーソルを置くと、一致する要素が強調表示されます。強調表示できる要素は、( )および[ ]です。

    検索バーでは、色付きとグレースケールの2つの異なるテーマがサポートされます。ヘルプ・ポップアップのオプションを変更して、テーマを動的に変更できます。

  • フィールド: 「フィールド」パネルは次のセクションに分かれています:

    • 「固定」の属性では、次に基づいてログ・データをフィルタできます:

      • ログ・ソース(データベース・ログやOracle WebLogic Serverログなど)。

      • ログ・エンティティ(実際のログ・ファイル名)。

      • ラベル(ログ・エントリが特定の定義済条件と一致するときにログ・エントリに追加されるタグ)。

      • オンデマンドでアップロードされたログ・データのアップロード名。

      デフォルトでは、エンティティおよび収集の詳細は、フィルタ用として「フィールド」パネルの「固定」バケットで使用できます。使用状況に応じて、「固定」バケットに追加フィールドを固定できます。固定されると、フィールドは「固定」バケットに移動されます。任意のフィールドの固定を解除し、「固定」バケットから削除して、「関心」または「その他」バケットに戻すことができます。

    • 検索および問合せに基づいて、Oracle Log Analyticsでは、迅速に参照できるようにフィールドが「関心」バケットに自動的に追加されます。「関心」バケットの使用可能なフィールドを固定できます。固定されたフィールドは、「固定」バケットに移動されます。

    • 「その他」バケットの任意のフィールドを固定して、「固定」バケットに移動できます。検索または問合せで「その他」バケットのフィールドを使用すると、それは「関心」バケットに移動されます。

      選択したオプションは、検索バーの問合せに自動的に追加されます。

  • ビジュアル化: このペインでは、検索結果の表示方法を選択できます。「グループ化基準」フィールドで、結果をグループ化するためのメトリックを決定できます。

  • 保存: このボタンを使用して、後で実行するために、現在「検索」フィールドにある検索問合せを保存します。

  • 開く: このボタンを使用して、前に保存した検索問合せを表示します。これらの問合せを実行して最新の結果を取得したり、これらの問合せを使用してダッシュボードを作成したりできます。

  • 新規: このボタンを使用して、新しい検索問合せを開始します。

  • エクスポート: このボタンを使用して、現在の検索問合せの結果をComma Separated Values(CSV)またはJavaScript Object Notation(JSON)形式のファイルでエクスポートします。

  • 実行: このボタンを使用して、現在「検索」フィールドにある問合せを実行します。

  • 時間セレクタ: 時間セレクタを使用して、期間を指定します。

  • ビジュアライゼーション・ペイン: 検索問合せの結果がこのペインに表示されます。「検索」フィールドの問合せが実行されると、このペインにフィルタされた情報がロードされます。ビジュアライゼーション・ペインのチャートの任意の領域をクリックすると、検索問合せにドリルダウンしてそれを更新できます。

キーワード、フレーズおよびワイルドカードの使用

文字列問合せには、キーワードとフレーズを含めることができます。キーワードは単一の単語(databaseなど)で、フレーズは一重(‘ ‘)または二重(“ “)引用符で囲まれた複数の単語(‘database connection’など)を示しています。キーワードまたはフレーズを問合せに指定すると、問合せの実行後、指定したキーワードまたはフレーズを含むすべてのログ・エントリが返されます。

Oracle Logging Analytics検索言語では特殊なパターン・マッピングもサポートされます。つまり、アスタリスク(*)、疑問符(?)、パーセント記号(%)などのワイルドカード文字を使用してキーワードを指定できます。

次の表は、サポートされるワイルドカード文字のリストとそれぞれの簡単な説明を示しています。

ワイルドカード文字 説明

?

この文字を使用すると、可能性のあるキーワードに対して正確に1個の文字が一致します。たとえば、host?と入力した場合、キーワードhost1は一致とみなされますが、host.foo.barは一致とみなされません。

*または%

これらの文字のいずれかを使用すると、可能性のあるキーワードに対して0個以上の文字が一致します。たとえば、host*またはhost%と入力した場合、host1およびhost.foo.barはキーワードの一致とみなされます。同様に、%host%と入力した場合、ahostbおよびmyhostは指定したキーワードの一致とみなされます。

複数のキーワードを指定できます。たとえば、databaseconnectionです。databaseconnectionという単語(連続している必要はない)を含むログが返されます。ただし、これらの単語は、連続して出現している必要はありません。ただし、単語を引用符で囲み、フレーズとして問合せ文字列に含めることで(‘database connection’など)、‘database connection’というフレーズを含むログのみが返されます。複数のキーワードの使用方法は、ブール式の使用を参照してください。

キーワードまたはフレーズを指定する場合、次に注意してください:

  • キーワードおよびフレーズ文字列では、大/小文字が区別されません。

  • キーワードを引用符で囲まない場合は、英数字、アンダースコア(_)およびワイルドカード文字(*%および?)のみを含める必要があります。

  • キーワード検索で、部分文字列が個別のディレクティブと解釈される可能性がある場合は、引用符で囲んで特定する必要があります。たとえば、文字列andを検索するには、システムがブールの意味で使用しないように、一重引用符内にそれを入力(‘and’)する必要があります。

ノート

messageフィールドでワイルドカードを使用するには、LIKEまたはLIKE INも使用する必要があります。次に、messageでワイルドカードを使用する例を示します。
ORA-* AND message LIKE 'connection* error*'
ORA-* AND message LIKE IN ('tablesp*','connection* error*')

比較演算子の使用

比較演算子は、フィールドとその値の関係を立証するために指定する条件です。値がないフィールドは、nullとみなされます。

次の表は、サポートされる比較演算子のリストとそれぞれの簡単な説明を示しています。

比較演算子 説明
< 問合せでこの演算子を使用すると、対応するフィールドの値が指定した値より小さいすべてのログ・エントリが返されます。
<= 問合せでこの演算子を使用すると、対応するフィールドの値が指定した値以下のすべてのログ・エントリが返されます。
> 問合せでこの演算子を使用すると、対応するフィールドの値が指定した値より大きいすべてのログ・エントリが返されます。
>= 問合せでこの演算子を使用すると、対応するフィールドの値が指定した値以上のすべてのログ・エントリが返されます。
= 問合せでこの演算子を指定すると、対応するフィールドの値が指定した値に等しいすべてのログ・エントリが返されます。
!= 問合せでこの演算子を指定すると、対応するフィールドの値が指定した値に等しくないすべてのログ・エントリが返されます。

これらの演算子を使用して、特定の値を持つフィールドを含むログを検索します。たとえば、Severity=’ERROR’と指定すると、使用可能なログのうち、フィールドSeverityの値がERRORであるものが検索されます。同様に、Severity!=NULLでは、Severityフィールドの値がnullではない(つまり、重大度が指定されている)すべてのログが返されます。

ノート

比較演算子の右側の値が数値またはNULL以外の場合、引用符で囲む必要があります。

ブール式の使用

Oracle Logging Analyticsの検索機能には、標準の規則に基づくLIKEおよびREGEXの機能があります。ブール式は、trueまたはfalseの値を持つことができます。

次の表は、サポートされるブール式のリストとそれぞれの簡単な説明を示しています。

ブール式 説明
AND この式を使用して、指定したパラメータの両方を含むログのみを表示します。
NOT INまたはIN この式を使用して、使用可能なデータの指定したサブセットに含まれるデータを検索します。たとえば、‘Entity Type’ IN (‘Database Instance’,‘Automatic Storage Management’,’Listener’,’Cluster’)では、最初に‘Database Instance’‘Automatic Storage’ListenerまたはClusterを含むログのみが考慮され、次に‘Entity Type’を含むログが識別されます。ただし、NOT INを使用する場合、指定したエントリが除外され、指定したキーワードまたはフレーズを含むログ・エントリが返されます。たとえば、‘Entity Type’ NOT IN (‘Database Instance’,’Automatic Storage Management’,’Listener’,’Cluster’)では、最初に‘Database Instance’‘Automatic Storage Management’ListenerおよびClusterを含むログ・エントリが除外され、次に‘Target Type’の値が指定した値のいずれでもないログ・エントリが返されます。

予約語のNULLは、このブール演算子でサポートされます。

NOT LIKEまたはLIKE この式を使用して、指定した文字パターンと一致するデータ、または一致しないデータを検索します。文字パターンは、1個以上のワイルドカード文字を使用できる文字列です。
NOT LIKE INまたはLIKE IN [NOT] INと同様に、この式では、複数のLIKE句をまとめて表す短縮表記を使用できます。
OR これを使用して、指定したパラメータの一方を含むログを表示します。

Oracleログ・アナリティクス検索言語では、ブール式を他のブール式にネストできます。たとえば、次の問合せについて考えます:

fatal ('order' OR host LIKE '*.oracle.com')

この問合せを実行すると、fatalを含み、キーワードorderを含んでいるか、名前が.oracle.comで終わっているホストからのすべてのログが返されます。

ログ・アナリティクスUIを使用した問合せの構成

Oracle Logging Analyticsユーザー・インタフェースを使用して、検索問合せを構成できます。

デフォルトで、* | stats count by ‘log source’という問合せが「検索」フィールドに指定されます。

特定のエンティティのデータを表示するには、次のステップを完了します:

  1. ナビゲーション・メニューを開き、「監視および管理」をクリックします。「Logging Analytics」で、「Log Explorer」をクリックします。

  2. 「フィールド」パネルの見出しの「エンティティ」で、エンティティの表示方法に応じて「エンティティ」または「エンティティ・タイプ」を選択します。これにより、選択した内容に基づいて登録済データベースがグループ化されます。たとえば、「エンティティ・タイプ」を選択すると、選択したエンティティがそのタイプに基づいてグループ化されます。

  3. データを表示する「エンティティ」または「エンティティ・タイプ」を選択します。

  4. 「送信」をクリックします。

    選択したエンティティの横に「クリア」ボタンが表示され、データがビジュアライゼーション・ペインに表示されます。

特定のフィールドのデータを表示するには、次のステップを完了します:

  1. フィールドのタイプを「フィールド」パネルの「固定」属性、「関心」バケットまたは「その他」バケットの下で選択します。

  2. データを表示する「ラベル」「ログ・エンティティ」「ログ・ソース」「所有者」または「アップロード名」を選択します。複数の「ラベル」「ログ・エンティティ」「ログ・ソース」「所有者」または「アップロード名」を選択できます。

  3. 「送信」をクリックします。

    フィールドのデータがビジュアライゼーション・ペインにロードされます。

問合せでの時間範囲の指定

通常、ログ・エクスプローラで選択した時間範囲は問合せ文字列に含まれません。問合せで時間範囲を指定するには、searchコマンドの「絶対時間」または「相対時間」修飾子を使用します。

ノート

保存済検索の場合、保存済検索の作成中にログ・エクスプローラで選択された時間範囲は、保存済検索コンポーネントの1つとして格納されます。保存検索を使用すると、ログ・エクスプローラで時間範囲セレクタを使用して時間を編集できます。

一方、問合せで時間範囲が指定されている場合、ログ・エクスプローラで選択された時間範囲は無視されます。問合せに含まれる時間範囲は、ログ分析に使用されます。この問合せを保存済検索として保存すると、問合せで指定された時間範囲は、ログ・エクスプローラで指定された時間ではなく、保存済検索タスクで考慮されます。

問合せで時間範囲を指定できる例を次に示します。

  • 過去24時間に検出されたすべてのORA-600エラー・ログを返します:

    Message like 'ORA-600%' and time > dateRelative(24h)
  • 過去90日間のホスト・ターゲットmyHostのログ数を返します:

    'Host Name (Server)' = myHost and Time > dateRelative(90day) | stats count as 'Num Host Logs'

searchコマンドで使用できる時間ベースの関数

次の時間ベースの関数は、searchコマンドでのみ使用できます。

  • toDate: これは、2014-07-15T16:24:51.000Z'2014-07-12', 'yyyy-MM-dd'などの絶対時間です。

    toDate構文: toDate(<time>)

  • dateRelative: 現在の日付を基準とした日付(12h2d, dayなど)を作成します。

    dateRelative構文: dateRelative(<timespan>, <rounding interval>)。丸めはUTC時間に基づきます。

  • dateadd: 指定した日付に単位時間を追加します。たとえば、Day, 2toDate('2024-05-12', 'yyyy-MM-dd')に追加します

    dateadd構文: dateadd(<date>, <unit>, <amount>)

  • dateset: 日付を時間単位で変更します。たとえば、year, 2014, month, 7で変更されたtoDate('2015-08-12', 'yyyy-MM-dd')

    dateset構文: dateset(<date>, <unit>, <value> [, <unit>,<value>])

時間基準は、比較演算子=!=<<=>>=および論理演算子andを使用して表すことができます。

サポートされている時間単位

  • All Time

    同等のJSONの例: "timeFilter": { "type" : "relative", "timeUnit" : "allTime" }

  • 第2: s、秒、秒

  • : m、分、分

    例: Last 60 minutes

    同等のJSONの例: "timeFilter": { "type" : "relative", "duration" : "60", "timeUnit" : "minutes" }

  • 時間: h、時間、時間、時間

  • : d、日、日

  • : 週、週

  • : 月、月

  • : y、yr、yrs、year、year

JSON形式の絶対日付の例は、"timeFilter": { "type" : "absolute", "startTime" : "2015-04-26T08:00:00.000Z", "endTime" : "2015-04-27T08:00:00.000Z" }です。

問合せの時間範囲の例

次の問合せでは、ISO標準書式で指定された2つの絶対日付の間のすべてを検索します。

time between '2014-07-15T16:24:51.000Z' and '2014-07-17T18:14:16.000Z'

ISO 8601: DATE AND TIME FORMATを参照してください。

次の問合せでは、ISO標準書式ではない2つの絶対日付に基づいてすべてを検索します。

time between toDate('2014-07-12', 'yyyy-MM-dd') and toDate('2014-07-15', 'yyyy-MM-dd')

次の問合せでは、過去12時間(between式の左側の*new Date(0)を表し、右側の*now)を除くすべてのものが検索されます。

time between * AND dateRelative(12h)

次の問合せでは、過去12時間のすべてを検索します。

time > dateRelative(12h)

次の問合せでは、過去30分間の端数が1時間の最初から始まるすべてのものが検索されます。

time > dateRelative(30min, hour)

次の問合せでは、2014年7月12日より前の日付のレコードが検索されます。

time < dateAdd(toDate('2014-07-22', 'yyyy-MM-dd'), day, -10)

次の問合せでは、2010年6月10日より後の日付のレコードが検索されます。

time > dateSet(toDate('2015-08-10', 'yyyy-MM-dd'), year, 2010, month, 6)

副問合せの記述

副問合せによって、子問合せは、親問合せに動的フィルタを提供できます。副問合せは最初に評価され、その結果が親問合せで使用されます。

  • 副問合せを相互にネストしたり、同じレベルで複数の副問合せを持つ特定の問合せをネストしたりできます。
  • デフォルトでは、副問合せはグローバル時間範囲を継承しますが、必要に応じてtime between T1 and T2構文を使用してオーバーライドできます。
  • 副問合せは、最初の2000個の一致のみが親への入力として返されるように制限されています。その他の結果は切り捨てられます。
  • 完了までの最大タイムアウトは30秒です。
  • 副問合せから返されるすべてのフィールドは、親問合せのフィールドと名前が一致している必要があります。それ以外の場合はエラーになります。
  • 副問合せは、検索コマンド内でのみ使用できます。
  • 副問合せ内では、clusterclustersplitclustercomparefieldsummarydeleteclassifyhighlightおよびhighlightrowsを除くすべてのコマンドを使用できます。

:

  • 時系列でIPブラックリストからのトラフィックをチャート化:
    [searchlookup table=ip_blacklist | distinct ip | rename ip as 'host address'] | timestats count
  • E-Commerceサイトの上位ユーザーに最も購入された製品をリスト:
    'Log Source'='WLS Access Logs' status=200 action=purchase ['Log Source'='WLS Access Logs' status=200 action=purchase | stats count by 'Host (Client Address)' | top limit=1 'Host(Client Address)' | fields -*, 'Host (Client Address)'] | lookup table=products select 'product name' using productid | stats count, distinctcount(productId), unique('product name') by 'Host (Client Address)'
  • 合計が最大の上位4つのOSプロセスIDを検索:
    [ *|stats sum('OS Process ID') as OSprocessidSum by 'OS Process ID' | top 4 OSprocessidSum | fields -OSprocessidSum ] | stats count by 'OS Process ID', 'Log Source', 'Host Name(Server)'
  • 最も致命的な重大度のログを持つターゲットからのすべてのログを表示:
    * and [ Severity = fatal | stats count by Target | top limit = 1 Count | fields -Count]