对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。
Docs 菜单

将操作日志事件导出到外部工具

您可以流事件从Atlas操作日志流式传输到外部工具,包括 Datadog、Splunk、客户托管的云存储以及任何与 OpenTelemetry (OTel) 兼容的目标位置。导出事件可实现集中Atlas 审核记录、长期保留以及与现有监控和可观察性工具的集成。

您可以在以下级别配置事件导出:

  • 项目:从 Project Activity Feed 导出事件。

  • 组织:从 Organization Activity Feed 导出事件。

与系统日志导出不同,事件导出不需要 M10+集群。事件导出支持所有层级的集群,包括免费和共享层集群。

可用目标取决于您配置的是项目集成还是组织。项目事件导出支持所有日志导出目标。在初始发布中,组织事件导出仅支持与 OTel 兼容的目标。

要导出项目级事件,请按照目标的配置步骤进行操作,并在出现提示时选择 Log Type 下的 Events:

您可以在同一集成中将 Events 与系统日志类型结合使用,或者为日志和事件创建单独的集成。

组织级别集成仅导出事件,仅支持与 OTel 兼容的目标。要配置组织级别的集成,请参阅导出组织操作日志事件。

要以编程方式配置事件导出,请使用Atlas Administration API的日志集成端点。要导出事件,请将 logTypes设立为包含 EVENTS。

方法
端点
说明

POST

/api/atlas/v2/groups/{groupId}/logIntegrations

创建一个项目级日志集成。

GET

/api/atlas/v2/groups/{groupId}/logIntegrations

返回所有项目级别的日志集成。

GET

/api/atlas/v2/groups/{groupId}/logIntegrations/{id}

返回一个项目级别的日志集成。

PUT

/api/atlas/v2/groups/{groupId}/logIntegrations/{id}

更新一个项目级日志集成。

DELETE

/api/atlas/v2/groups/{groupId}/logIntegrations/{id}

删除一个项目级别的日志集成。

POST

/api/atlas/v2/orgs/{orgId}/logIntegrations

创建一个组织级别的日志集成。

GET

/api/atlas/v2/orgs/{orgId}/logIntegrations

返回所有组织级别的日志集成。

GET

/api/atlas/v2/orgs/{orgId}/logIntegrations/{id}

返回一个组织级别的日志集成。

PUT

/api/atlas/v2/orgs/{orgId}/logIntegrations/{id}

更新一个组织级别的日志集成。

DELETE

/api/atlas/v2/orgs/{orgId}/logIntegrations/{id}

删除一个组织级别的日志集成。

注意

组织级端点在Atlas Administration API预览版中可用。要使用它们,请将 Accept 标头设立为 application/vnd.atlas.preview+json。

组织级集成仅支持OTEL_LOG_EXPORT 集成类型和 EVENTS日志类型。

响应编辑标头值。更新集成时,原封不动地发回编辑后的值会保留存储的值。仅在更改标头值时才提供完整标头值。

以下示例创建了一个项目级 OpenTelemetry 集成,用于导出操作日志事件:

curl --header "Authorization: Bearer {ACCESS-TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/vnd.atlas.2025-03-12+json" \
--include \
--request POST "https://cloud.mongodb.com/api/atlas/v2/groups/{PROJECT-ID}/logIntegrations?pretty=true" \
--data '{
"type": "OTEL_LOG_EXPORT",
"logTypes": ["EVENTS"],
"otelEndpoint": "https://otel-collector.example.com:4318/v1/logs",
"otelSuppliedHeaders": [
{
"name": "Authorization",
"value": "Bearer token123"
}
]
}'

以下示例创建了一个组织级 OpenTelemetry 集成,用于导出操作日志事件:

curl --header "Authorization: Bearer {ACCESS-TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/vnd.atlas.preview+json" \
--include \
--request POST "https://cloud.mongodb.com/api/atlas/v2/orgs/{ORG-ID}/logIntegrations?pretty=true" \
--data '{
"type": "OTEL_LOG_EXPORT",
"logTypes": ["EVENTS"],
"otelEndpoint": "https://otel-collector.example.com:4318/v1/logs",
"otelSuppliedHeaders": [
{
"name": "Authorization",
"value": "Bearer token123"
}
]
}'

