保存済検索の問合せを自動的に実行するスケジュールの作成

保存済検索を作成した後、保存済検索の問合せを定期的に実行するようにスケジュールし、問合せの実行結果をモニタリング・サービスにルーティングできます。

スケジュール済タスクの詳細トピック:

次のステップは、スケジュール済タスクをモニターするためにモニタリング・サービスをターゲットとする方法を示しています。Oracle Logging Analyticsによって発行されるメトリックは、モニタリング・サービスによって格納されます。

  1. ナビゲーション・メニューを開き、「監視および管理」をクリックします。「ログ・アナリティクス」で、「管理」をクリックします。「管理の概要」ページが開きます。

    管理リソースが、左側のナビゲーション・ペインの「リソース」の下にリストされます。「検出ルール」をクリックします。

    「検出ルール」ページが開きます。「ルールの作成」をクリックします。

    「検出ルールの作成」ダイアログ・ボックスが開きます。

  2. 「スケジュール済検索の検出ルール」をクリックします。

  3. スケジュール済タスクのルール名を指定します。

  4. スケジュールを作成する保存検索を指定します。まず、保存済検索が保存されるコンパートメントを選択します。

    次に、メニューから「保存済検索」を選択します。

    クエリーとその説明などの保存済検索の詳細が表示されます。

  5. 問合せの実行結果が転送されるターゲット・サービス(モニタリングなど)を選択します。

    モニタリング・サービスは、スケジュールに基づいて問合せを実行した結果のメトリックを格納します。

  6. メトリック・コンパートメント(メトリックが作成されるコンパートメント)を選択します。コンパートメントは、デフォルトでOracle Logging Analyticsによって選択されます。

  7. メトリック・ネームスペース(新しいメトリックを配置するメトリック・ネームスペース)を選択します。ネームスペースの選択に使用できるオプションのスコープは、前のステップのメトリック・コンパートメントの選択によって定義されます。オプションを使用できない場合は、ネームスペースの新しい値を入力することもできます。

    ノート

    ネームスペースに新しい値を指定する場合は、oracle_およびoci_で始まるしない名前を選択します。これらは予約された接頭辞です。カスタム・メトリックの公開を参照してください。
  8. オプションで、リソース・グループ(メトリックが属するグループ)を選択します。リソース・グループは、カスタム・メトリックで提供されるカスタム文字列です。

  9. メトリック名(メトリックを表示するためにモニタリング・サービス・エクスプローラで使用されるメトリックの名前)を入力します。指定できるメトリックは1つのみです。

    メトリック・エクスプローラで簡単に識別できるように、保存済検索名をメトリック名に含めることをお薦めします(<mysavedsearchname><metric_name>など)。

  10. 間隔(集計ウィンドウ)を指定します。選択した時間またはで実行されるようにスケジュールを最適化できます。さらに、より広範囲の集計(など)を選択した場合、範囲内でより詳細な集計(問合せを実行する必要がある日の時間など)を指定できます。

  11. 必要なIAMポリシーがまだ定義されていない場合は、次を行うためのポリシーをリストした通知が表示されます:

    • 動的グループの作成
    • スケジュール済タスクの実行を許可するポリシーを動的グループに適用

    リストされたポリシーを書き留め、それらを作成します。

  12. 「検出ルールの作成」をクリックします。

    これで、問合せが一定間隔で実行されるようにスケジュールされ、結果のメトリックがモニタリング・サービスに発行されます。

  13. 「スケジュール済検索の検出ルール・リスト」ページで、スケジュール済検索の名前をクリックします。スケジュール済検索の詳細ページで、「メトリック・エクスプローラで表示」をクリックしてモニタリング・サービスのメトリックを表示します。

スケジュール済タスクに対するすべての操作の実行をユーザーに許可

スケジュール済タスクを作成するには、まず次のIAMポリシーを作成して適切な権限を設定します:

  1. 動的グループを作成して、スケジュール済タスクが特定のコンパートメントからモニタリング・サービスにメトリックを投稿できるようにします:

    ALL {resource.type='loganalyticsscheduledtask', resource.compartment.id='<compartment ocid>'}

    または、すべてのコンパートメントからメトリックをポストできるようにするには:

    ALL {resource.type='loganalyticsscheduledtask'}
  2. 動的グループがテナンシでスケジュール済タスク操作を実行できるようにするポリシーを作成します:

    allow group <group_name> to use loganalytics-scheduled-task in tenancy
    allow dynamic-group <dynamic_group_name> to use metrics in tenancy
    allow dynamic-group <dynamic_group_name> to read management-saved-search in tenancy
    allow dynamic-group <dynamic_group_name> to {LOG_ANALYTICS_QUERY_VIEW} in tenancy
    allow dynamic-group <dynamic_group_name> to {LOG_ANALYTICS_QUERYJOB_WORK_REQUEST_READ} in tenancy
    allow dynamic-group <dynamic_group_name> to READ loganalytics-log-group in tenancy
    allow dynamic-group <dynamic_group_name> to read compartments in tenancy

