Azure 函数配置日志记录

2025年4月6日 | 阅读 7 分钟

引言

Azure Functions 是一项强大的云原生计算技术,它允许开发人员在无需过多关注基础设施管理的情况下运行事件驱动的代码。为了使您开发的应用能够正常运行并便于跟踪和调试,您必须提前登录到 Azure Functions 平台。本文将提供一份关于配置 Azure Functions 日志记录的详细指南,其中包含重要的注意事项、推荐的做法和实施细节。

了解 Azure Functions 中的日志记录

Azure Functions 日志记录用于多种原因:

  • 监控:日志提供有关函数运行状况的信息。
  • 调试:在开发和生产过程中,日志有助于定位和修复问题。
  • 审计:日志可以监控函数的执行情况,以确保安全和合规。
  • 诊断:日志能够对故障或异常行为进行全面检查。

Azure Functions 支持多种日志记录解决方案,包括集成的日志记录框架,以及与第三方平台和外部监控工具(如 Azure Monitor 和 Application Insights)的集成。

Azure Functions 支持的日志记录框架

Azure Functions 为开发人员提供了灵活性,支持多种日志记录框架:

  • 特定于应用程序的信息
  • Azure Monitor 日志
  • ILogger 接口(Microsoft.Extensions.Logging)
  • 第三方日志库,如 NLog 和 Serilog

配置 Azure Functions 中的日志记录

启用 Application Insights

Azure Monitor 的 Application Insights 功能提供强大的分析和遥测功能。它是 Azure Functions 的默认日志记录方法。

如何启用 Application Insights

  • 导航到 Azure 站点,找到您的 Azure Function 应用。
  • 在左侧菜单中,选择 Application Insights。
  • 选择 Application Insights 后,您可以链接到现有的 Application Insights 资源,或创建一个新的资源。
  • 保存配置。

或者,您也可以使用 Azure CLI 来启用 Application Insights:

  • az monitor app-insights component create \
  • --app "<your-app-name>" \
  • --location "<region>" \
  • --resource-group "<resource-group-name>"

配置 ILogger 接口

Azure Functions 内置了 ILogger 接口,它提供了一种简单的方法来记录消息。

它支持多种日志级别:

  • 轨迹
  • 调试
  • 详细信息
  • 注意
  • Error
  • 重要性

C# 中的示例用法

自定义日志级别

host.json 文件包含日志级别的配置选项。您可以使用此文件来控制 Azure Functions 生成的日志的详细程度。

host.json 中的配置示例

  • Function:管理特定于您的函数的日志。
  • Host:管理 Azure Functions 运行时日志。
  • Default:管理所有其他日志。

与 Azure Monitor Logs 集成

Azure Monitor Logs 提供高级日志聚合和查询功能。Log Analytics 是一个用于创建仪表板和查询日志的工具。

按照以下步骤启用 Azure Monitor Logs:

  • 通过 Azure 界面访问您的 Function App。
  • 在“监控”部分选择“日志”。
  • 设置 Log Analytics 工作区。
  • 使用 Kusto 查询语言(KQL)来查询您的日志。

查询示例

使用第三方日志库

对于更复杂的日志记录应用程序,可以集成第三方库,如 Serilog 和 NLog。

使用 Serilog 的步骤

安装 Serilog NuGet 包

在 Startup.cs 文件中配置 Serilog

在您的函数中使用 Serilog

优点

  • 改进的调试和故障排除:日志提供函数执行情况的实时信息,便于快速识别和解决问题。
  • 性能监控:通过跟踪执行时间、吞吐量和瓶颈,日志有助于优化函数性能。
  • 合规性和审计:通过跟踪所有操作和数据访问,详细的日志确保您能够遵守监管要求。
  • 与 Azure Monitor 和 Application Insights 等工具的集成,可以根据日志数据设置警报,以识别异常或故障。
  • 运营洞察:日志提供有关运行时环境(包括输入/输出数据和故障)的见解,有助于更好地进行运营决策。
  • 顺畅集成:Azure Functions 支持与 Azure Monitor、Application Insights 和其他日志工具的集成,为日志管理和分析提供了灵活性。
  • 可扩展性监控:通过跟踪扩展事件,日志有助于确保函数应用的扩展能够适应工作负载,并避免过度或不足配置。

应用

监控应用程序健康状况