端点返回创建的集成:

{
"id": "66d9f3e1a2b3c4d5e6f70819",
"type": "OTEL_LOG_EXPORT",
"logTypes": ["EVENTS"],
"otelEndpoint": "https://otel-collector.example.com:4318/v1/logs",
"otelSuppliedHeaders": [
{
"name": "Authorization",
"value": "<redacted>"
}
]
}

Atlas通过 OTLP/ HTTP将事件作为JSON有效负载传递到目的地。每个导出的事件都是一个 OTLP日志记录。该记录的资源包括设立为 mongodb-atlas-events 的 service.name 属性,该属性标识操作日志事件流,以便 OTel 收集器可以将这些事件与其他遥测数据分开路由。 Atlas从导出的事件中省略具有 null 值的属性。

每个导出的事件都包含以下字段:

字段
说明

timeUnixNano

事件发生的时间,以自 Unix 纪元以来的纳秒为单位。

severityText

文本形式的事件严重性,例如 INFO。对应于操作日志中显示的事件严重性。

severityNumber

事件的严重性,以 OTLP 严重性编号枚举,例如 SEVERITY_NUMBER_INFO。

body.stringValue

JSON编码的事件对象。包含事件ID (_id)、事件类型 (eventType)、自 Unix 纪元以来的创建时间(createdDate)、项目ID (projectId,如果适用)以及特定于事件的详细信息 (eventPayload)。 source对象可标识事件的发起者,例如 USER 的 sourceType 以及具有 username 的 sourceInfo对象。

mongodb.event.id 属性

事件的唯一标识符。使用此字段对事件进行去重。

mongodb.event.type 属性

mongodb.event.payload.encoding 属性

以 body.stringValue 为单位对事件有效负载进行编码,例如 json。

mongodb.org.id 属性

发生事件的组织ID 。始终在组织级别导出时显示。出席一些项目级别的活动。

mongodb.project.id 属性

发生事件的项目的ID 。始终在项目级导出中显示。出席一些组织级别的活动。

以下示例显示了导出的项目事件:

{
"timeUnixNano": "1788896817574000000",
"severityNumber": "SEVERITY_NUMBER_INFO",
"severityText": "INFO",
"body": {
"stringValue": "{\"_id\":\"6aa06631ba29fc2b0f206c32\",\"eventType\":\"/events/mms/alerts/alert_config_added_audit\",\"projectId\":\"62abb98d95a82610b74debc5\",\"createdDate\":1788896817574,\"resources\":[],\"eventPayload\":\"{\\\"targetAlertConfigId\\\": \\\"6aa06631ba29fc2b0f206c30\\\", \\\"targetAlertConfigEventType\\\": \\\"HOST_DOWN\\\", \\\"targetAlertConfigType\\\": \\\"HOST\\\"}\",\"source\":{\"sourceType\":\"USER\",\"sourceInfo\":{\"username\":\"Atlas Admin\"}}}"
},
"attributes": [
{
"key": "mongodb.event.id",
"value": { "stringValue": "6aa06631ba29fc2b0f206c32" }
},
{
"key": "mongodb.event.type",
"value": { "stringValue": "/events/mms/alerts/alert_config_added_audit" }
},
{
"key": "mongodb.project.id",
"value": { "stringValue": "62abb98d95a82610b74debc5" }
},
{
"key": "mongodb.event.payload.encoding",
"value": { "stringValue": "json" }
}
]
}
目的地
限制

Datadog

每个请求Datadog 最多接受 5 MB 和 1,000 事件。

Splunk

Splunk 通过HTTP事件收集器 (HEC) 分批摄取事件。如果批处理中的一个事件格式不正确,Splunk 将拒绝整个批处理。

OpenTelemetry

交付取决于 OTel 收集器的可用性和配置。端点必须使用带有由公共证书颁发机构 (CA) 签名的证书的 HTTPS。端点 URL 最多可为 2,048 个字符。您最多可以配置 10 个标头,总大小最大为 2 KB。

事件导出没有单独的 SKU 或按功能收费。但是,导出事件可能会产生数据传输费用,该费用因目的地、地区和云提供商而异。要学习;了解更多信息,请参阅数据传输成本。