LogEvents APIを使用したイベント・ログのアップロード
LogEvents APIを使用してイベント・ログをOracle Log Analyticsエンドポイントにプッシュする場合は、次のステップに従います。
-
JSON
にある事前定義済ペイロード形式を使用して、1つ以上のイベントをアップロードできます。さらに、APIはGZIP
およびZIP
アーカイブ形式をサポートしています。 -
各JSONの最大許容サイズは2MBです。ただし、アップロード・リクエストには、ZIPの形式で最大100の複数のJSONファイルが含まれる場合があります。
-
ログ・グループは、リクエストの範囲で適用される必須リクエスト・パラメータです。ログ・セットはオプションのパラメータであり、大量のログ・データ・セット(たとえば、毎日TBのデータ)に必要になる場合があります。
REST APIを使用してRAWログ・ファイルのアップロードを実行するステップは、オンデマンドでのログのアップロードを参照してください。
前提条件:
- ログ・フォーマットに一致する新しいログ・ソースのログ・ソース名またはOracle定義のログ・ソース名。Oracle定義ソースおよびソースの作成を参照してください。
REST APIを使用してアップロードを実行するには、ソースのタイプが「システム・イベント・メッセージ(Syslog)」、「ファイル」または「Oracle Diagnostic Logs (ODL)」である必要があります。
- ログのアクセス制御を提供するログ・グループのOCID。ログを格納するログ・グループの作成を参照してください。
- オプションで、エンティティにアップロードするログをマップする場合は、エンティティのOCID。「ログ出力リソースを表すエンティティの作成」を参照してください。
イベント・ログのアップロードに必要な権限
アップロード・タスクの実行に必要な権限のみを選択し、個々のリソース・タイプの権限を付与するか、より広範な集計レベルの権限を付与することで、ユーザーがアップロード操作を実行できるようにすることができます。したがって、ユースケースに応じて、次に示す3つのポリシー・ステートメントのセットのいずれかを選択できます。
次のIAMポリシー・ステートメントは、アップロード用のユーザー・グループに特定の権限を提供するためのものです:
allow group <group_name> to {LOG_ANALYTICS_LOG_GROUP_UPLOAD_LOGS} in compartment <log_group_compartment>
次のIAMポリシー・ステートメントは、アップロードの個々のリソース・タイプのレベルで権限を提供するためのものです:
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
は、必要な権限を付与する必要があるユーザー・グループを参照します。
イベント・ログをアップロードするためのAPI
REST APIおよび署名リクエストの使用の詳細は、REST APIおよびセキュリティ資格証明を参照してください。
uploadLogEventsFile
APIのドキュメントは、Log Analytics API - uploadLogEventsFileを参照してください。
REST APIを使用してアップロードを実行するには、ホストで次のコマンドを実行します:
oci log-analytics upload upload-log-events-file --file <Json_Event_File_Path> --log-group-id <Log_Group_OCID> --namespace-name <Tenancy_Namespace_Name> --payload-type <Payload_Type>
上記のcurlコマンドで、
-
Json_Event_File_Path: JSONイベント・ファイルのパス。JSONイベント・ファイルの形式および例の詳細は、LogEvents APIを使用してアップロードするイベント・ファイル形式を参照してください。
-
Tenancy_Namespace_Name: リクエストに使用されるOracle Log Analyticsネームスペース。
-
Log_Group_OCID: アップロードされたログがOracle Log Analyticsに格納されるログ・グループのOCID。
-
Payload_Type: デフォルトは
JSON
です。指定できる値は、JSON
、GZIP
、ZIP
です。 -
Log_Set: アップロードされたログに関連付けられているログ・セット。このパラメータはオプション。
LogEvents APIを使用してアップロードするイベント・ファイル形式
JSONペイロードの一般的な形式は次のとおりです。
{
"metadata":{ ----------------------------------------> Global (file level) metadata section to send additional metadata in field value pair format. The fields should be valid Log Analytics Fields
"Field1":"Value1",
"Field2":"Value2",
"FieldN":"ValueN"
},
"logEvents":
[ ---------------------------------------------------> Group the events (logRecords) that belong to the same logSourceName, entityId, logPath and metadata
{
"metadata":{ --------------------------------> Group level metadata section
"FieldA”:”ValueA”,
"FieldB”:”ValueB”,
"FieldN":"ValueN"
},
"entityId”:”<EntityOCID>“, -------------------> Log Analytics Entity OCID
"logSourceName”:”<LogSourceName>”, -----------> Log Analytics LogSource Name (Mandatory)
"logPath”:”<LogPath>”, -----------------------> logPath or logFileName to associate the log records with.
"logRecords": -------------------------------> Array of logRecords/logEntries (Mandatory)
[
"logRecord1", ---------------------------> String representation of logRecord. In case the logRecord is of JSON type, it has to be encoded.
"logRecord2",
"logRecordN"
]
},
{ … … … }
]
}
メタデータ・セクションは、実際のログ・レコードの一部ではない情報でログをエンリッチするためのものです。
次に、JSONペイロードの例を示します。
{
"metadata":{
"Error ID":"0",
"Environment":"dev",
"Client Host Region":"IST"
},
"logEvents":
[
{
"metadata":{
"Error ID":"1",
"Environment":"prod",
"Client Host Region":"PST"
},
"entityId":"ocid1.loganalyticsentity.oc1.iad.amaaaaa...........",
"logSourceName":"Linux Syslog Logs",
"logPath":"/var/log/messages",
"logRecords":
[
“Oct 20 2023 04:02:37 hostA syslogd 1.4.1: restart.",
“Oct 20 2023 04:02:38 hostB syslogd 1.4.1: shutdown."
]
}
]
}