APIを使用したコンパートメントのすべてのスケジュール済タスクの表示

特定の保存済検索のスケジュール済タスクを表示するには、保存済検索の詳細ページにアクセスします。ただし、スケジュール済タスクが作成された保存済検索を参照せずに、特定のコンパートメント内のスケジュール済タスクをすべてリストする場合は、APIを使用してスケジュール済タスクのリストを問い合せます。ListScheduledTasksを参照してください。

GETコマンドで次のパラメータを指定します:

  • taskType=SAVED_SEARCH
  • compartmentId=<compartment_OCID>
  • limit=1000
  • sortOrder=DESC
  • sortBy=timeUpdated

コマンドを実行するには、次が必要です:

  • ネームスペース: スケジュール済タスクの作成時に指定したログ・アナリティクス・ネームスペース。
  • コンパートメントOCID: 作成されたスケジュール済タスクのリストを問い合せるコンパートメントのOCID。

保存済検索のスケジュール済タスクのモニター

「スケジュール済タスク実行ステータス」メトリックを使用して、保存済検索のスケジュール済タスクの状態をモニターできます。インフラストラクチャの異常によるタスクの実行の失敗またはスキップの場合、または依存リソースまたは構成が変更された場合、メトリックは、その修正に役立つ失敗の詳細を提供します。

スケジュール済タスク実行ステータス・メトリックにアクセスするステップは、サービス・メトリックを使用したログ・アナリティクスのモニターを参照してください。

保存済検索の各スケジュール済タスクには、そのタスク・スケジュールで指定された間隔があります。スケジュールされたタスクの実行ごとに、テナンシにメトリックが発行されます。チャートのデータ・ポイントの上にカーソルを置くと、タスクの詳細が表示されます。StatusDisplayNameまたはResourceIdのいずれかのディメンションに基づいてメトリック・データをフィルタする場合は、次のステップに従います:

  1. 「スケジュール済タスク実行ステータス」メトリックの右上隅にある「オプション」メニューをクリックし、「メトリック・エクスプローラでの問合せの表示」を選択します。

    これで、メトリックがメトリック・エクスプローラに表示されます。ここでは、チャートの詳細を表示できます。

  2. 「問合せの編集」をクリックして、メトリックのディメンション名およびディメンション値を選択します。taskResultに基づいて、スケジュール済タスクの実行結果、タスク実行のStatus、タスクのDisplayNamequeryExecTimeRangeまたはそのResourceIdに基づいてメトリック・データをフィルタできます。

    ノート

    ディメンション名とディメンション値を指定してメトリック・エクスプローラからチャートおよび表形式データを表示するには、カッコなどの特殊文字を含むフィールドを名前に使用しないでください。ディメンション名に対して選択したフィールドに特殊文字がある場合は、evalコマンドを使用して仮想フィールドを作成するか、renameコマンドを使用して既存のフィールドの名前を変更し、カッコまたは特殊文字を削除してください。たとえば、ディメンション名に使用されるフィールドがHost Name (Server)の場合、| eval hostname=“Host Name (Server)”を使用して仮想フィールドhostnameを作成できます。

    ディメンションqueryExecTimeRangeは、スケジュール済タスク問合せの実行にかかった時間の決定に役立ちます。使用可能な値は、< 5s>= 5s and < 10s>= 10s and < 30sおよび> 30sです。通常、実行に30秒以上かかる問合せは、実行時間の点で高コストとみなされます。How to Make Your Queries Performantを参照してください。

    ディメンションtaskResultには、SucceededFailedおよびPausedの値を指定できます。ディメンションStatusは、taskResultの詳細を提供します。たとえば、taskResultの値がPausedの場合、Status値はPaused by Userです。

    「チャートの更新」をクリックして、クラスタ・ビジュアライゼーションをリフレッシュします。これで、フィルタを適用したデータ・ポイントのみがチャートに表示されます。

    収集されたデータ・ポイントの表形式表現のために、「データ表」ビューに切り替えることができます。

  3. ディメンション名を変更して、チャート内の様々なパースペクティブを表示します。

