保存済検索の問合せを自動的に実行するスケジュールの作成
保存済検索を作成した後、保存済検索の問合せを定期的に実行するようにスケジュールし、問合せの実行結果をモニタリング・サービスにルーティングできます。
スケジュール済タスクの詳細トピック:
次のステップは、スケジュール済タスクをモニターするためにモニタリング・サービスをターゲットとする方法を示しています。Oracle Log Analyticsによって発行されるメトリックは、モニタリング・サービスによって格納されます。
-
ナビゲーション・メニューを開き、「監視および管理」をクリックします。「Log Analytics」で、「管理」をクリックします。「管理の概要」ページが開きます。
管理リソースが、左側のナビゲーション・ペインの「リソース」の下にリストされます。「検出ルール」をクリックします。
「検出ルール」ページが開きます。「ルールの作成」をクリックします。
「検出ルールの作成」ダイアログ・ボックスが開きます。
-
「スケジュール済検索の検出ルール」をクリックします。
-
スケジュール済タスクのルール名を指定します。
-
「保存済検索の選択」で、次のようにします:
スケジュールを作成する保存済検索を指定します。まず、保存検索を保存するコンパートメントを選択します。
次に、メニューから「保存済検索」を選択します。
問合せとその説明などの保存済検索の詳細が表示されます。
-
「設定頻度」で、次の手順を実行します。
間隔(集計ウィンドウ)を指定します。選択した分、時間、日または週で実行されるようにスケジュールを最適化できます。さらに、より広範囲の集計(日など)を選択した場合、範囲内でより詳細な集計(問合せを実行する必要がある日の時間など)を指定できます。
Run indefinitely
、Run once
、Custom
など、問合せを実行する頻度を指定できます。「繰返し数」を、問合せを実行する必要がある回数の頻度指定に含めることもできます。
-
「構成するターゲット・サービスの選択」で、次のようにします:
-
問合せの実行結果が転送されるターゲット・サービス(
モニタリング
など)を選択します。モニタリング・サービスは、スケジュールに基づいて問合せを実行した結果のメトリックを格納します。
-
メトリック・コンパートメント(メトリックが作成されるコンパートメント)を選択します。コンパートメントは、デフォルトでOracle Log Analyticsによって選択されます。
-
メトリック・ネームスペース(新しいメトリックを配置するメトリック・ネームスペース)を選択します。ネームスペースの選択に使用できるオプションのスコープは、前のステップのメトリック・コンパートメントの選択によって定義されます。オプションを使用できない場合は、ネームスペースの新しい値を入力することもできます。
-
オプションで、リソース・グループ(メトリックが属するグループ)を選択します。リソース・グループは、カスタム・メトリックで提供されるカスタム文字列です。
-
メトリック名(メトリックを表示するためにモニタリング・サービス・エクスプローラで使用されるメトリックの名前)を入力します。指定できるメトリックは1つのみです。
メトリック・エクスプローラで簡単に識別できるように、保存済検索名をメトリック名に含めることをお薦めします(<mysavedsearchname><metric_name>など)。
-
-
オプションで、「拡張オプションの表示」セクションを展開し、検出ルールにタグを追加します。
-
必要なIAMポリシーがまだ定義されていない場合は、次を行うためのポリシーをリストした通知が表示されます:
- 動的グループの作成
- スケジュール済タスクの実行を許可するポリシーを動的グループに適用
リストされたポリシーを書き留め、それらを作成します。
-
「検出ルールの作成」をクリックします。
これで、問合せが一定間隔で実行されるようにスケジュールされ、結果のメトリックがモニタリング・サービスに発行されます。
-
「スケジュール済検索検出ルール」リスト・ページで、スケジュール済検索の名前をクリックします。スケジュール済検索の詳細ページで、「メトリック・エクスプローラで表示」をクリックしてモニタリング・サービスのメトリックを表示します。
ユーザーがスケジュール済タスクのすべての操作を実行することを許可
スケジュール済タスクを作成するには、最初に次のIAMポリシーを作成して適切な権限を設定します:
-
スケジュール済タスクが特定のコンパートメントからモニタリング・サービスにメトリックを投稿できるようにする動的グループを作成します:
ALL {resource.type='loganalyticsscheduledtask', resource.compartment.id='<compartment ocid>'}
または、すべてのコンパートメントからメトリックをポストできるようにするには:
ALL {resource.type='loganalyticsscheduledtask'}
-
動的グループがテナンシでスケジュール済タスク操作を実行できるようにするポリシーを作成します:
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 {LOG_ANALYTICS_LOOKUP_READ} in tenancy allow dynamic-group <dynamic_group_name> to read compartments in tenancy
-
前述のポリシー・ステートメントの一部は、すぐに使用可能なOracle定義のポリシー・テンプレートに含まれています。ユース・ケースにテンプレートを使用することを検討してください。一般的なユースケース用のOracle定義のポリシー・テンプレートを参照してください。
-
動的グループおよびIAMポリシーの詳細は、OCIドキュメント: 動的グループの管理およびOCIドキュメント: ポリシーの管理を参照してください。
-
ポリシーの詳細は、Oracle Cloud Infrastructureドキュメントのメトリック問合せの作成 - 前提条件を参照してください。
-
スケジュール済タスクのAPIリファレンスは、Oracle Cloud Infrastructure APIドキュメントのScheduledTaskリファレンスを参照してください。
APIを使用したコンパートメントのすべてのスケジュール済タスクの表示
特定の保存済検索のスケジュール済タスクを表示するには、保存済検索の詳細ページにアクセスします。ただし、スケジュール済タスクが作成された保存済検索を参照せずに、特定のコンパートメント内のスケジュール済タスクをすべてリストする場合は、APIを使用してスケジュール済タスクのリストを問い合せます。ListScheduledTasksを参照してください。
GET
コマンドで次のパラメータを指定します:
taskType=SAVED_SEARCH
compartmentId=<compartment_OCID>
limit=1000
sortOrder=DESC
sortBy=timeUpdated
コマンドを実行するには、次が必要です:
- ネームスペース: スケジュール済タスクの作成時に指定したLog Analyticsネームスペース。
- コンパートメントOCID: 作成されたスケジュール済タスクのリストを問い合せるコンパートメントのOCID。
保存検索のスケジュール済タスクのモニター
モニタリング・サービスのメトリック「スケジュール済タスク実行ステータス」を使用して、保存済検索のスケジュール済タスクの状態をモニターできます。インフラストラクチャの異常によるタスクの実行の失敗またはスキップの場合、または依存リソースまたは構成が変更された場合、メトリックは修正に役立つ失敗の詳細を提供します。
「スケジュール済タスク実行ステータス」メトリックにアクセスするステップは、サービス・メトリックを使用したLog Analyticsのモニターを参照してください。
各保存済検索スケジュール済タスクには、タスク・スケジュールで指定された独自の間隔があります。スケジュール済タスクの実行ごとに、メトリックがテナンシに発行されます。チャートのデータ・ポイントの上にカーソルを置くと、タスクの詳細が表示されます。メトリック・データは、ディメンションStatus
、DisplayName
またはResourceId
のいずれかに基づいてフィルタ処理できます。
-
Log Analyticsで、「管理」をクリックします。「管理の概要」ページが開きます。
-
左側の「リソース」メニューから、「検出ルール」をクリックします。「検出ルール」リスト・ページで、開く保存済検索検出ルールの名前をクリックします。検出ルールの詳細ページが開きます。
-
左側のリンクから、「メトリック」をクリックします。
-
「スケジュール済タスク実行ステータス」メトリックの右上隅にある「オプション」メニューをクリックし、「メトリック・エクスプローラでの問合せの表示」を選択します。
これで、メトリックがメトリック・エクスプローラに表示されます。ここで、チャートをより詳細に表示できます。
「データ表の表示」ボタンをスライドして、メトリックの詳細を表示します:
-
「問合せの編集」をクリックして、メトリックのディメンション名およびディメンション値を選択します。スケジュール済タスクの実行結果の
taskResult
、タスク実行のStatus
、タスクのDisplayName
、queryExecTimeRange
またはResourceId
に基づいてメトリック・データをフィルタできます。ノート
ディメンション名とディメンション値を指定してメトリック・エクスプローラからチャートおよび表形式データを表示するには、名前にカッコやその他の特殊文字が含まれるフィールドを使用しないでください。ディメンション名に対して選択したフィールドに特殊文字が含まれている場合は、
eval
コマンドを使用して仮想フィールドを作成するか、rename
コマンドを使用して既存のフィールドの名前を変更してカッコまたは特殊文字を削除します。たとえば、ディメンション名に使用されるフィールドがHost Name (Server)
の場合、| eval hostname=“Host Name (Server)”
を使用して仮想フィールドhostname
を作成できます。ディメンション
queryExecTimeRange
は、スケジュール済タスク問合せの実行にかかる時間の決定に役立ちます。使用可能な値は、< 5s
、>= 5s and < 10s
、>= 10s and < 30s
および> 30s
です。通常、実行に30秒以上かかる問合せは、実行時間の観点ではコストがかかります。「問合せの実行方法」を参照してください。ディメンション
taskResult
には、値Succeeded
、Failed
およびPaused
を指定できます。ディメンションStatus
は、taskResult
の詳細を提供します。たとえば、taskResult
の値がPaused
の場合、Status
値はPaused by User
になります。「チャートの更新」をクリックして、クラスタ・ビジュアライゼーションをリフレッシュします。これで、フィルタを適用したデータ・ポイントのみがチャートに表示されます。
収集されたデータ・ポイントの表形式で表示するために、「データ表」ビューに切り替えることができます。
-
ディメンション名を変更して、チャート内の様々なパースペクティブを表示します。
電子メール、SMS、Slack、PagerDuty、HTTPSエンドポイントURLまたはファンクションを使用して、ステータスを通知するアラートを設定できます。検出されたイベントのアラートの作成を参照してください。
特定のtaskResult
値について、このメトリックでレポートされるstatus
ディメンションの様々な値を次に示します。
taskResult 値
|
Status 値
|
説明 | 推奨される修正 |
---|---|---|---|
|
|
タスクの実行は正常です。 |
NA |
|
スケジュール済タスクの実行は成功しましたが、メトリック・データ制限のため、モニタリング・サービスへのメトリックの転記が切り捨てられました。 |
メトリックが指定された制限内に残っていることを確認します。OCI CLIコマンド・リファレンス- サービス・メトリック・データの監視を参照してください。 |
|
|
スケジュール済タスクの実行が成功したが、問合せで結果が返されなかった場合。そのため、モニタリング・サービスにポストされるメトリック・データはありません。 |
保存済検索問合せを確認します。 また、このステータスはエラーを意味しない可能性があります。これは、問合せが書き込まれたイベントが発生していないことのみを示唆しています。たとえば、問合せで過去5分間のログ内のエラーの数をカウントし、過去5分間に到着したログにエラーがない場合は、 |
|
|
完了までに2分以上かかる高価な問合せ、またはインフラストラクチャの異常による部分的な結果。 |
「ステータス」の情報でOracle Supportに連絡してください。 |
|
|
完了までに2分以上かかる高価な問合せ、またはインフラストラクチャの異常による部分的な結果。 |
「ステータス」の情報でOracle Supportに連絡してください。 |
|
|
|
インフラストラクチャの異常またはリカバリ可能な障害により、タスクの実行に失敗しました。 |
「ステータス」の情報でOracle Supportに連絡してください。 |
|
|
保存済検索問合せ文字列またはスコープ・フィルタが無効です。 |
スケジュール済タスクの作成後に保存検索が編集されたかどうかを確認し、修正します。 |
|
保存検索が削除されるか、保存検索のREAD権限を提供するIAMポリシーが変更されました。 |
IAMポリシーがリストアされていることを確認します。 |
|
|
保存済検索問合せはメトリックの生成には無効です。 |
スケジュール済タスクの作成後に保存検索が編集されたかどうかを確認し、修正します。 |
|
|
スケジュール済タスクがログ・データのパージ用で、パージ・コンパートメントが削除された場合、またはスケジュール済タスクの作成後にパージのIAMポリシーが変更された場合、このステータスが表示されます。 |
パージ・コンパートメントが削除されているかどうかを確認し、リストアします。 IAMポリシーがリストアされていることを確認します。 |
|
|
次の2つの理由のいずれかによって、ステータスをトリガーできます。
|
メトリック詳細が不完全または無効な場合は、スケジュール済タスク定義のメトリック詳細を更新します。 メトリック列が数値でない場合、またはディメンション値がカーディナルでない場合は、保存検索を更新して有効なメトリックおよびディメンションを生成します。 |
|
|
|
スケジュール済タスクの実行を一時停止し、スケジュール済タスクを実行するユーザー・アクションを識別します。 |
スケジュール済タスクを作成するための重要な要素
スケジュール済タスクを作成するための次の要因に注意してください。
-
問合せの作成の要件:
スケジュール済タスクを作成するための問合せを構成する場合は、次の要件に準拠していることを確認してください。
- 検出ルール問合せに関する次の制限に注意してください:
-
スケジュール済タスク問合せの「元のログ・コンテンツ」フィールドに対してワイルドカード検索を実行しないでください。ワイルドカード検索の詳細は、「キーワード、フレーズおよびワイルドカードの使用」を参照してください。
-
timestats
コマンドの後には、eval
、extract
、jsonextract
、xmlextract
およびlookup
を指定できません。 -
コマンド
regex
は、Message
などの大きなフィールドで使用しないでください。これにより、問合せの処理コストが高くなります。like
比較およびextract
、jsonextract
、xmlextract
コマンドは、Message
などの大きなフィールドではサポートされていません。BY
句で使用されるリンク・フィールドまたはフィールドは、Message
などの大きなフィールドでは使用できません。 -
The commands which are not supported in the queries for scheduled tasks are
cluster
,clustercompare
,clusterdetails
,clustersplit
,compare
,createview
,delta
,fieldsummary
,highlightgroups
,geostats
,linkdetails
,map
,nlp
andtimecompare
.
-
- 最大限度:
by
句でサポートされるフィールドの最大数は3です。timestats
コマンドでサポートされるフィールドの最大数は、3です。スケジュール済タスク問合せでサポートされる集計関数の最大数は1です。
link
フィールドの値をポスト・メトリックのディメンションとして使用します:モニタリング・サービスに転記する最大3つのディメンション・フィールドと1つの数値メトリックを選択します。どのフィールドをモニタリングに投稿する必要があるかを示すには、問合せの最後を次の文字にする必要があります。
... | link ... | fields -*, dim1, dim2, dim3, metric1
link
コマンドの出力には、デフォルトで開始時間、終了時間、カウントなどの複数の列があります。fields
コマンドで-*
を使用して、これらのフィールドを削除し、オプションで最大3つのディメンション・フィールドと1つの必須メトリック・フィールドを指定します。stats
コマンドの後に複数のeval
文、および中間結果を計算するために複数のstats
関数を指定できます。ただし、問合せは、ポストする必要があるディメンションおよびメトリックを示すfields -*, dim1, dim2, dim3, 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
- 2までの
- 検出ルール問合せに関する次の制限に注意してください:
-
ログの遅延到着:
スケジュール済タスクがログの到着前に実行された場合、スケジュール済タスクが期待どおりに結果を返さない可能性があります。到着遅延が原因でスケジュール済タスクにこのようなログが欠落しないように、問合せでは時間範囲に対する調整を使用してそのログを考慮する必要があります。
たとえば、スケジュール済タスクが5分ごとに実行され、認証エラーの数がチェックされ、ログが生成されてからOracle Log Analyticsに到達するまでの間に3分間の遅延がある場合、スケジュール済タスクはログを検出しません。スケジュール済タスクが、たとえば01:00、01:05、01:10などで5分ごとに実行されるとします。01:04に生成されるログ・レコードL1が、Oracle Log Analyticsの01:07に達した場合。L1は、この時点でログがOracle Log Analyticsに到達しなかったため、1:05に実行されたスケジュール済タスクでは検出されません。01:10での次の実行中に、問合せはタイムスタンプが01:05から01:10の間のログを検索します。このサイクルでは、L1のタイムスタンプが01:04であるため、検出されません。次の問合せでは、ログが遅延した場合、すべてのログ・レコードが表示されない場合があります。
Label = 'Authentication Error' | stats count as logrecords by 'Log Source'
Oracle Log 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
を参照してください。保存検索で200 フィールド別一意値を超える値を生成できる場合、モニタリング・サービスによって課せられる制限により一部結果が転記されます。そのような場合は、topまたはbottom 200の結果を表示するには、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当たりの数を表示するには、メトリック・ディメンション名を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を定義し、「元のログ・コンテンツ」で検索するかわりに、スケジュールされた問合せで使用することをお薦めします。ラベルの作成およびソースでの拡張フィールドの使用を参照してください。