对于AI助手:文档索引位于 https://www.mongodb.com/zh-cn/docs/llms.txt — 通过将 .md 附加到任何URL路径,可以获得所有页面的降价版本。
Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
MongoDB Branding Shape
Click here >
Docs 菜单

将日志导出到 AWS S3 存储桶

您可以将 M10+ Atlas集群配置为每分钟将系统日志导出到 AWS S3 存储桶。

这种集成允许您:

  • 指定要导出到 S3 存储桶的 MongoDB日志文件。Atlas支持导出以下日志类型:

    • mongod

    • mongos

    • mongod-audit

    • mongos-audit

  • 最多设置 10 个导出路径,允许您将日志同时导出到多个 AWS S3 存储桶。

  • 通过配置与 S3 多区域访问点 (MRAP) ARN 的集成,将日志发送到 MRAP。您目前只能使用Atlas 管理 API配置 MRAP ARN。不支持 MRAP 别名。

重要

日志可能包含敏感信息(包括 PII)。您负责存储和处理 AWS S3 存储桶中的日志。要让Atlas在导出日志之前编辑某些信息,联系MongoDB支持部门

要将日志导出到 AWS S3 存储桶,您必须拥有Atlas的 Project OwnerOrganization Owner访问权限。

  • 每台Atlas托管每天通常会生成 1 GB的日志。导出日志会产生数据传输费用。确切的数据传输费用因目的地、地区和云提供商而异。

  • 网络问题或重试可能会导致 AWS S3 存储桶中出现重复的日志条目。

  • AWS IAM角色和 S3 存储桶必须属于同一 AWS 帐户。

您需要:

  • An AWS IAM角色,具有sts:AssumeRole,用于授予Atlas访问权限您的AWS资源的权限,并将最大会话持续时间设立为 12 小时。

  • 现有的 AWS S3 存储桶。

  • 运行MongoDB 7.0 或更高版本的 M10+ Atlas 集群。

要将日志导出到 AWS S3 存储桶,请完成以下步骤。

1
  1. 如果尚未显示,请从导航栏上的 Organizations 菜单中选择包含所需项目的组织。

  2. 如果尚未显示,请从导航栏的Projects菜单中选择所需的项目。

  3. 在侧边栏中,单击 图标 Project Overview 旁边的图标。

显示项目设置页面。

2

单击 Integrations 标签页。

显示“项目集成”页面。

3
4
  1. Authorize an AWS IAM Role 下拉列表中,选择您的 ARN。要添加 ARN,请参阅设置统一 AWS 访问。

  2. 单击 Next(连接)。

5
  1. Bucket Name 字段中,输入您的 AWS 帐户中显示的 S 存储桶的名称。3

  2. Prefix 字段中,输入目录名称以组织 S3 存储桶的内容。示例,输入 logs/ 会在 S3 存储桶中创建一个 logs目录,用于存储导出的日志。

  3. Log Type 下,选择要导出的日志类型。

    • MongoDB Logs 每个mongod服务器进程写入的诊断日志。它们记录服务器的初创企业和关闭、配置、连接、慢速查询、复制、分片活动和其他操作事件。

    • MongoDB Audit Logs Atlas 审核 mongod 发出的日志,用于追踪系统事件操作,例如身份验证尝试、授权检查、角色更改和其他与安全相关的操作。这些日志与主MongoDB日志是分开的。

    • MongoDB Router Logs 分片集群中每个mongos 路由器进程写入的诊断日志。它们捕获特定于路由器的行为,例如将查询路由到分片、分片元数据刷新和一般进程诊断。

    • MongoDB Router Audit Logs Atlas 审核mongos路由器进程发出的日志,在分片的部署中从路由器的角度记录相同类型的 Atlas 审核系统事件。

    要学习;了解更多信息,请参阅查看和下载MongoDB日志。

  4. (可选)如果要加密 S3 存储桶中的日志,请在 KMS Key字段中输入您的 AWS Key Management Service ( KMS ) 密钥 ARN。要学习;了解更多信息,请参阅使用 AWS KMS管理客户数密钥。

  5. 单击 Next(连接)。

6
  1. 单击 复制Atlas生成的访问权限策略并保存在本地,文件名为:AtlasS3LogExportPolicy

  2. 单击 复制Atlas生成的CLI命令,然后在终端中运行该命令,将访问权限策略附加到您的 AWS IAM 角色。

  3. 在启用导出之前,单击 Validate 以确认您的配置和凭证正确无误。

