OCIオブジェクト・ストレージ・バケットからのログの収集
ログ・データは、Oracle Cloud Infrastructure (OCI) Object Storageから継続的に収集できます。ログ収集を有効にするには、REST APIまたはCLIを使用してObjectCollectionRuleリソースを作成します。このリソースが正常に作成され、必要なIAMポリシーが設定されると、ログ収集が開始されます。
このログ収集の方法を使用して、オブジェクト・ストレージ・バケットに格納されている任意のタイプのログを収集できます。
次のいずれかの方法で、オブジェクト・ストレージ・バケットからログを収集できます:
-
LIVE: ルールObjectCollectionRuleの作成時点からオブジェクトを継続的に収集する場合。これはデフォルトの方法です。
-
HISTORIC: 指定した時間範囲でオブジェクトを1回限り収集する場合。
-
HISTORIC_LIVE: バケット内のすべての過去のログの収集、その後、ログを含むすべての新規作成オブジェクトを継続的に収集する場合。
Oracle Log Analyticsは、OCIのイベントおよびストリーミング・サービスをオブジェクト・ストレージとともに使用して、オブジェクトを収集および処理します(ライブ・タイプまたはHISTORICタイプ)。ログ収集用にバケットを構成すると、Oracle Log Analyticsによってイベント・ルールが作成されて、バケットに新しいオブジェクト・アップロードが行われるたびにイベント通知が送信されます。通知は、指定したストリームに配信されます。
LIVEまたはHISTORIC_LIVE型のオブジェクト・コレクション・ルールには、ストリームOCIDが必要です。これは、イベント・ルールの作成でOracle Log Analyticsによって使用され、オブジェクト・ストレージによって作成されたイベント通知を消費します。デフォルトでは、ストリーム内のメッセージを処理するときに、ストリーム内で使用可能な最も古いメッセージが最初に消費されます。それ以外の場合は、既存のカーソル位置がすでに設定されている場合は使用されます。
Oracle Log Analyticsには、ストリームの作成に関する次の推奨事項が用意されています。
- 保存期間を48時間に設定します。
- スループットに基づいてパーティションを検討します。各パーティションは、1秒当たり1000オブジェクトを処理できます(同じストリームを使用するすべてのバケットで)。ストリーミング制限の詳細は、ストリーミング・リソースの制限を参照してください。
- オプションで、テナンシに単一のストリームがあることを検討します。
- このストリームは、ログ処理中の問題を回避するために、オブジェクト収集の目的でのみ使用します。
streamIdに加えて、streamCursorTypeを指定して、消費を開始するストリーム内の位置を指定できます。4つのタイプのカーソルを使用して、ストリームからメッセージをフェッチできます。メッセージの消費を参照してください。
- DEFAULT: 同じストリームを使用する以前のObjectCollectionRuleによってすでに設定されている場合は、既存のカーソル位置を使用します。それ以外の場合は、ストリーム内で使用可能な最も古いメッセージ(TRIM_HORIZONと同様)から消費が開始されます。
- TRIM_HORIZON: ストリーム内で使用可能な最も古いメッセージから消費が開始されます。
- 最新: このルールの作成後にパブリッシュされたメッセージの消費を開始します。
- AT_TIME: 指定された時間からのメッセージの消費を開始します。
streamCursorTypeがAT_TIMEに設定されている場合、オブジェクトの使用開始時間を示すstreamCursorTimeパラメータも必要です。
ノート:
-
オブジェクト・ストレージからのログ収集が正しく機能するように、Oracle Log Analyticsによって作成されたイベント・ルールが改ざんされていないことを確認してください。
-
バケットごとに、タイプがLIVEまたはHISTORIC_LIVEのObjectCollectionRuleを1つのみ持てます。
-
リージョン内のテナンシごとに、最大1000の一意のオブジェクト収集ルールを作成できます。
-
単一の未加工のログ・ファイル、または複数のログ・ファイルを含む任意のアーカイブ・ファイル(
.zip
、.gz
、.tgz
、.tar
)をオブジェクトに指定できます。アーカイブ・ファイル内のファイル数は、2000未満(存在する場合にはディレクトリを含む)にする必要があります。 -
オブジェクト(単一ファイルまたはアーカイブ・ファイル)の最大サイズは1 GBです。オブジェクトの非圧縮サイズは10 GB未満である必要があります。
-
ログ収集を適切に機能させるため、Oracleでは、このストリームをオブジェクト収集の目的でのみ使用することをお薦めします。
前提条件: このアプローチを使用してログ収集を有効にする前に、次を確認してください:
- 新しいログ・ソースを作成するか、ログ・フォーマットに一致するOracle定義のログ・ソースを使用します。ソースの作成を参照してください。
- ログ・グループを作成するか、ログに対するユーザー・アクセス制御を管理するためにこれらのログを格納する既存のログ・グループを使用して、そのログ・グループのOCIDを書き留めます。ログを格納するログ・グループの作成を参照してください。
- オプションで、アップロードするログをマップする場合は、エンティティを作成するか、既存のエンティティを使用してそのエンティティOCIDを書き留めます。「ログ出力リソースを表すエンティティの作成」を参照してください。
- LIVEまたはHISTORIC_LIVEコレクション型の場合は、新しいストリームを作成するか、既存のストリーム(オブジェクト・コレクションにのみ使用される)を使用します。ストリームの作成を参照してください。
バケットからのオブジェクトの収集を停止するには、ObjectCollectionRuleルールを削除します。これにより、バケットに関連付けられた構成のみが削除されますが、収集済のログ・データやバケット内のオブジェクトには影響しません。
オブジェクト・ストレージからのログの収集を許可します
ObjectCollectionRuleで必要な操作を実行するための権限をユーザー・グループに付与するには、次のIAMポリシー・ステートメントをポリシーに含める必要があります:
allow group <group_name> to use loganalytics-object-collection-rule in compartment <object_collection_rule_compartment>
allow group <group_name> to {LOG_ANALYTICS_LOG_GROUP_UPLOAD_LOGS} in compartment <log_group_compartment>
allow group <group_name> to {LOG_ANALYTICS_ENTITY_UPLOAD_LOGS} in compartment <entity_compartment>
allow group <group_name> to {LOG_ANALYTICS_SOURCE_READ} in tenancy
allow group <group_name> to {BUCKET_UPDATE, BUCKET_READ, BUCKET_INSPECT} in compartment <object_store_bucket_compartment>
allow group <group_name> to {OBJECT_INSPECT, OBJECT_READ} in compartment <object_store_bucket_compartment>
allow group <group_name> to {STREAM_CONSUME, STREAM_READ} in compartment <stream_compartment>
Oracle Log Analytics集計リソース・レベルでIAMポリシーを作成する場合、オブジェクト・コレクションを使用するには、次のポリシー・ステートメントを含める必要があります:
allow group <group_name> to use loganalytics-features-family in tenancy
allow group <group_name> to use loganalytics-resources-family in compartment/tenancy
allow group <group_name> to use object-family in compartment <object_store_bucket_compartment>
allow group <group_name> to use stream-family in compartment <stream_compartment>
一方、個々のリソース・タイプのレベルでIAMポリシーを作成する場合、オブジェクト・コレクションを使用するには、次のポリシー・ステートメントが必要です。
allow group <group_name> to use loganalytics-object-collection-rule in compartment <object_collection_rule_compartment>
allow group <group_name> to use loganalytics-log-group in compartment <log_group_compartment>
allow group <group_name> to {LOG_ANALYTICS_ENTITY_UPLOAD_LOGS} in compartment <entity_compartment>
allow group <group_name> to read loganalytics-source in tenancy
allow group <group_name> to use object-family in compartment <object_store_bucket_compartment>
allow group <group_name> to use stream-family in compartment <stream_compartment>
前述のすべてのポリシー・ステートメントのgroup_name
は、必要な権限を付与する必要があるユーザー・グループを参照します。
デフォルトでは、オブジェクト・ストレージは、オブジェクト・レベルでのイベントの自動発行を無効にします。イベントの発行を有効にするか、ObjectCollectionRuleの作成時に必要な権限を持つことができます。イベントの発行を有効にするには、オブジェクトの管理を参照してください。また、バケットを削除して再作成すると、既存のログ収集ルールが機能するように、バケットの再作成後にそのバケットの「オブジェクト・イベントの出力フラグを設定してください。
ログ収集が機能するには、ObjectCollectionRuleの作成に対する前述の権限とともに、テナンシのバケットからオブジェクトを読み取るための権限をOracle Log Analyticsに付与し、ストリームを使用してメッセージをフェッチし、オブジェクト・ストレージ・バケットがある対応するコンパートメントまたはテナンシでクラウド・イベント・ルールを管理する必要もあります。オブジェクト収集プロセスでは、loganalyticsobjectcollectionruleリソースに対してリソース・プリンシパルを使用して、バケット内のオブジェクトにアクセスします。必要な追加のIAMポリシー・ステートメントを次に示します:
次の一致ルールを使用して動的グループDynamic_Group_Nameを作成します:
ALL {resource.type='loganalyticsobjectcollectionrule'}
次の追加のIAMポリシー・ステートメントを追加します:
allow DYNAMIC-GROUP <Dynamic_Group_Name> to read buckets in compartment/tenancy
allow DYNAMIC-GROUP <Dynamic_Group_Name> to read objects in compartment/tenancy
allow DYNAMIC-GROUP <Dynamic_Group_Name> to manage cloudevents-rules in compartment/tenancy
allow DYNAMIC-GROUP <Dynamic_Group_Name> to inspect compartments in tenancy
allow DYNAMIC-GROUP <Dynamic_Group_Name> to use tag-namespaces in tenancy where all {target.tag-namespace.name = /oracle-tags/}
allow DYNAMIC-GROUP <Dynamic_Group_Name> to {STREAM_CONSUME} in compartment <stream_compartment>
前述のポリシー・ステートメントの一部は、すぐに使用可能なOracle定義のポリシー・テンプレートに含まれています。ユース・ケースにテンプレートを使用することを検討してください。一般的なユースケース用のOracle定義のポリシー・テンプレートを参照してください。
ObjectCollectionRule
の操作
REST APIまたはCLIを使用して、ObjectCollectionRuleリソースに対してCreate
、Update
、Delete
、List
、Get
などの操作を実行できます。
REST APIおよび署名リクエストの使用の詳細は、REST APIおよびセキュリティ資格証明を参照してください。
OCIクラウド・サービスと通信するには、API署名キーを作成し、それをOCIのユーザー・アカウントに登録します。キーを生成して登録し、テナンシーのOCIDおよびユーザーのOCIDを収集するには、セキュリティ資格証明- API署名キーを参照してください。
SDKについては、ソフトウェア開発キットとコマンドライン・インタフェースを参照してください。
REST APIの使用
ObjectCollectionRuleを管理するには、次のAPI操作を使用します:
CLIの使用
CLIの使用の詳細は、コマンドライン・インタフェース(CLI)を参照してください。
CLIコマンドで使用できるフラグおよびオプションの完全なリストは、コマンドライン・リファレンスを参照してください。
ObjectCollectionRuleを管理するには、次のCLIコマンドを実行します:
-
ObjectCollectionRuleの作成:
oci log-analytics object-collection-rule create --from-json <json_file_name> --namespace-name <namespace_name>
例:
oci log-analytics object-collection-rule create --from-json file://create.json --namespace-name MyNamespace
前述のコマンド例で参照されているサンプルの
create.json
:{ "name": "<Rule_Name>", "compartmentId": "<Compartment_OCID>", "osNamespace": "<Namespace>", "osBucketName": "<Bucket_Name>", "logGroupId": "<Log_Group_OCID>", "logSourceName": "<Log_Source>", "streamId":"<Stream_OCID>" }
jsonでは、次の必須プロパティを指定する必要があります。
- name: ObjectCollectionRuleに与えられた一意の名前。名前はテナンシ内で一意である必要があり、変更できません。
- compartmentId: ObjectCollectionRuleが配置されているコンパートメントのOCID。
- osNamespace: オブジェクト・ストレージ・ネームスペース。
- osBucketName: オブジェクト・ストレージのバケットの名前です。
- logGroupId: 処理済ログを関連付けるLog Analyticsログ・グループOCID。
- logSourceName: 処理に使用するLog Analyticsソースの名前。
- streamId: LIVEまたはHISTORIC_LIVE型のオブジェクト収集ルールには、ストリームOCIDが必要です。
必須プロパティに加えて、次のプロパティもオプションで指定できます。
- collectionType: コレクションのタイプ。指定できる値は、
LIVE
、HISTORIC
およびHISTORIC_LIVE
です。 - charEncoding: 値
ISO_8859_1
、UTF-16
の例 - definedTags: このリソースの定義済タグ。各キーは事前定義され、ネームスペースにスコープ指定されます。たとえば、
{"foo-namespace": {"bar-key": "value"}}
です - description: ルールの詳細を説明する文字列で、長さは400文字以下です。
- entityId: 収集されたログが関連付けられるLog AnalyticsエンティティのOCID。
- freeformTags: 事前定義された名前、タイプまたはスコープなしで適用される単純なキーと値のペア。相互互換性のためにのみ存在します。たとえば、
{"bar-key": "value"}
です - isEnabled: デフォルトでは
true
です。 - objectNameFilters: 例については、オブジェクト名にフィルタを適用して選択的オブジェクト・コレクションを実行するを参照してください。
- オーバーライド: 例については、「特定のオブジェクトを処理するためのObjectCollectionRule構成のオーバーライド」を参照してください。
- pollSince: HISTORICまたはHISTORIC_LIVEコレクションで考慮する、バケット内のファイルの最も古い時間。指定できる値は、BEGINNING、CURRENT_TIMEまたはRFC3339形式の日時文字列です。たとえば、RFC3339形式の
2019-10-12T07:20:50.52Z
です。 - pollTill: HISTORICまたはHISTORIC_LIVEコレクションで考慮する、バケット内のファイルの最新の時間。指定できる値は、CURRENT_TIMEまたはRFC3339形式の日時文字列です。たとえば、RFC3339形式の
2019-10-12T07:20:50.52Z
です。 - streamCursorType: ストリームからメッセージをフェッチするために使用されるカーソル・タイプ。
- isForceHistoricCollection: ポーリング期間が既存のACTIVE収集ルールと重複する場合に履歴収集を許可するフラグ。デフォルトでは、
False
です。 - streamCursorTime: streamCursorTypeがAT_TIMEの場合、オブジェクトを消費する時間。受け入れられる値は、RFC3339形式の日時文字列である必要があります。たとえば、
2019-10-12T07:20:50.52Z
です。
ObjectCollectionRuleのプロパティとその許容値の詳細は、ObjectCollectionRule APIリファレンスを参照してください。
前述のコマンド例のサンプル・レスポンス:
{ "id": "ocid1.loganalyticsobjectcollectionrule.oc1..exampleuniqueID", "name": "My Rule", "compartmentId": "ocid.compartment.oc1..exampleuniqueID", "osNamespace": "MyNamespace", "osBucketName": "MyBucket1", "collectionType": "LIVE", "pollSince": "2020-09-08 14:06:28.028", "logGroupId": "ocid1.loganalyticsloggroup.oc1.. exampleuniqueID", "logSourceName": "MyLogSource", "lifecycleState": "ACTIVE", "timeCreated": "2020-09-08T14:06:28.028Z", "timeUpdated": "2020-09-08T14:06:28.028Z", "streamId": "ocid1.stream.oc1..exampleuniqueID" }
-
ObjectCollectionRuleの更新:
ログ・ソースを更新するサンプル・コマンドを次に示します。同様に、ログ・グループ、エンティティまたはその他のリソースも更新できます。
oci log-analytics object-collection-rule update --namespace-name <namespace_name> --object-collection-rule-id <object-collection-rule-OCID> --log-source-name <Log-Source>
例:
oci log-analytics object-collection-rule update --namespace-name MyNamespace --object-collection-rule-id ocid1.loganalyticsobjectcollectionrule.oc1..exampleuniqueID --log-source-name MyLogSource
-
ObjectCollectionRuleの削除:
oci log-analytics object-collection-rule delete --namespace-name <Namespace> --object-collection-rule-id <object-collection-rule-OCID>
例:
oci log-analytics object-collection-rule delete --namespace-name “My Namespace” --object-collection-rule-id ocid1.loganalyticsobjectcollectionrule.oc1..exampleuniqueID
-
ObjectCollectionRuleのリスト:
oci log-analytics object-collection-rule list --namespace-name <Namespace> --compartment-id <compartment-OCID>
例:
oci log-analytics object-collection-rule list --namespace-name “My Namespace” --compartment-id ocid.compartment.oc1..exampleuniqueID
-
ObjectCollectionRuleの取得:
oci log-analytics object-collection-rule get --namespace-name <Namespace> --object-collection-rule-id <object-collection-rule-OCID>
例:
oci log-analytics object-collection-rule get --namespace-name “My Namespace” --object-collection-rule-id ocid1.loganalyticsobjectcollectionrule.oc1..exampleuniqueID
-
ObjectCollectionRuleへのオーバーライドの追加:
ObjectCollectionRuleがすでに存在する場合は、ObjectCollectionRuleに追加するオーバーライド条件を使用して、
update_override.json
などのオーバーライドjsonを作成します。{ "overrides":{"items":[{"matchType":"contains","matchValue":"audit","propertyName":"logSourceName","propertyValue":"myLOGANAuditSource"}]} }
次に、ObjectCollectionRuleを更新してオーバーライドを含めます:
oci log-analytics object-collection-rule update --namespace-name <Namespace> --object-collection-rule-id <object-collection-rule-OCID> --from-json file://path-to/file
例:
oci log-analytics object-collection-rule update --namespace-name “My Namespace” --object-collection-rule-id ocid1.loganalyticsobjectcollectionrule.oc1..exampleuniqueID --from-json file:///scratch/update_override.json
ObjectCollectionRuleのオーバーライドの詳細は、「特定のオブジェクトを処理するためのObjectCollectionRule構成のオーバーライド」を参照してください。
-
ObjectCollectionRuleからのオーバーライドの削除:
ObjectCollectionRuleからすべてのオーバーライド条件を削除する場合は、次のようにオーバーライド・プロパティの詳細を示すjson(
remove_overrides.json
など)を作成します。{ "overrides":{"items":[]} }
ObjectCollectionRuleを更新します:
oci log-analytics object-collection-rule update --namespace-name <Namespace> --object-collection-rule-id <object-collection-rule-OCID> --from-json file://path-to/file
例:
oci log-analytics object-collection-rule update --namespace-name “My Namespace” --object-collection-rule-id ocid1.loganalyticsobjectcollectionrule.oc1..exampleuniqueID --from-json file:///scratch/remove_overrides.json
ObjectCollectionRuleのオーバーライドの詳細は、「特定のオブジェクトを処理するためのObjectCollectionRule構成のオーバーライド」を参照してください。
-
objectNameFiltersをObjectCollectionRuleに追加します:
ObjectCollectionRuleがすでに存在する場合は、ObjectCollectionRuleに追加するオブジェクト名に対するフィルタを使用して、
filters.json
などのフィルタjsonを作成します。{ "objectNameFilters":["a/*","*audit*"] }
ノート
既存のObjectCollectionRuleをObjectNameFiltersで更新できるのは、LIVE
またはHISTORIC_LIVE
型の場合のみです。この操作では、タイプHISTORIC
はサポートされていません。次に、ObjectCollectionRuleを更新してフィルタを含めます:
oci log-analytics object-collection-rule update --namespace-name <Namespace> --object-collection-rule-id <object-collection-rule-OCID> --from-json file://path-to/file
例:
oci log-analytics object-collection-rule update --namespace-name “My Namespace” --object-collection-rule-id ocid1.loganalyticsobjectcollectionrule.oc1..exampleuniqueID --from-json file:///scratch/filters.json
ObjectCollectionRuleのフィルタの詳細は、「オブジェクト名に対するフィルタの適用による選択オブジェクト・コレクションの実行」を参照してください。
オブジェクト・ストレージからのクロステナンシ・ログ収集の許可
次のポリシーを設定して、ゲスト・テナントのバケットからログを収集するためのオブジェクト収集ルールを構成します。
Guest_Tenant
をゲスト・テナントとし、ログを収集する必要があるオブジェクト・ストレージ・バケットを持つそのゲスト・テナント内のコンパートメントをBucket_Compartment
にします。Host_Tenant
を、Oracle Log Analyticsにサブスクライブされているテナントとします。
テナンシが他のテナンシ内のオブジェクト・ストレージ・リソースにアクセスできるようにするポリシーの記述の詳細は、Oracle Cloud Infrastructureドキュメントのテナンシをまたがったオブジェクト・ストレージ・リソースへのアクセスを参照してください。
次の一致ルールを使用して、動的グループ<Dynamic_Group_Name>を作成します。
ALL {resource.type='loganalyticsobjectcollectionrule'}
ストリームは、Host_TenantまたはGuest_Tenantのいずれかで使用できます。ストリームが使用可能な場所に応じて、次のいずれかのワークフローに従います。
Host_Tenantで利用可能なストリーム
- Guest_Tenantに追加するポリシー
define group <Host_User_Group> as <Host_User_Group_OCID> define tenancy <Host_Tenant> as <Host_Tenant_OCID> define DYNAMIC-GROUP <Host_Dynamic_Group> as <Dynamic_Group_OCID> admit group <Host_User_Group> of tenancy <Host_Tenant> to use buckets in compartment <Bucket_Compartment> admit group <Host_User_Group> of tenancy <Host_Tenant> to {OBJECT_INSPECT, OBJECT_READ} in compartment <Bucket_Compartment> admit DYNAMIC-GROUP <Host_Dynamic_Group> of tenancy <Host_Tenant> to read buckets in compartment <Bucket_Compartment> admit DYNAMIC-GROUP <Host_Dynamic_Group> of tenancy <Host_Tenant> to read objects in compartment <Bucket_Compartment> admit DYNAMIC-GROUP <Host_Dynamic_Group> of tenancy <Host_Tenant> to manage cloudevents-rules in compartment <Bucket_Compartment> admit DYNAMIC-GROUP <Host_Dynamic_Group> of tenancy <Host_Tenant> to inspect compartments in tenancy admit DYNAMIC-GROUP <Host_Dynamic_Group> of tenancy <Host_Tenant> to use tag-namespaces in tenancy where all {target.tag-namespace.name = /oracle-tags /}
- Host_Tenantに追加するポリシー:
define tenancy <Guest_Tenant> as <Guest_Tenant_OCID> define compartment <Bucket_Compartment> as <Bucket_Compartment_OCID> endorse group <Host_User_Group> to use buckets in tenancy <Guest_Tenant> endorse group <Host_User_Group> to {OBJECT_INSPECT, OBJECT_READ} in compartment <Bucket_Compartment> of tenancy <Guest_Tenant> endorse DYNAMIC-GROUP <Host_Dynamic_Group> to read buckets in compartment <Bucket_Compartment> of tenancy <Guest_Tenant> endorse DYNAMIC-GROUP <Host_Dynamic_Group> to read objects in compartment <Bucket_Compartment> of tenancy <Guest_Tenant> endorse DYNAMIC-GROUP <Host_Dynamic_Group> to manage cloudevents-rules in compartment <Bucket_Compartment> of tenancy <Guest_Tenant> endorse DYNAMIC-GROUP <Host_Dynamic_Group> to inspect compartments in tenancy <Guest_Tenant> endorse DYNAMIC-GROUP <Host_Dynamic_Group> to use tag-namespaces in tenancy <Guest_Tenant> where all {target.tag-namespace.name = /oracle-tags /} allow DYNAMIC-GROUP <Host_Dynamic_Group> to {STREAM_CONSUME} in compartment <Stream_Compartment> allow group <Host_User_Group> to {STREAM_CONSUME, STREAM_READ} in compartment <Stream_Compartment> allow group <Host_User_Group> to use loganalytics-object-collection-rule in compartment <Rule_Compartment> allow group <Host_User_Group> to {LOG_ANALYTICS_LOG_GROUP_UPLOAD_LOGS} in compartment <LogGroup_Compartment> allow group <Host_User_Group> to {LOG_ANALYTICS_SOURCE_READ} in tenancy
オプションで、ObjectCollectionRuleにエンティティが関連付けられている場合、このポリシー・ステートメントを定義します:
allow group <Host_User_Group> to {LOG_ANALYTICS_ENTITY_UPLOAD_LOGS} in compartment <Entity_Compartment>
Guest_Tenantで利用可能なストリーム
- Guest_Tenantに追加するポリシー:
define group <Host_User_Group> as <Host_User_Group_OCID> define tenancy <Host_Tenant> as <Host_Tenant_OCID> define DYNAMIC-GROUP <Host_Dynamic_Group> as <Dynamic_Group_OCID> admit group <Host_User_Group> of tenancy <Host_Tenant> to use buckets in compartment <Bucket_Compartment> admit group <Host_User_Group> of tenancy <Host_Tenant> to {STREAM_CONSUME, STREAM_READ} in compartment <Stream_Compartment> admit group <Host_User_Group> of tenancy <Host_Tenant> to {OBJECT_INSPECT, OBJECT_READ} in compartment <Bucket_Compartment> admit DYNAMIC-GROUP <Host_Dynamic_Group> of tenancy <Host_Tenant> to {STREAM_CONSUME} in compartment <Stream_Compartment> admit DYNAMIC-GROUP <Host_Dynamic_Group> of tenancy <Host_Tenant> to read buckets in compartment <Bucket_Compartment> admit DYNAMIC-GROUP <Host_Dynamic_Group> of tenancy <Host_Tenant> to read objects in compartment <Bucket_Compartment> admit DYNAMIC-GROUP <Host_Dynamic_Group> of tenancy <Host_Tenant> to manage cloudevents-rules in compartment <Bucket_Compartment> admit DYNAMIC-GROUP <Host_Dynamic_Group> of tenancy <Host_Tenant> to inspect compartments in tenancy <Guest_Tenant> admit DYNAMIC-GROUP <Host_Dynamic_Group> of tenancy <Host_Tenant> to use tag-namespaces in tenancy where all {target.tag-namespace.name = /oracle-tags /}
- Host_Tenantに追加するポリシー:
define tenancy <Guest_Tenant> as <Guest_Tenant_OCID> define compartment <Bucket_Compartment> as <Bucket_Compartment_OCID> define compartment <Stream_Compartment> as <Stream_Compartment_OCID> endorse group <Host_User_Group> to use buckets in compartment <Bucket_Compartment> of tenancy <Guest_Tenant> endorse group <Host_User_Group> to {OBJECT_INSPECT, OBJECT_READ} in compartment <Bucket_Compartment> of tenancy <Guest_Tenant> endorse group <Host_User_Group> to {STREAM_CONSUME, STREAM_READ} in compartment <Stream_Compartment> of tenancy <Guest_Tenant> endorse DYNAMIC-GROUP <Host_Dynamic_Group> to read buckets in compartment <Bucket_Compartment> of tenancy <Guest_Tenant> endorse DYNAMIC-GROUP <Host_Dynamic_Group> to read objects in compartment <Bucket_Compartment> of tenancy <Guest_Tenant> endorse DYNAMIC-GROUP <Host_Dynamic_Group> to manage cloudevents-rules in compartment <Bucket_Compartment> of tenancy <Guest_Tenant> endorse DYNAMIC-GROUP <Host_Dynamic_Group> to inspect compartments in compartment <Bucket_Compartment> of tenancy <Guest_Tenant> endorse DYNAMIC-GROUP <Host_Dynamic_Group> to {STREAM_CONSUME} in compartment <Stream_Compartment> of tenancy <Guest_Tenant> endorse DYNAMIC-GROUP <Host_Dynamic_Group> to use tag-namespaces in tenancy <Guest_Tenant> where all {target.tag-namespace.name = /oracle-tags /} allow group <Host_User_Group> to use loganalytics-object-collection-rule in compartment <Rule_Compartment> allow group <Host_User_Group> to {LOG_ANALYTICS_LOG_GROUP_UPLOAD_LOGS} in compartment <LogGroup_Compartment> allow group <Host_User_Group> to {LOG_ANALYTICS_SOURCE_READ} in tenancy
オプションで、ObjectCollectionRuleにエンティティが関連付けられている場合、このポリシー・ステートメントを定義します:
allow group <Host_User_Group> to {LOG_ANALYTICS_ENTITY_UPLOAD_LOGS} in compartment <Entity_Compartment>
前述のポリシーで、
-
Rule_Compartment
: ObjectCollectionRuleを作成するホスト・テナンシのコンパートメント。 -
LogGroup_Compartment
: ログを格納する必要があるOracle Log Analyticsログ・グループのコンパートメント。 -
Entity_Compartment
: Oracle Log Analyticsエンティティのコンパートメント。 -
Stream_Compartment
: OCIストリームのコンパートメント。
必要なポリシーが作成されたら、ObjectCollectionRuleを作成して、ゲスト・テナンシのオブジェクト・ストレージからログを収集できます。次の例に示すように、JSONファイルでゲスト・テナントのネームスペースosNamespace
およびバケット名osBucketName
を指定します:
{
"name": "<My_Rule>",
"compartmentId": "<Host_Compartment_OCID>",
"osNamespace": "<Guest_Tenant_Namespace>", // Namespace of the guest tenant
"osBucketName": "<Guest_Tenant__Bucket1>", // Bucket in the guest tenant object store namespace
"logGroupId": "<Log_Group_OCID>",
"logSourceName": "<My_Log_Source>",
"streamId":"<Stream_OCID>"
}
ObjectCollectionRuleの作成の詳細は、ObjectCollectionRuleの操作を参照してください。
ObjectCollectionRule特定のオブジェクトを処理するための構成のオーバーライド
ObjectCollectionRuleに定義されている構成とは異なる構成を使用してバケット内の特定のオブジェクトを処理する場合は、オーバーライド機能を使用できます。オーバーライド機能を使用すると、バケット内の特定のパターン、接頭辞またはディレクトリに一致するオブジェクト名に基づいて構成プロパティを提供できます。
-
オーバーライドを指定できるプロパティ:
logSourceName
、charEncoding
、entityId
、timezone
-
オーバーライドで使用できる一致タイプ:
contains
-
一致値は、常にオブジェクト名に適用されます。
-
デフォルト値であるObjectCollectionRuleごとに、最大10個のオーバーライドを作成できます。このデフォルト値を変更するには、理由を指定してサービス・リクエスト(SR)を発行します。リクエストがレビューされます。
ObjectCollectionRuleを初めて作成する場合は、create.jsonの次の例のいずれかを使用して、ユースケース用のjsonを構築できます。
- logSourceName
myLOGANAuditSource
を含むaudit
を含むオブジェクト名をオーバーライドするcreate.jsonの例:{ "name":"testRule1", "compartmentId":"ocid1.compartment.oc1..aaa...", "osNamespace":"myObjectStorageNameSpace", "osBucketName":"myObjectStorageBucket", "logGroupId":"ocid1.loganalyticsloggroup.oc1..aaa...", "logSourceName":"myLOGANSourceName", "streamId":"ocid1.stream.oc1..aaa...", "overrides":{"items":[{"matchType":"contains","matchValue":"audit","propertyName":"logSourceName","propertyValue":"myLOGANAuditSource"}]} }
前述のルールを使用すると、
audit
を含むオブジェクトはlogSourceNamemyLOGANAuditSource
で処理され、バケット内の他のすべてのオブジェクトはlogSourceNamemyLOGANSourceName
で処理されます。 - logSourceName
myLOGANAuditSource
を含むaudit
およびcharEncodingUTF-16
を含むdir1/
を含むオブジェクト名を含むプロセス・オブジェクト名に対するオーバーライドを含むcreate.jsonの例:{ "name":"testRule2", "compartmentId":"ocid1.compartment.oc1..aaa...", "osNamespace":"myObjectStorageNameSpace", "osBucketName":"myObjectStorageBucket", "logGroupId":"ocid1.loganalyticsloggroup.oc1..aaa...", "logSourceName":"myLOGANSourceName", "streamId":"ocid1.stream.oc1..aaa...", "overrides":{"items":[{"matchType":"contains","matchValue":"audit","propertyName":"logSourceName","propertyValue":"myLOGANAuditSource"}, {"matchType":"contains","matchValue":"dir1/","propertyName":"charEncoding","propertyValue":"UTF-16"}]} }
構成jsonの作成後、ObjectCollectionRuleの作成時にファイル・パスを指定します。ObjectCollectionRule操作のObjectCollectionRuleの作成に関する項を参照してください。
ObjectCollectionRuleをすでに作成している場合は、オーバーライドの詳細を含むjsonを作成し、それを含めるようにObjectCollectionRuleを更新します。ObjectCollectionRule操作のObjectCollectionRuleへのオーバーライドの追加の項を参照してください。
すべてのオーバーライド条件を削除する場合は、「ObjectCollectionRuleからのオーバーライドの削除」の項で指定されているとおりにjsonを作成し、ObjectCollectionRuleを更新します。ObjectCollectionRule操作を参照してください。
オブジェクト名にフィルタを適用して選択的オブジェクト・コレクションを実行する
選択的オブジェクト・コレクション機能を使用して、特定のオブジェクト・ストレージ・バケット内のオブジェクトのサブセットのみを収集します。この機能は、オブジェクト名のフィルタでサポートされています。フィルタが適用されると、フィルタに一致するオブジェクトのみが処理のために収集されます。
matchType
プロパティは、ワイルドカード*
とともに完全一致のみをサポートします。ワイルドカードを使用したフィルタの例を次に示します。
- フィルタobjectName*は、接頭辞objectNameを持つオブジェクトを指定します。
- フィルタ*objectNameは、接尾辞がobjectNameのオブジェクトを指定します。
- フィルタ*objectName*は、テキストobjectNameを含むオブジェクトを指定します。
フィルタの詳細は、イベントとフィルタの一致に関する項を参照してください。
ObjectCollectionRuleを初めて作成する場合は、create.jsonの次の例のいずれかを使用して、ユースケース用のjsonを構築できます。
- 接頭辞
a/
を持ち、テキストaudit
を含むオブジェクト名を処理するcreate.jsonの例: objectNameFilters{ "name":"testRule1", "compartmentId":"ocid1.compartment.oc1..aaa...", "osNamespace":"myObjectStorageNameSpace", "osBucketName":"myObjectStorageBucket", "logGroupId":"ocid1.loganalyticsloggroup.oc1..aaa...", "logSourceName":"myLOGANSourceName", "streamId":"ocid1.stream.oc1..aaa...", "objectNameFilters":["a/*","*audit*"] }
- 必要に応じて、オーバーライド機能を使用して、フィルタごとに異なる構成を指定することもできます。前述の例では、テキスト
audit
を含むすべてのオブジェクトがソースmyLOGANAuditSource
を使用する必要があることをさらに指定できます。{ "name":"testRule2", "compartmentId":"ocid1.compartment.oc1..aaa...", "osNamespace":"myObjectStorageNameSpace", "osBucketName":"myObjectStorageBucket", "logGroupId":"ocid1.loganalyticsloggroup.oc1..aaa...", "logSourceName":"myLOGANSourceName", "streamId":"ocid1.stream.oc1..aaa...", "objectNameFilters":["a/*","*audit*"], "overrides":{"items":[{"matchType":"contains","matchValue":"audit","propertyName":"logSourceName","propertyValue":"myLOGANAuditSource"}]} }
オーバーライドの詳細は、「特定のオブジェクトを処理するためのObjectCollectionRule構成のオーバーライド」を参照してください。
構成jsonの作成後、ObjectCollectionRuleの作成時にファイル・パスを指定します。ObjectCollectionRule操作のObjectCollectionRuleの作成に関する項を参照してください。
ObjectCollectionRuleをすでに作成している場合は、フィルタの詳細を含むjsonを作成し、それを含めるようにObjectCollectionRuleを更新します。ObjectCollectionRule操作のobjectNameFiltersのObjectCollectionRuleへの追加に関する項を参照してください。
オブジェクト・ストレージ・バケットからログを収集する非推奨のステップについては、オブジェクト・ストレージ・バケットからのログの収集- 非推奨のステップを参照してください。
OCIオブジェクト・ストレージ・バケットからのログの回収の停止
OCIオブジェクト・ストレージ・バケットからのログの収集を中止する場合は、以前にログ収集用に設定したObjectCollectionRuleを特定して削除します。
-
次の
List
CLIコマンドを実行して、最初に特定のコンパートメント内のすべてのルールをリストします:oci log-analytics object-collection-rule list --namespace-name <Namespace> --compartment-id <compartment-OCID>
例:
oci log-analytics object-collection-rule list --namespace-name “My Namespace” --compartment-id ocid.compartment.oc1..exampleuniqueID
同等のREST APIリファレンスについては、List ObjectCollectionRuleを参照してください。
-
削除する各ルールに対して、次の
Delete
CLIコマンドを繰り返し実行します。oci log-analytics object-collection-rule delete --namespace-name <Namespace> --object-collection-rule-id <object-collection-rule-OCID>
例:
oci log-analytics object-collection-rule delete --namespace-name “My Namespace” --object-collection-rule-id ocid1.loganalyticsobjectcollectionrule.oc1..exampleuniqueID
同等のREST APIリファレンスについては、「ObjectCollectionRuleの削除」を参照してください。