アラートを設定して、電子メール、SMS、Slack、PagerDuty、HTTPSエンドポイントURLまたはファンクションを使用してステータスを通知できます。Create Alerts for Detected Eventsを参照してください。

次に、特定のtaskResult値についてこのメトリックを介してレポートされるstatusディメンションの様々な値を示します:

taskResult Status 説明 推奨される修正

Succeeded

Succeeded

タスクの実行は正常です

NA

SucceededPostingDataTruncated

スケジュール済タスクの実行は成功しましたが、メトリック・データの制限のため、モニタリング・サービスへのメトリックの転記が切り捨てられました。

メトリックが指定の制限内に残っていることを確認します。OCI CLIコマンド・リファレンス- モニタリング・サービス・メトリック・データを参照してください。

SucceededNoDataFound

スケジュール済タスクの実行に成功したが、問合せで結果が返されなかった場合。そのため、モニタリング・サービスにポストされるメトリック・データはありません。

保存済の検索問合せを確認してください。

また、このステータスはエラーを示さない場合があります。問合せが書き込まれたイベントが発生していないことが示されるだけです。たとえば、問合せが過去5分間のログ内のエラーの数をカウントし、過去5分間に到着したログにエラーがない場合は、SucceededNoDataFoundが表示されます。

SucceededPartialResults

2分以上かかる高価な問合せ、またはインフラストラクチャの異常による部分的な結果。

ステータス情報でOracle Supportに連絡してください。

PartialResultsNoDataFound

2分以上かかる高価な問合せ、またはインフラストラクチャの異常による部分的な結果。

「ステータス」情報でOracle Supportに連絡してください。

Failed

Skipped

インフラストラクチャの異常またはリカバリ可能な障害のため、タスクの実行に失敗しました。

「ステータス」情報でOracle Supportに連絡してください。

Paused

InvalidManagementSavedSearch

保存検索の問合せ文字列またはスコープ・フィルタが無効です。

スケジュール済タスクの作成後に保存済検索が編集されたかどうかを確認し、修正します。

NotAuthorizedOrNotFoundManagementSavedSearch

保存済検索が削除されるか、保存済検索のREAD権限を提供するIAMポリシーが変更されました。

IAMポリシーがリストアされていることを確認します。

InvalidQuery

保存済検索問合せはメトリックの生成に対して無効です。

スケジュール済タスクの作成後に保存済検索が編集されたかどうかを確認し、修正します。

NotAuthorizedOrNotFoundPurgeResource

スケジュール済タスクがログ・データをパージするためのものであり、パージ・コンパートメントが削除された場合、またはスケジュール済タスクの作成後にパージのIAMポリシーが変更された場合、このステータスが表示されます。

パージ・コンパートメントが削除されているかどうかを確認し、リストアします。

IAMポリシーがリストアされていることを確認します。

MetricExtractionNotValid

次の2つの理由のいずれかでステータスをトリガーできます。

  • スケジュール済タスクに指定されたメトリック詳細が不完全または無効です。
  • メトリック結果セットが無効です。つまり、メトリック列が数値でないか、ディメンション値がカーディナルではありません。

メトリック詳細が不完全または無効な場合は、スケジュール済タスク定義のメトリック詳細を更新します。

メトリック列が数値でないか、ディメンション値がカーディナルでない場合は、保存済検索を更新して、有効なメトリックおよびディメンションを生成します。

PausedByUser

taskResultの値がPausedの場合、このStatusの値はスケジュール済タスクの実行を示すものではありません。これは、スケジュールされたタスクを一時停止したコンソールまたはAPIを介したユーザー・アクションを示します。

スケジュール済タスクの実行を一時停止したユーザー処理を識別し、スケジュール済タスクを実行します。

スケジュール済タスクを作成するための重要な要素

