OpenTelemetryログのアップロード

OpenTelemetryを使用してインストゥルメントされたアプリケーションまたはインフラストラクチャのログをOracle Log Analyticsに収集する場合は、UploadOtlpLogs APIを使用してアップロードします。

APIは現在、JSON形式のOpenTelemetryログ(OTLP)をサポートしています。このAPIを使用して指定された形式でアップロードされたOTELログは、デフォルトでOracle定義のOpenTelemetryログ・ログ・ソースを使用して処理されます。JSON形式のOTLPログの詳細は、を参照してください。

前提条件

OTELログをアップロードする前に、次の必須前提条件を満たしていることを確認してください。

トピック:

ユーザーによるOpenTelemetryログのアップロードの許可

要件に基づいて、次のいずれかのIAMポリシー・ステートメントを追加します:

  • 次のIAMポリシー・ステートメントは、OTELログをアップロードするための権限を指定されたユーザー・グループに付与するためのものです:

    allow group <group_name> to {LOG_ANALYTICS_LOG_GROUP_UPLOAD_LOGS} in compartment <log_group_compartment>
  • 次のIAMポリシー・ステートメントは、アップロードを実行するための個々のリソース・タイプloganalytics-log-groupのレベルで権限を付与するためのものです:

    allow group <group_name> to use loganalytics-log-group in compartment <log_group_compartment>
  • 次のIAMポリシー・ステートメントは、アップロードを実行するための権限をOracle Log Analytics集計リソース・レベルで提供するためのものです:

    allow group <group_name> to use loganalytics-resources-family in tenancy/compartment

前述のすべてのポリシー・ステートメントのgroup_nameは、必要な権限を付与する必要があるユーザー・グループを参照します。

OpenTelemetryログをアップロードするためのAPI

REST APIおよび署名リクエストの使用の詳細は、REST APIおよびセキュリティ資格証明を参照してください。

APIドキュメントについては、Log Analytics API- UploadOtlpLogsを参照してください。

OTELログをアップロードするためのCLIコマンドの例を次に示します。

oci log-analytics upload upload-otlp-logs --file <Log_File_Path> --opc-meta-loggrpid <Log_Group_OCID> --namespace-name <Service_Namespace>

前述のコマンドで:

  • Log_File_Path: ログ・ファイルのパス。
  • Service_Namespace: ログをアップロードする必要があるテナンシのネームスペース。値を取得するステップは、Log Analyticsサービスの詳細の表示を参照してください。
  • Log_Group_OCID: ログのアクセス制御を提供するログ・グループのOCID。

Log AnalyticsでのOTEL属性の処理

属性は、リソース、スコープ、個々のログ・レコードの3つのレベルで設定できます。セット属性は、Log Analyticsの「属性」フィールドに対して「ログ・レコード」ごとに格納されます。カスタム属性oci_la_attribute_mappingを使用して、各属性を異なるLog Analyticsフィールドに抽出することもできます。

トピック:

シナリオ1: デフォルトのOTLPログ形式とその抽出

次のOTLP形式のログの例を考えます。

{
    "resourceLogs": [
        {
            "resource": {
                "attributes": [
                    {
                        "key": "deployment.environment",
                        "value": {
                            "stringValue": "development"
                        }
                    },
                    {
                        "key": "service.name",
                        "value": {
                            "stringValue": "SampleLogApp"
                        }
                    },
                    {
                        "key": "service.version",
                        "value": {
                            "stringValue": "0.0.2"
                        }
                    }
                ]
            },
            "scopeLogs": [
                {
                    "scope": {
                        "name": "sample-scope-info",
                        "version": "1.0.0"
                    },
                    "logRecords": [
                        {
                            "timeUnixNano": "1758112881118549000",
                            "severityNumber": 10,
                            "severityText": "INFO",
                            "body": {
                                "stringValue": "Processed request successfully"
                            },
                            "attributes": [
                                {
                                    "key": "event_type",
                                    "value": {
                                        "stringValue": "event-info"
                                    }
                                },
                                {
                                    "key": "os",
                                    "value": {
                                        "stringValue": "linux"
                                    }
                                },
                                {
                                    "key": "custom_attribute",
                                    "value": {
                                        "stringValue": "some_value"
                                    }
                                },
                                {
                                    "key": "dropped",
                                    "value": {
                                        "stringValue": "value"
                                    }
                                },
                                {
                                    "key": "otel.dropped_attributes_count",
                                    "value": {
                                        "intValue": "5"
                                    }
                                },
                                {
                                    "key": "id",
                                    "value": {
                                        "stringValue": "123"
                                    }
                                }
                            ],
                            "traceId": "0102030405060708090a0b0c0d0e0f10",
                            "spanId": "0102030405060708"
                        }
                    ]
                }
            ]
        }
    ]
}