7

Atlas将日志作为具有结构化元数据的JSON对象导出到 S3 存储桶。每个日志条目都包含原始MongoDB日志消息以及标识源集群、托管和日志类型的其他上下文字段。

导出的日志使用结构化格式,与传统的基于推送的日志导出 (PBLE) 系统不同。这种新格式为日志基础架构中的日志路由、筛选和分析提供了增强的元数据。

每个导出的日志条目都是一个包含以下顶级字段的JSON对象:

字段
说明

service.name

标识服务类型的字符串。默认设立为 mongodb

log

JSON编码字符串形式的原始MongoDB日志消息。其中包含来自MongoDB的结构化日志数据,包括 t(时间戳)、s(严重性)、c(组件)、id(消息ID)、ctx(上下文)、msg(消息文本)和 attr(属性)。

host.name

生成日志条目的MongoDB托管的完全限定域名(例如,atlas-cluster-shard-00-00.example.mongodb.net)。

mongodb.group.id

包含集群的Atlas项目ID (也称为群组 ID(group ID) )。

mongodb.cluster.name

Atlas使用的内部集群标识符。

mongodb.customer.cluster.name

Atlas用户界面中显示的用户定义的集群名称。

mongodb.log.type

正在导出的日志类型。可能的值:mongodmongosmongod-auditmongos-audit

timestamp

生成日志条目时的 ISO 8601 时间戳。

以下示例显示了典型的导出日志条目:

{
"service.name": "mongodb",
"log": "{\"t\":{\"$date\":\"2026-05-19T21:58:00.309+00:00\"},\"s\":\"I\",\"c\":\"NETWORK\",\"id\":6723804,\"ctx\":\"conn928\",\"msg\":\"Ingress TLS handshake complete\",\"attr\":{\"durationMillis\":26}}",
"host.name": "atlas-cluster-shard-00-00.nzmz4k.mongodb.net",
"mongodb.group.id": "682f18ee72a6a02c8182cab3",
"mongodb.cluster.name": "atlas-cluster",
"mongodb.customer.cluster.name": "Cluster0",
"mongodb.log.type": "mongod",
"timestamp": "2026-05-19T21:58:00.309Z"
}

log字段包含原始MongoDB日志消息。解析时,它会显示标准MongoDB日志消息结构:

{
"t": {"$date": "2026-05-19T21:58:00.309+00:00"},
"s": "I",
"c": "NETWORK",
"id": 6723804,
"ctx": "conn928",
"msg": "Ingress TLS handshake complete",
"attr": {
"durationMillis": 26
}
}

注意

attr对象内的字段顺序可能因日志条目而异,并且可能与传统 PBLE 格式不同。您的日志解析工具不应依赖 attr 中的字段顺序。

与传统的基于推送的日志导出 (PBLE) 系统相比,外部日志接收器格式进行了几项更改:

更改
说明

嵌套日志内容

MongoDB日志消息现在以JSON编码字符串的形式嵌套在 log字段下,而不是位于顶层。这需要额外的JSON解析步骤来提取日志消息字段。

其他元元数据字段

新的顶级字段提供有关日志源的上下文:service.namehost.namemongodb.group.idmongodb.cluster.namemongodb.customer.cluster.namemongodb.log.typetimestamp

日志条目排序

日志条目在 S3 中出现的顺序可能与 PBLE 中出现的顺序不同。请勿依赖日志条目排序进行时态分析。使用 log 内容中的 timestamp字段或 t.$date字段进行基于时间的准确处理。

属性字段排序

attr对象中的字段顺序可能与 PBLE 不同。将 attr 作为JSON对象进行解析,而不依赖于字段顺序。

处理导出的日志时:

  • 两级JSON解析:首先解析外部JSON对象以访问权限元数据字段,然后将 log字段解析为JSON以访问权限MongoDB日志消息。

  • 字段提取:要提取特定的MongoDB日志字段(如msgcattr ),请先解析log 字段。

  • 时间戳处理:顶级timestamp 字段使用 ISO8601 格式,而t.$date log内容中的 字段可能使用 MongoDB 的扩展JSON格式。两者代表同一时间。

  • 集群标识:使用mongodb.customer.cluster.name 按Atlas 用户界面中显示的集群名称过滤日志。mongodb.cluster.name 字段包含一个内部标识符。

