本文介绍使用 Azure Cosmos DB 的 Azure Functions 触发器时可以设置的高级配置选项。
启用特定于触发器的日志
Azure Cosmos DB 的 Azure Functions 触发器在内部使用 更改源提要处理器库,库生成一组运行状况日志,可用于监控内部操作,以便进行 故障排除。
运行状况日志描述了在初始化、负载均衡和处理场景中尝试操作时 Azure Cosmos DB 的 Azure Functions 触发器的行为方式。
启用日志记录
若要在对 Azure Cosmos DB 使用 Azure Functions 触发器时启用日志记录,请在 Azure Functions 项目或 Azure Functions 应用中找到 host.json 该文件并 配置所需的日志记录级别。 在如下示例中启用Host.Triggers.CosmosDB的跟踪:
{
"version": "2.0",
"logging": {
"fileLoggingMode": "debugOnly",
"logLevel": {
"Host.Triggers.CosmosDB": "Warning"
}
}
}
使用更新的配置部署 Azure Function 后,会看到 Azure Cosmos DB 日志的 Azure Functions 触发器作为跟踪的一部分。 您可以在您配置的日志记录提供程序中的类别Host.Triggers.CosmosDB下查看日志。
发出哪种类型的日志?
启用后,将发出四个级别的日志事件:
错误:
- 更改馈送处理出现未知或严重错误时,会影响触发器的正常功能。
警告:
信息:
- 将租约转移到另一个实例时 - 在初始化期间和函数缩放时,可以将租约重新分配给另一个实例。 如果您自定义了获取间隔或过期间隔,它还可以指示这些值可能不合适(过期间隔比续订间隔短)。
调试:
- 实例获取租约时 - 当前实例将开始处理租约的更改源。
- 当一个实例释放租约时——该实例已停止处理该租约的更改馈送。
- 当新的更改从触发器传送到您的函数代码时,这有助于调试当函数代码可能出现错误时的情况,并且您不确定是否收到更改。
- 对于涉及警告和错误的跟踪,添加来自基础 Azure Cosmos DB SDK 的诊断信息以帮助故障排除。
还可以 参考源代码 查看完整详细信息。
查询日志
运行以下查询,查询 Azure Application Insights Analytics 中 Azure Cosmos DB 的 Azure Functions 触发器生成的日志:
traces
| where customDimensions.Category == "Host.Triggers.CosmosDB"
配置连接策略
有两种连接模式 - 直接模式和网关模式。 若要了解有关这些连接模式的详细信息,请参阅 连接模式 文章。 默认情况下, 网关 用于在 Azure Cosmos DB 的 Azure Functions 触发器上建立所有连接。 但是,对于性能驱动方案,它可能不是最佳选择。
更改连接模式和协议
有两个关键配置设置可用于配置客户端连接策略 - 连接模式 和 连接协议。 可以更改 Azure Functions 触发器用于 Azure Cosmos DB 和所有 Azure Cosmos DB 绑定的默认连接模式和协议。 若要更改默认设置,需要在 Azure Functions 项目或 Azure Functions 应用中找到 host.json 该文件,并添加以下 额外设置:
{
"cosmosDB": {
"connectionMode": "Direct",
"protocol": "Tcp"
}
}
其中 connectionMode 必须具有所需的连接模式(直接或网关)和 protocol 所需的连接协议(用于直接模式的 Tcp 或网关模式的 Https)。
如果 Azure Functions 项目正在使用 Azure Functions V1 运行时,则配置名称略有差异,则应使用 documentDB ,而不是 cosmosDB:
{
"documentDB": {
"connectionMode": "Direct",
"protocol": "Tcp"
}
}
自定义用户代理
Azure Cosmos DB 的 Azure Functions 触发器会向服务发出请求,其结果将反映在 监视中。 可以通过更改userAgentSuffixhost.json额外设置来自定义用于来自 Azure Function 的请求的用户代理:
{
"cosmosDB": {
"userAgentSuffix": "MyUniqueIdentifier"
}
}
注释
在消耗计划中托管函数应用时,每个实例都有一个能维护的套接字连接数量限制。 使用直接/TCP 模式时,通过设计可以创建更多连接并达到 消耗计划限制,在这种情况下,可以使用网关模式,或改为在 高级计划 或 专用(应用服务)计划中托管函数应用。
后续步骤
- Azure Functions 中的连接限制
- 在 Azure Functions 应用程序中启用监视。
- 了解如何使用适用于 Azure Cosmos DB 的 Azure Functions 触发器诊断 和排查常见问题 。