前述の例の属性は、次のようにOracle Log Analyticsの「属性」フィールドに抽出されます。

{
  "service.version":"0.0.2",
  "os":"linux",
  "dropped":"value",
  "id":"123",
  "custom_attribute":"some_value",
  "otel.dropped_attributes_count":"5"
}

シナリオ2: 特殊属性oci_la_attribute_mappingを使用した属性のカスタム・マッピング

たとえば、次の属性をOracle Log Analyticsフィールドにマップするには:

  • service.name: フィールド「アプリケーション」
  • deployment.environmentから「環境」フィールド
  • event_type: フィールド「イベント・タイプ」

oci_la_attribute_mappingは、次のように定義する必要があります。

[{"attributeName":"service.name","laFieldName":"Application"},{"attributeName":"deployment.environment","laFieldName":"Environment"},{"attributeName":"event_type","laFieldName":"Event Type"}]

OTELログに組み込まれている前述のカスタム・マッピングの例を次に示します。

{
    "resourceLogs": [
        {
            "resource": {
                "attributes": [
                    {
                        "key": "deployment.environment",
                        "value": {
                            "stringValue": "development"
                        }
                    },
                    {
                        "key": "service.name",
                        "value": {
                            "stringValue": "SampleLogApp"
                        }
                    },
                    {
                        "key": "service.version",
                        "value": {
                            "stringValue": "0.0.2"
                        }
                    },
                    {
                        "key": "oci_la_attribute_mapping",
                        "value": {
                            "stringValue": "[{\"attributeName\":\"service.name\",\"laFieldName\":\"Application\"},{\"attributeName\":\"deployment.environment\",\"laFieldName\":\"Environment\"},{\"attributeName\":\"event_type\",\"laFieldName\":\"Event Type\"}]"
                        }
                    }
                ]
            },
            "scopeLogs": [
                {
                    "scope": {
                        "name": "sample-scope-info",
                        "version": "1.0.0"
                    },
                    "logRecords": [
                        {
                            "timeUnixNano": "1758112881118549000",
                            "severityNumber": 10,
                            "severityText": "INFO",
                            "body": {
                                "stringValue": "Processed request successfully"
                            },
                            "attributes": [
                                {
                                    "key": "event_type",
                                    "value": {
                                        "stringValue": "event-info"
                                    }
                                },
                                {
                                    "key": "os",
                                    "value": {
                                        "stringValue": "linux"
                                    }
                                },
                                {
                                    "key": "custom_attribute",
                                    "value": {
                                        "stringValue": "value"
                                    }
                                },
                                {
                                    "key": "dropped",
                                    "value": {
                                        "stringValue": "value"
                                    }
                                },
                                {
                                    "key": "otel.dropped_attributes_count",
                                    "value": {
                                        "intValue": "5"
                                    }
                                },
                                {
                                    "key": "id",
                                    "value": {
                                        "stringValue": "123"
                                    }
                                }
                            ],
                            "traceId": "0102030405060708090a0b0c0d0e0f10",
                            "spanId": "0102030405060708"
                        }
                    ]
                }
            ]
        }
    ]
}

シナリオ3: 複雑な属性マッピングの処理

配列属性(複数値):

配列(リスト)値を持つ属性の場合、マップされたOracle Log Analyticsフィールドで、次のような複数値データ型がサポートされていることを確認してください。

{"key": "teams", "value": {"arrayValue": {"values": [{"stringValue": "Alpha"}, {"stringValue": "Beta"}]}}}

マップ属性(ネストされたキー値):

マップ(オブジェクト)属性の場合は、Oracle Log Analyticsフィールドにマップする子キーを指定します。

リスト属性の例:

{
    "key": "system",
    "value": {
        "kvlistValue": {
            "values": [
                {
                    "key": "version",
                    "value": {
                        "stringValue": "1.0"
                    }
                },
                {
                    "key": "build",
                    "value": {
                        "stringValue": "2.0"
                    }
                },
                {
                    "key": "env",
                    "value": {
                        "stringValue": "test"
                    }
                }
            ]
        }
    }
}

前述のリスト属性に対するoci_la_attribute_mappingのマッピングの例:

[{"attributeName":"system","childAttributeName":"env","laFieldName":"Environment"}]