通过记录关键指标和事件,日志使运维和开发团队能够监控 Azure Functions 的健康状况。

日志可以提供:

  • 请求/响应日志:记录传入请求和传出响应的日志。
  • 执行指标:提供有关调用率、内存使用情况和函数执行时间的信息。
  • 状态指示器:运营成功或失败。

通过集成 Azure Monitor 和 Application Insights 等工具,团队可以创建仪表板来可视化这些日志、发现模式并确保应用程序正常运行。

错误检测和故障排除

日志有助于查找和修复错误。Azure Functions 可以捕获详细的错误日志,包括:

  • 运行时异常的堆栈跟踪。
  • 依赖项失败:与外部服务(如 API 或数据库)相关的问题。
  • 配置错误:由不正确的配置引起的问题。

这些信息可以加快故障排除速度,减少停机时间,从而提高应用程序的整体可靠性。

性能优化

开发人员可以通过使用日志记录来识别性能瓶颈并优化函数执行。

关键发现包括:

  • 执行持续时间:识别运行缓慢的函数。
  • 资源利用率:监控 CPU 和内存消耗。
  • “冷启动分析”:查找函数启动时的延迟,特别是对于不频繁调用的情况。

通过检查这些日志,可以改善用户体验,优化资源扩展,并调整配置。

安全与合规

对于应用程序保持安全和合规性,日志记录至关重要。Azure Functions 可以记录:

  • 身份验证/授权事件:有关用户操作和访问尝试的信息。
  • 数据访问模式:监控异常或非法的访问数据的请求。
  • 审计跟踪:记录重要更改和活动。

这些日志有助于主动检测潜在的安全威胁、确保监管合规性以及进行取证调查。

依赖项监控

Azure Functions 通常与第三方 API、SQL 数据库和 Azure 存储等外部服务进行通信。

记录这些交互有助于:

  • 依赖项状态检查:跟踪响应时间和可用性。
  • 错误分析:识别问题,如响应不佳或超时。
  • 根据观察到的失败调整重试机制。
  • 通过监控这些依赖项,开发人员可以确保更顺畅的集成和更好的用户体验。

开发过程中的调试

通过提供函数行为的实时反馈,日志记录在开发过程中有助于调试。

Azure 的集成日志记录支持和本地开发工具使开发人员能够:

  • 验证和测试代码。
  • 及早发现并解决问题。
  • 在上线前建立信心。

DevOps 的运营洞察

在 DevOps 环境中,日志记录有助于事件管理、CI/CD 管道和持续监控。

Azure Functions 的日志可以集成到以下程序中:

  • Azure Monitor:用于集中监控。
  • Log Analytics:用于日志分析和查询。
  • 通知和警报:用于自动化问题响应和检测。

通过这样做,可以确保团队了解系统状态并能够快速响应问题。

查看日志

有几种方法可以读取日志:

Azure 门户

  • 转到 Function App。
  • 转到“监控”并选择“日志流”。
  • 实时查看日志。

特定于应用程序的信息

可以通过 Application Insights 界面检查异常、跟踪和日志。

Azure Monitor Logs KQL 查询

使用 Log Analytics 查询日志。

文件系统日志(用于开发)

您的 Function App 的 LogFiles 目录包含日志。

Azure Functions 日志记录最佳实践

  • 采用结构化日志记录:结构化的日志更易于搜索和分析。使用键值对以获得更深入的信息。
  • 在正确的级别记录:避免在高日志级别(如 Critical 或 Error)下进行过多记录。谨慎使用级别:
    • Debug:开发洞察
    • Information:业务层面的日志
    • Warning:潜在问题
    • Error:功能性故障
  • 避免敏感数据:不要记录私人信息,如 API 密钥、密码或个人身份信息。
  • 监控日志大小:注意日志大小,因为过多的日志记录可能会影响性能并导致昂贵的存储费用。在需要时使用采样。
  • 实施日志保留策略:在 Application Insights 或 Azure Monitor Logs 中设置保留策略,以控制日志存储。

结论

配置 Azure Functions 中的日志记录对于确保应用程序的性能、可维护性和可靠性至关重要。开发人员可以使用 Application Insights、Azure Monitor Logs 和 ILogger 等工具来实施适合其需求的可靠日志记录解决方案。通过遵循最佳实践并利用 Azure 强大的监控功能,组织可以实现卓越的可观察性和运营效率。