スケジュール済タスクを作成するための次の要因をノートにとります。

  • 問合せの作成要件:

    スケジュール済みタスクを作成するクエリーを作成する場合は、次の要件に準拠するようにしてください。

    • 検出ルール問合せに関する次の制限に注意してください:
      • スケジュール済タスク問合せの「元のログ・コンテンツ」フィールドでワイルドカード検索を実行しないようにします。ワイルドカード検索の詳細は、「キーワード、フレーズおよびワイルドカードの使用」を参照してください。

      • timestatsコマンドの後にevalextractjsonextractxmlextractおよびlookupを指定することはできません。

      • コマンドregexは、Messageのような大きいフィールドで使用して、問合せの処理にコストがかかることを回避しないでください。

        like比較およびextractjsonextractxmlextractコマンドは、Messageなどのラージ・フィールドではサポートされていません。

        BY句で使用されるリンク・フィールドまたはフィールドは、Messageなどのラージ・フィールドでは使用できません。

      • The commands which are not supported in the queries for scheduled tasks are addfields, cluster, clustercompare, clusterdetails, clustersplit, compare, createview, delta, eventstats, fieldsummary, highlightgroups, geostats, linkdetails, map, nlp and timecompare.

    • 最大限度:

      by句でサポートされるフィールドの最大数は3です。

      timestatsコマンドでサポートされるフィールドの最大数は3です。

      スケジュール済タスク問合せでサポートされる集計関数の最大数は1です。

    • メトリックをポストするためのディメンションとしてlinkフィールドの値を使用します:

      モニタリング・サービスに転記するディメンション・フィールドおよび数値メトリックを3つまで選択します。モニタリングにポストする必要があるフィールドを指定するには、問合せの最後に次の文字を使用する必要があります。

      ... | link ... | fields -*, dim1, dim2, dim2, metric1

      linkコマンドには、デフォルトで、開始時間、終了時間、カウントなど、出力に複数の列があります。fieldsコマンドで-*を使用して、これらのフィールドを削除し、オプションで最大3つのディメンション・フィールドと1つの必須メトリック・フィールドを指定します。

      statsコマンドの後に複数のeval文を、中間結果を計算するために複数のstats関数を持つことができます。ただし、問合せは、ポストする必要があるディメンションおよびメトリックを示すfields -*, dim1, dim2, dim2, metric1で終わる必要があります。検出ルール問合せには、次のガイドラインを使用します。

      • 最大2個のaddfieldsコマンドを使用します。
      • 最大3個のstats関数を使用します。
      • 中間結果と最終結果を計算するには、eval文が必要です。

      問合せの例:

      'Log Source' = 'OCI Email Delivery'
       | link 'Entity'
       | addfields [ * | where deliveryEventType = r and bounceType = hard | stats count as 'hard bounces' ],
                   [ * | where deliveryEventType = e and length(ipPoolName) > 0 | stats count as 'total sent messages' ]
       | eval 'Total Rate' = ('hard bounces' / 'total sent messages') * 100
       | fields -*, 'Entity', 'Total Rate'
      'Log Source' = 'My Network Logs'
       | stats sum(Success) as TotalSuccess, sum(Failure) as TotalFailure
       | eval SuccessRate = (TotalSuccess / (TotalSuccess + TotalFailure)) * 100 | fields -*, SuccessRate
  • ログの遅延到着:

    スケジュールされたタスクがログの到着前に実行された場合、スケジュールされたタスクでは期待どおりの結果が返されないことがあります。到着が遅れたためにスケジュール済タスクでこのようなログが欠落しないようにするには、問合せで時間範囲への調整を使用してそのログを考慮する必要があります。

    たとえば、スケジュール済タスクが5分ごとに実行されて認証エラーの数がチェックされ、ログが生成されてからOracle Logging Analyticsに到達するまでの間に3分の遅延がある場合、スケジュール済タスクはログを検出しません。スケジュール済タスクが5分ごとに、たとえば01:00、01:05、01:10などに実行されるとします。01:04に生成されたログ・レコードL1が、Oracle Logging Analyticsの01:07に達した場合。ログがOracle Logging Analyticsに現時点で到着しなかったため、1:05に実行されたスケジュール済タスクでL1が検出されません。01:10での次の実行中、問合せでは、タイムスタンプが01:05から01:10の間のログが検索されます。このサイクルでも、タイムスタンプが01:04であるため、L1は検出されません。次の問合せでは、ログが遅れて到着した場合、すべてのログ・レコードが表示されない場合があります。

    Label = 'Authentication Error' | stats count as logrecords by 'Log Source'

    Oracle Logging Analyticsへのログの到着の遅延を確認するには、ログ・レコードに記載されているタイムスタンプとログ・プロセッサの転記時間の差を計算します。次の問合せの例を使用すると、遅延があるかどうかを確認できます。

    Label = 'Authentication Error' and 'Log Processor Posting Time (OMC INT)' != null | fields 'Agent Collection Time (OMC INT)', 'Data Services Load Time', 'Process Time', 'Log Processor Posting Time (OMC INT)'

    次の問合せでは、dateRelative関数を使用して、5分間隔で実行されるタスクの3分遅延を調整します。

    Label = 'Authentication Error' and Time between dateRelative(8minute, minute) and dateRelative(3minute, minute) | stats count as logrecords by 'Log Source'
  • その他の要因:

    • 問合せがモニタリング・サービスにどのように組み込まれるかを理解するには、Oracle Cloud Infrastructureドキュメントメトリック問合せの作成を参照してください。

    • メトリック・データをモニタリング・サービスに公開するための制限情報に注意してください。制限は、1つのスケジュール済タスクのメトリックに対応しています。Oracle Cloud InfrastructureドキュメントPostMetricData APIを参照してください。

      保存済検索で50フィールドで一意を超える値を生成できる場合、モニタリング・サービスによって課せられた制限のために部分的な結果が投稿されます。このような場合、topまたは bottom 50の結果を表示するには、sortコマンドを使用します。

