シナリオ: モニタリング・ターゲットのディメンションの作成
コネクタによって生成されるカスタム・メトリックのディメンションを作成する方法について説明します。ロギング・サービスからメトリック(モニタリング・サービス)に、コネクタ・ハブを使用してログ・データを送信します。
このシナリオでは、コネクタ・を作成して、ログ・データを参照するディメンションを含むカスタム・メトリックを生成します。このコネクタを使用して、ログ・データをロギングからモニタリングに移動します。データの移動後、コネクタによって作成されるディメンションを使用して、新しいカスタム・メトリックをフィルタ処理できます。
必要なIAMポリシー
目標
このトピックでは、このシナリオの目標について説明します。
このシナリオの目標は、オブジェクト・ストレージ・バケットの更新イベントをフィルタ処理することです。たとえば、バケットをパブリック・アクセスに変更した更新を探します。パブリック・バケットを検出すると、機密情報の漏洩を防ぐことに役立ちます。このシナリオでは、パブリック・アクセス・タイプの他に、バケット名、コンパートメント名、可用性ドメイン、バージョン管理ステータスおよび静的値のフィルタを設定します。
このシナリオの設定
このトピックでは、このシナリオの設定に関連するタスクについて説明します。
このシナリオでは、コネクタ・ハブ・サービスを使用してログからメトリックを作成します。このシナリオの設定には、次のタスクが含まれます:
-
ログをLoggingからMonitoring内のディメンションを含むカスタム・メトリックに移動するコネクタを作成します。
-
ログ・データ: 監査ログ(_Auditログ・グループ)のバケット - 更新イベント
ノート
このシナリオでは_Auditログ・グループおよびバケット更新イベントを使用しますが、テナンシで使用可能なすべてのログに対して同様のアプローチを使用できます。 -
メトリック・ネームスペース:
bucket_events
-
メトリック名:
update
-
静的値
buckets-from-connector
(ディメンション名:mytags
) -
パス・ディメンションを使用して抽出される値:
ノート
新しいディメンション値ごとに、新しいメトリック・ストリームが作成されます。スロットルが発生する可能性がある一意のメトリック・ストリームの生成が多すぎないように、ディメンションからGUIDまたはUUID (コンパートメントOCIDsなど)を除外することをお薦めします。
パス・プロパティ(ディメンション名) 値 bucketName logContent.data.additionalDetails.bucketName compartmentName logContent.data.compartmentName availabilityDomain
logContent.data.availabilityDomain publicAccessType logContent.data.additionalDetails.publicAccessType versioning
logContent.data.additionalDetails.versioning
-
-
移動されたデータをディメンション(静的値および抽出された値)でフィルタ処理します。
これらのタスクは、Oracle Cloud Infrastructureコンソール、CLIまたはAPIで完了できます。
コンソールの使用
このトピックでは、コンソールを使用してシナリオを設定する方法について説明します。
トラブルシューティングのヘルプは、コネクタのトラブルシューティングおよび通知のトラブルシューティングを参照してください。
このトピックでは、コンソールを使用して、ログのデータをディメンションを含むカスタム・メトリックに移動するコネクタを作成する方法について説明します。
-
ナビゲーション・メニューを開き、「アナリティクスとAI」をクリックします。「メッセージング」で、「コネクタ・ハブ」をクリックします。
- サービス・コネクタを作成するコンパートメントを選択します。
- 「コネクタの作成」をクリックします。
-
コネクタの作成ページで、カスタム・ディメンションを含むカスタム・メトリックにオブジェクト・ストレージ・バケットの更新イベントを移動します:
- 「コネクタ名」に"Bucket - Update"などと入力します。機密情報を入力しないでください。
- 新しいコネクタを格納するリソース・コンパートメントを選択します。
- 「コネクタの構成」で、ログ・データをメトリックに移動するソース・サービスおよびターゲット・サービスを選択します:
- ソース: ロギング
- ターゲット: モニタリング
- 「ソース接続の構成」で、監査ログを選択します:
- コンパートメント: ログ・データを含むコンパートメント。
- ログ・グループ: _Audit
- ログ: (空白のままにします)
- 「ログ・フィルタ・タスク」で、オブジェクト・ストレージ・バケットの更新イベントを選択します:
- フィルタ・タイプ: イベント・タイプ
- サービス名: オブジェクト・ストレージ
- イベント・タイプ: オブジェクト - 更新
- 「タスクの構成」はスキップします。
- 「ターゲット接続の構成」で、フィルタ処理したログ・データで使用するカスタム・メトリック・ネームスペースおよびカスタム・メトリック名を入力します:
- バケット更新イベントに対応するメトリック・データ・ポイントを格納するコンパートメントを選択します。
- 新しいメトリック・ネームスペースとしてbucket_eventsを入力します。 ノート
新しいメトリック・ネームスペースを入力したら、[Enter]を押して送信します。 - 新しいメトリックとしてupdateを入力します
次に、ログ・データに静的値buckets-from-connectorをタグ付けし、バケット名、コンパートメント名、コンパートメントOCID、可用性ドメイン、パブリック・アクセス・タイプおよびバージョン管理ステータスを抽出するためのカスタム・ディメンションを作成します。
- 「ディメンションの追加」をクリックします。
「ディメンションの追加」パネルが表示されます。
- ログ・データからバケット名を抽出します(ディメンション名
bucketName
):-
「パスの選択」で、
bucketName
パス内の使用可能なログ・データを参照します。ログ・データの最新の6行が、「ソースの構成」で指定されたログから取得されます。
bucketName
パスを示すログ・データ部分の例:{ "datetime": 1636594090595, "logContent": { "data": { "additionalDetails": { "bucketName": "bucket-20210722-1148",
-
必要なパスのチェック・ボックスを選択します。
ノート
使用可能なログ・データがない場合は、「パスの編集」にカスタム・ディメンション名のパス値を手動で入力できます。パスはlogContent
から開始し、ドット(.
)またはインデックス([]
)表記のいずれかを使用する必要があります。ドットとインデックスはサポートされている唯一のJMESPathセレクタです。たとえば:logContent.data
(ドット表記法)logContent.data[0].content
(インデックス表記法)
バケット更新イベントのパスの例(ドット表記法使用):
logContent.data.additionalDetails.bucketName
有効なパス表記法の詳細は、JmesPathDimensionValueを参照してください。
次の図は、選択したパス(
bucketName
)および選択していないパス(eTag
)の例を示しています。「パスの編集」では、選択したパスに基づいて次のフィールドの値が自動的に移入されますオプションで、デフォルトのディメンション名を編集できます。
ディメンション名 値 bucketName logContent.data.additionalDetails.bucketName
-
-
ディメンション(フィルタ)として使用する追加の値ごとに抽出を繰り返します: 「パスの選択」で、次の表のディメンション名に対応するパスのチェック・ボックスを選択します。
「値」は、選択したパスから自動的に移入されます。オプションで、デフォルトのディメンション名を編集できます。
ディメンション名 値 compartmentName logContent.data.compartmentName availabilityDomain
logContent.data.availabilityDomain publicAccessType logContent.data.additionalDetails.publicAccessType versioning
logContent.data.additionalDetails.versioning - ログ・データに静的値buckets-from-connector (ディメンション名mytags)をタグ付けします: 「静的値」に次のように入力します:
- ディメンション名: mytags
- 値: buckets-from-connector
- 「変更の保存」をクリックします。
「ディメンションの追加」パネルが閉じます。フォーカスが「コネクタの作成」ページが表示されます。
- ポリシー(コネクタを作成または更新するためのアクセス権で必要)の作成を求められた場合は、「作成」をクリックします。
- 「作成」をクリックします。
新しいコネクタは、指定したディメンションを含むカスタム・メトリック
update
へのログ・データの移動を開始します。次に、ディメンションを使用して、移動したデータをフィルタ処理します。
このトピックでは、コンソールを使用して、ログからディメンションを含むカスタム・メトリックに移動されたデータをフィルタ処理する方法について説明します。
-
ナビゲーション・メニューを開き、「監視および管理」をクリックします。「Monitoring」で、「Metrics Explorer」をクリックします。
- メトリック・エクスプローラ・ページで、新しい問合せのフィールドに入力します。
- コンパートメント: メトリックを含むコンパートメント。
- メトリック・ネームスペース: bucket_events
- メトリック名: update
-
間隔: 1m
-
統計: 数
-
メトリック・ディメンション: 次のディメンションを追加します。
ディメンション名 ディメンション値 mytags
buckets-from-connector bucketName
bucket-20210722-1148 compartmentName
development availabilityDomain
PHX-AD-3 publicAccessType
ObjectRead versioning
Enabled
-
「チャートの更新」をクリックします。
チャートには、ディメンションによってフィルタ処理されたメトリック・データが表示されます。
完了しました。これで、コネクタがメトリックに移動したログ・データをフィルタ処理しています。
CLIの使用
このトピックでは、CLIを使用して、コネクタを作成し、移動したデータをフィルタ処理する方法について説明します。
APIの使用およびリクエストの署名の詳細は、REST APIのドキュメントおよびセキュリティ資格証明を参照してください。SDKの詳細は、SDKおよびCLIを参照してください。
-
コネクタのログ・ソースを定義します:
source.json
という名前のファイルを保存します。source.jsonファイルの例{ "kind": "logging", "logSources": [ { "compartmentId": "<compartment_OCID>", "logGroupId": "_Audit", "logId": null } ] }
-
コネクタのターゲット(メトリックとディメンション)を定義します:
target.json
という名前のファイルを保存します。target.jsonファイルの例{ "kind": "monitoring", "compartmentId": "<compartment_OCID>", "metricNamespace": "bucket_events", "metric": "update", "dimensions": [ {"name": "mytags", "dimensionValue": {"kind": "static", "value": "buckets-from-connector"}}, {"name": "bucketName", "dimensionValue": {"kind": "jmesPath", "path": "logContent.data.additionalDetails.bucketName"}}, {"name": "compartmentName", "dimensionValue": {"kind": "jmesPath", "path": "logContent.data.compartmentName"}}, {"name": "availabilityDomain", "dimensionValue": {"kind": "jmesPath", "path": "logContent.data.availabilityDomain"}}, {"name": "publicAccessType", "dimensionValue": {"kind": "jmesPath", "path": "logContent.data.additionalDetails.publicAccessType"}}, {"name": "versioning", "dimensionValue": {"kind": "jmesPath", "path": "logContent.data.additionalDetails.versioning"}} ] }
-
コネクタを作成します: コマンド・プロンプトを開き、
oci sch service-connector create
コマンドを実行します:コネクタを作成するためのコマンドの例oci sch service-connector create --compartment-id <compartment_OCID> --display-name "Bucket - Update" --source file://source.json --target file://target.json
-
カスタム・ディメンションを使用してメトリック・データを問い合せます: コマンド・プロンプトを開き、
oci monitoring metric-data summarize-metrics-data
コマンドを実行します:カスタム・ディメンションを使用してメトリック・データを問い合せるコマンドの例oci monitoring metric-data summarize-metrics-data --compartment-id <compartment_OCID> --namespace bucket_events --query-text update[1m]{mytags = "buckets-from-connector", bucketName = "bucket-20210722-1148", coompartmentName = "development", availabilityDomain = "PHX-AD-3", publicAccessType = "ObjectRead", versioning = "Enabled"}.count()
トラブルシューティングのヘルプは、コネクタのトラブルシューティングおよび通知のトラブルシューティングを参照してください。
APIの使用
このトピックでは、APIを使用して、コネクタを作成し、移動したデータをフィルタ処理する方法について説明します。
APIの使用およびリクエストの署名の詳細は、REST APIのドキュメントおよびセキュリティ資格証明を参照してください。SDKの詳細は、SDKおよびCLIを参照してください。
次の操作を使用します:
-
CreateServiceConnector: コネクタを作成します。
CreateServiceConnectorリクエストの例POST /20200909/serviceConnectors Host: service-connector-hub.us-phoenix-1.oraclecloud.com <authorization and other headers> { "compartmentId": "<compartment_OCID>", "displayName": "Bucket - Update", "source": { "kind": "logging", "logSources": [ { "compartmentId": "<compartment_OCID>", "logGroupId": "_Audit", "logId": null } ] }, "target": { "compartmentId": "<compartment_OCID>", "dimensions": [ {"name": "mytags", "dimensionValue": {"kind": "static", "value": "buckets-from-connector"}}, {"name": "bucketName", "dimensionValue": {"kind": "jmesPath", "path": "logContent.data.additionalDetails.bucketName"}}, {"name": "compartmentName", "dimensionValue": {"kind": "jmesPath", "path": "logContent.data.compartmentName"}}, {"name": "availabilityDomain", "dimensionValue": {"kind": "jmesPath", "path": "logContent.data.availabilityDomain"}}, {"name": "publicAccessType", "dimensionValue": {"kind": "jmesPath", "path": "logContent.data.additionalDetails.publicAccessType"}}, {"name": "versioning", "dimensionValue": {"kind": "jmesPath", "path": "logContent.data.additionalDetails.versioning"}} ] "kind": "monitoring", "metric": "update", "metricNamespace": "bucket_events" } }
-
SummarizeMetricsData: ディメンションによってメトリック・データを問い合せます。
SummarizeMetricsDataリクエストの例POST /20180401/metrics/actions/summarizeMetricsData?compartmentId=<compartment_OCID> Host: telemetry.us-phoenix-1.oraclecloud.com <authorization and other headers> { "namespace": "bucket_events", "query": "update[1m]{mytags = "buckets-from-connector", bucketName = "bucket-20210722-1148", coompartmentName = "development", availabilityDomain = "PHX-AD-3", publicAccessType = "ObjectRead", versioning = "Enabled"}.count()" }
トラブルシューティングのヘルプは、コネクタのトラブルシューティングおよび通知のトラブルシューティングを参照してください。