为确保您在Atlas停止将日志导出到外部接收器时收到通知,请配置项目级警报:

1
  1. 如果尚未显示,请从导航栏上的 Organizations 菜单中选择包含所需项目的组织。

  2. 如果尚未显示,请从导航栏的Projects菜单中选择所需的项目。

  3. 单击导航栏中的 Alerts 图标。

  4. 单击 Project 标题下的 Alerts

将显示项目警报页面。

2
3

Condition/Metric下拉菜单中,选择Log export is unable to export logs on this host

4
  1. Add Notification Method 部分,从角色列表中进行选择。

  2. Add Notifier 下拉菜单中,从下表所述的选项中进行选择。

    通知选项
    说明

    Atlas 项目

    通过电子邮件或短信向项目中具有特定角色的用户发送该警报。

    Atlas 项目是默认警报接收方。您可以配置发送警报的角色和发送方式。您无法添加第二个 Atlas 项目作为接收人。

    仅当 Atlas 项目当前不在收件人列表中时,它才会作为 Add(添加)列表中的一个选项提供。

    1. Select Role(s)(选择角色)复选框中选择应接收警报的项目角色,或选择 All Roles(所有角色),这样项目中的所有用户都会接收到警报。

    2. 选择 SMS(短信)以将这些警报发送到在“Account”(账户)页面上为每个 Atlas 项目用户配置的手机号码上。

    3. 选择 Email(电子邮件)以将这些警报发送到在“Account”(帐户)页面上为每个 Atlas 项目用户配置的电子邮件地址。默认情况下,Email(电子邮件)处于选中状态。

    Atlas 组织

    通过电子邮件或短信向组织中具有特定角色的用户发送该警报。

    1. Select Role(s) 复选框中选择应接收警报的组织角色,或为组织中的所有用户选择 All Roles 以接收警报。

    2. 选择 SMS(短信)以将这些警报发送到在“Account”(帐户)页面上为每个 Atlas 组织用户配置的手机号码。

    3. 选择 Email(电子邮件)以将这些警报发送到在“Account”(账户)页面上为每个 Atlas 组织用户配置的电子邮件地址。默认情况下,Email(电子邮件)处于选中状态。

    Atlas 用户

    通过电子邮件或短信向指定 Atlas 用户发送警报。

    1. 选择 SMS 以将这些警报发送到在“Account”(帐户)页面上为 Atlas 用户配置的手机号码上。

    2. 选择 Email(电子邮件)以将这些警报发送到在“Account”(帐户)页面上为 Atlas 用户配置的电子邮件地址。默认情况下,Email(电子邮件)处于选中状态。

    电子邮件

    将警报发送到一个电子邮件地址。

    短信

    将该警报发送到手机号码。Atlas 删除所有标点符号和字母,仅使用数字。如果您不在美国或加拿大,请包含 011国家代码,因为 Atlas 使用美国的 Twilio 发送短信。如果您使用的是非美国电话号码,则可以使用 Google Voice 电话号码。

    例如,在电话号码前输入 01164 以将警报发送到新西兰的手机号码。

    Slack

    将警报发送到Slack渠道。输入渠道名称以及API令牌或 Bot 令牌。要创建API令牌,请参阅https://api.slack.com/webSlack帐户中的页面。要学习;了解有关Slack中 Bot 用户的更多信息,请参阅 https://api.slack.com/bot-users.

    创建需要 API 或集成密钥的通知后,当您执行以下操作时,该密钥将显示为部分经过校订的:

    • 通过 Atlas UI 查看或编辑警报。

    • 通过 Atlas Administration API 查询通知警报。

    PagerDuty

    PagerDuty 账户发送警报。仅输入 PagerDuty 服务密钥。直接在 PagerDuty 中定义升级规则和警报分配。

    用户只能从 PagerDuty 仪表盘确认 PagerDuty 警报。

    所有新的 PagerDuty 密钥都使用事件 API v2.

    如果您有 事件 API v1 密钥,则可以继续在 Atlas 中使用该密钥。

    创建需要 API 或集成密钥的通知后,当您执行以下操作时,该密钥将显示为部分经过校订的:

    • 通过 Atlas UI 查看或编辑警报。

    • 通过 Atlas Administration API 查询通知警报。

    Datadog

    将警报作为 Datadog 事件发送到 Datadog 帐户。

    首次打开警报时,Atlas 会将警报作为“错误”事件发送。后续更新将作为“信息”事件发送。当警报关闭时,Atlas 会发送“成功”事件。

    1. API Key 下输入 DataDog API 密钥,然后单击 Validate Datadog API Key

    2. 输入您的 API 地区。

      在 Atlas 用户界面中,Atlas 支持以下 Datadog 地区:

      • US1

      • US3

      • US5

      • EU1

      • AP1

      Datadog 默认使用 US1

      要学习;了解有关 DataDog 地区的更多信息,请参阅 DataDog 站点。

      创建需要 API 或集成密钥的通知后,当您执行以下操作时,该密钥将显示为部分经过校订的:

      • 通过 Atlas UI 查看或编辑警报。

      • 通过 Atlas Administration API 查询通知警报。

    3. (可选)要启用数据库指标跟踪,请将 Send Database Metrics 切换为 On

    4. (可选)要启用集合延迟指标跟踪,请将 Send Collection Latency Metrics 切换为 On

    5. (可选)要启用查询结构指标跟踪,请将 Send Query Shape Metrics 切换为 On

    6. 单击 Save(连接)。

    VictorOps

    VictorOps 账户发送警报。

    输入来自 VictorOps 的字母数字 API 密钥 ,集成 VictorOps 终结点以获取警报。向 API 密钥添加破折号,使其与 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx 格式匹配。例如,489f7he7-790b-9896-a8cf-j4757def1161。输入可选的路由密钥,将警报路由到特定的 VictorOps 群组。单击 Post Test Alert 测试 VictorOps 配置。直接在 VictorOps 中定义升级和路由规则。

    此选项仅适用于需要确认的警报。您可以从 Atlas 中的第三方监控服务接收信息警报。但是,您必须在外部服务中解决这些警报。确认来自 VictorOps 仪表盘的 VictorOps 警报。

    创建需要 API 或集成密钥的通知后,当您执行以下操作时,该密钥将显示为部分经过校订的:

    • 通过 Atlas UI 查看或编辑警报。

    • 通过 Atlas Administration API 查询通知警报。

    Opsgenie

    将警报发送到 Opsgenie 帐户。仅输入 Opsgenie API 密钥。直接在 Opsgenie 中定义升级规则和警报分配。

    此选项仅适用于需要确认的警报。您可以从 Atlas 中的第三方监控服务接收信息警报。但是,您必须在外部服务中解决这些警报。确认来自 Opsgenie 仪表盘的 Opsgenie 警报。

    创建需要 API 或集成密钥的通知后,当您执行以下操作时,该密钥将显示为部分经过校订的:

    • 通过 Atlas UI 查看或编辑警报。

    • 通过 Atlas Administration API 查询通知警报。

    Microsoft Teams

    将警报发送到 Microsoft Teams 通道作为自适应卡

    要将警报通知发送到 Microsoft Teams 通道,您必须创建 Microsoft Teams 传入 Webhook。创建 Webhook 后,您可以使用自动生成的 URL 在 Atlas 中配置 Microsoft Teams 集成。

    要设置集成,请参阅与 Microsoft Teams 集成

    查看或编辑 Microsoft Teams 通知的警报时,URL 显示为已部分编辑。

    Webhook

    向端点发送 HTTP POST 请求以进行编程处理。请求正文包含一个 JSON 文档,该文档使用与 Atlas 管理 API 警报资源相同的格式。

    只有在 Ingetrations(集成)页面上配置了 Webhook 设置后,此选项才可用。

    当您查看或编辑 Webhook 通知的警报时,URL 会显示为部分遮蔽,而密钥显示为完全遮蔽。

    1. Webhook URL 字段中,为基于 Webhook 的警报指定目标 URL

    2. (可选)如果您设置带有密钥的 Webhook 集成,则可在 Webhook Secret 字段中指定基于 Webhook 的警报的身份验证密钥。

  3. Recurrence 部分中,将警报设立为在日志导出失败条件持续时间超过 60 分钟时触发,并每 10080 分钟(7 天)重新发送,直到问题得到解决。

    这样,如果日志导出失败持续较长时间,您将收到通知,同时避免针对暂时性问题发出过多通知。

5

有关配置警报的更多详细信息,请参阅配置警报