スケジュール済タスクの問合せの例

メトリックを表示する問合せの例

  • スケジュールされた実行の認証エラーの数を5分ごとに把握する例を考えてみます。

    Label = 'Authentication Error' | stats count as 'Number of Authentication Errors'

    ログ・エクスプローラでサマリー表ビジュアライゼーションを選択すると、次の出力が表示されます:


    問合せのログ・エクスプローラ出力

    スケジュール済タスクで前述のようなメトリックが実行されるたびに、同じものがモニタリング・サービスにポストされます。

    メトリック・エクスプローラから、前述の投稿されたメトリックは次のように表示できます:


    スケジュール済タスクのメトリック出力

    メトリックを表形式で表示するには、「データ表の表示」をクリックします:


    スケジュール済タスクのメトリック出力の表形式

  • 各ホストの認証エラーの内訳を知りたい場合:

    Label = 'Authentication Error' | stats count as 'Number of Authentication Errors' by 'Host IP Address (Client)'

    サマリー・ビジュアライゼーションを使用して、問合せのメトリック出力をプレビューします。


    要約ビジュアライゼーションでの問合せの出力

    「メトリック・エクスプローラ」ページから、「ホストIP別」チャートと同じメトリックは次のようになります:


    ホストIP別のメトリックの出力

    ホストIP当たりの数を表示するには、メトリック・ディメンション名をHost_IP_Address_Clientとして指定し、「メトリック・ストリームの集計」チェック・ボックスの選択を解除します:


    メトリック・ディメンション名を選択するダイアログ・ボックス

クエリーを実行可能にする方法

一部の問合せは、実行時間が長くなるか、場合によってはタイムアウトになり、最終的には自分のタスクの実行が遅延します。このような場合は、拡張フィールド(EFD)またはラベルを作成し、スケジュールされたクエリーのフィルターでそれらを使用してクエリーの費用を削減することをお薦めします。

たとえば、データベース・アラート・ログの接続タイムアウト数を5分ごとにポストする場合、次の問合せはそれを実行する方法の1つです。

'Log Source' = 'Database Alert Logs' and 'TNS-12535' | stats count as 'Number of Timeouts'

前述の問合せでは、「元のログ・コンテンツ」で文字列TNS-12535が検索されます。ただし、特にタスクが数百万のレコードからスキャンして5分ごとに実行されるようにスケジュールされている場合、これはタイムアウトを検索する最も効率的な方法ではありません。

かわりに、このようなエラーIDが抽出されるフィールドを使用し、次に示すように問合せを構成します。

'Log Source' = 'Database Alert Logs' and 'Error ID' = 'TNS-12535' | stats count as 'Number of Timeouts'

または、次のラベルを使用してフィルタできます。

'Log Source' = 'Database Alert Logs' and Label = Timeout | stats count as 'Number of Timeouts'

Oracle定義のログ・ソースには、多くのEFDおよびラベルが定義されています。カスタム・ログの場合は、独自のラベルおよびEFDを定義し、「元のログ・コンテンツ」で検索するかわりに、スケジュールされた問合せで使用することをお薦めします。ラベルの作成およびソースでの拡張フィールドの使用を参照してください。