Docs 菜单
Docs 主页
/ /

将日志转发到服务

您可以配置日志转发器,以自动将触发和函数服务器端日志存储在MongoDB集合中或将其发送到外部服务。 您还可以在创建日志时单独转发日志,或批处理以减少开销。

日志转发器由以下组件组成:

  • 控制日志转发方式和位置的动作

  • 用于控制转发哪些日志的过滤

  • 控制日志是单独转发还是分批转发的策略

如果您需要执行以下任一操作,请考虑设置日志转发器:

  • 日志存储时间超过 10 天的保留期。

  • 将日志集成到外部日志记录服务中。

  • 访问MongoDB Search、Online 存档和Charts中的日志。

1

要创建日志转发器:

在 Atlas 中,转到 Triggers 页面。

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

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

  3. 在侧边栏中,单击 Streaming Data 标题下的 Triggers

显示触发器页面。

  1. 单击 View All Apps 按钮。

  2. 单击包含要转发其日志的触发或函数的应用。

  3. 前往 Logs 页面。

  4. 选择 Forwarding 标签页。

  5. 单击 Create a Log Forwarder 按钮。

  6. 为日志转发器指定唯一名称。

要创建新的日志转发器,请将新的配置文件添加到应用的 log_forwarders目录中。 文件名应与配置的name字段中的值匹配。

/log_forwarders/<name>.json
{
"name": "<name>"
}
2

您可以转发所有触发或函数日志,也可以仅将子集发送到目标集合或服务。 您可以通过为日志日志定义筛选器(例如函数、触发器等)和状态(即成功或错误),从而调用转发器的动作。

Log Type 下拉列表中选择要转发的一种或多种日志类型。然后,在 Log Status 下拉列表中选择要转发的一个或多个状态。

指定转发器要匹配和转发的一种或多种类型以及一种或多种状态:

/log_forwarders/<name>.json
{
"name": "<name>",
"log_types": [ "<type>", ... ],
"log_statuses": [ "<status>", ... ]
}

您可以转发以下日志类型:

  • auth

  • endpoint

  • function

  • graphql

  • push

  • schema

  • service

  • trigger

  • trigger_error_handler

您可以转发以下日志状态:

  • error

  • success

重要

仅当过滤中指定了日志的类型状态时,日志转发器才会转发给定的日志。

例如,假设有一个转发器筛选状态为errortriggers日志。

筛选器转发以下日志:

{ "type": "triggers", "status": "error", ... }

筛选器不会转发以下日志:

{ "type": "triggers", "status": "success", ... }
{ "type": "functions", "status": "error", ... }
3

您可以将多个日志合并到单个批处理请求中,以减少开销。您选择的批处理策略决定了日志转发器如何对日志进行分组。

您可以选择以下批处理策略:

  • 无批处理:日志转发器在发生相应请求时单独转发日志。

  • 批处理:日志转发器在文档发生时将其分组为一个批处理。每个批处理最多可包含 100 个日志条目。当批处理已满时,日志转发器会在单个请求中转发整个批处理。无论当前批处理中的日志数量有多少,日志转发器至少每分钟转发一次日志。

要配置批处理,请选择No batchBatching策略。

要配置批处理,请在policy字段中指定策略类型,即singlebatch

/log_forwarders/<name>.json
{
"name": "<name>",
"log_types": [ "<type>", ... ],
"log_statuses": [ "<status>", ... ],
"policy": { "type": "<single|batch>" }
}
4

日志转发器可以自动将日志存储在链接的 MongoDB 集合中,或调用将日志发送到外部服务的自定义函数。

要将日志存储在集合中,请选择To Collection操作并输入应保存转发日志的关联集群、数据库和集合的名称。

要将日志存储在集合中,请指定类型为collectionaction ,其中包括应保存转发日志的关联集群、数据库和集合的名称。

/log_forwarders/<name>.json
{
"name": "<name>",
"log_types": [ "<type>", ... ],
"log_statuses": [ "<status>", ... ],
"policy": { "type": "<single|batch>" },
"action": {
"type": "collection",
"data_source": "<data source name>",
"database": "<database name>",
"collection": "<collection name>"
}
}

要将日志转发到外部服务,请 写入一个函数,该函数接受日志对象大量并通过API、SDK 或库调用该服务。

注意

根据批处理策略和日志频率,日志转发器可能会使用最多包含 100 个日志对象的大量调用日志转发函数。

该函数应具有与以下示例相同的签名:

/functions/<function name>.js
exports = async function(logs) {
// `logs` is an array of 1-100 log objects
// Use an API or library to send the logs to another service.
await context.http.post({
url: "https://api.example.com/logs",
body: logs,
encodeBodyAsJSON: true
});
}

写入日志转发函数后,可以按名称将其分配给日志转发器。

要将函数分配给日志转发器,请选择To Function操作,然后从下拉输入中选择函数。

要将函数分配给日志转发器,请指定类型为functionaction ,其中包含日志转发函数的名称。

/log_forwarders/<name>.json
{
"name": "<name>",
"log_types": [ "<type>", ... ],
"log_statuses": [ "<status>", ... ],
"policy": { "type": "<single|batch>" },
"action": {
"type": "function",
"name": "<function name>"
}
}
5

配置日志转发器后,单击 Save。如果启用了部署草稿,请确保部署更改。

配置日志转发器后,保存配置文件,然后推送更新的应用配置:

appservices push

日志转发器可能会挂起,以响应阻止其继续运行的事件,例如网络中断或存储日志的根本的集群发生更改。一旦暂停,就无法调用转发器,也无法转发任何日志。

您可以从Atlas用户界面的 Logs > Forwarding 屏幕重新启动已暂停的日志转发器。

注意

如果日志转发器被暂停,则会向项目所有者发送一封电子邮件,通知他们该问题。

后退

日志

在此页面上