Azure 诊断日志
诊断日志提供对资源内所执行操作的深入洞察。借助 Microsoft Azure 的诊断日志,您可以将内容分发网络(CDN)端点的基本使用指标导出到各种数据源。了解有关 Site24x7 日志管理的更多信息。
本文档涵盖以下内容:
收集 Azure 诊断日志
使用 Site24x7 进行日志管理和分析从 Azure 的日志收集开始。此过程包含以下步骤:
- Azure 监视器从 Azure 服务收集日志,并将数据发送到 Azure Event Hubs——一个数据流平台和数据摄取服务。
- Event Hubs 将日志流式传输到 Azure Functions,后者是由事件中心触发的一小段代码。
- Azure Functions:
- 将日志发送到 Site24x7 AppLogs HTTP 数据源。
- 将函数日志发送到一个 Azure 存储账户。

配置日志收集
配置日志收集分为三个步骤:
创建日志配置文件
在 Site24x7 Web 控制台中,导航至 Admin > AppLogs > 日志配置文件 > 添加日志配置文件,并填写以下信息:
- 配置文件名称:输入日志配置文件的名称。
- 日志类型:从下拉菜单中选择 Azure 诊断日志。
- 日志来源:选择 Azure Functions。
- 日志时区:选择 UTC。
- 点击保存。

使用 ARM 模板配置 Azure 资源
如上所述,您需要创建一个事件中心、Azure Functions 和一个用于函数日志的存储账户。您可以使用 ARM 模板创建所有这些资源。
- 对于手动安装,请按照步骤 1-6 操作。
- 对于自动安装,请点击下方链接提供所需详情,然后从步骤 7 继续。
- 下载 ARM 模板。
- 登录您的 Azure 门户,前往 Marketplace > 模板部署(使用自定义模板进行部署)。
- 点击创建。
- 在自定义部署边栏选项卡上,点击在编辑器中生成您自己的模板。
- 在编辑模板边栏选项卡上,将 JSON 文件的内容粘贴到编辑器窗口中。
- 点击保存。
- 返回自定义部署边栏选项卡,在基本信息下填写以下内容:
- 订阅:选择您的订阅模式。
- 资源组:创建一个新的资源组,名称类似于 Site24x7-Azure-Logs。
- 位置:选择一个位置。
- 在设置下:
- 名称:函数名称将自动填充,无需更改。
- LogTypeConfig:从您在 Site24x7 中已创建的日志配置文件页面复制该值(Admin > AppLogs > 日志配置文件 > 您的配置文件名称)。

- 在条款和条件下:
- 勾选我同意上述条款和条件旁边的复选框。
- 点击购买。
注意请注意,EventHub 和 Azure FunctionApp 的执行将产生一定费用。

- 点击顶部窗格中的通知图标,验证部署是否成功。
- 在部署成功通知上,点击转到资源组,验证所有资源是否已成功创建。
将日志从 Azure 监视器推送到 Event Hubs
以 Azure Active Directory 为例,按照以下步骤将审核日志推送到 Event Hubs:
- 在您的 Azure 门户主页,前往 Azure Active Directory。
- 在监控下,点击审核日志。
- 点击导出数据设置。您可以在诊断设置边栏选项卡下查看当前设置。
- 您可以通过点击编辑设置来修改这些设置,或通过点击添加诊断设置来添加新设置。最多可添加五个诊断设置。

- 勾选流式传输到事件中心旁边的复选框。
- 在事件中心下,点击配置。
- 在选择事件中心下,填写以下信息
- 订阅:选择一个 Azure 订阅。
- 选择事件中心命名空间:选择使用 ARM 模板创建的命名空间,其名称应以 Site24x7AzureLogs-Namespace-<UniqueSuffix> 开头。
- 选择事件中心名称:从下拉菜单中选择 site24x7-operational-logs。
- 选择事件中心策略名称:从下拉菜单中选择 RootManageSharedAccessKey。
- 点击 确定。

- 在日志下,勾选 AuditLogs 旁边的复选框。
- 点击保存。
日志收集故障排除
如果 Site24x7 未收到日志,您可以通过以下方式检查日志收集失败的位置:
验证配置
确保您的资源已成功添加。如果是,请按以下步骤继续:
- 在您的 Azure 门户主页,前往资源组。点击使用 ARM 模板创建的资源组。
- 检查是否列出了您创建的所有四个资源——一个应用服务计划、一个应用服务、一个 Event Hubs 命名空间和一个存储账户。

- 从资源列表中点击 Function App。
- 在 Function App 边栏选项卡上,点击函数(只读) > EventHubs_Logs > 集成。
- 验证触发器字段的值是否为 (eventMessages)。

- 验证您是否已在上述步骤 8 中正确输入 Log Type Config 字符串。
验证 Event Hubs 是否正在接收日志
- 在您的 Azure 门户主页,前往 Event Hubs。
- 点击您的事件中心;在显示指标下,切换到消息。
- 在图表下方显示的消息摘要详情中,验证传入消息数量是否大于零。

手动验证 Azure Functions 是否正在向 Site24x7 发送日志
登录 Site24x7,导航至 AppLogs。在 AppLogs 搜索窗口中,搜索 Azure 诊断日志。

- 通常情况下,所有类型的日志都会在 Azure 诊断日志下被捕获。这些日志可通过 Site24x7 Azure 诊断日志日志类型日志模式中的 logCategory 字段加以区分。
- 如果您希望将每个类别单独捕获到不同的日志类型中,可以创建自定义日志类型。
如果上述验证均失败,请通过 support@site24x7.com 联系支持团队,并提供以下信息:
用于排除问题所需的日志。操作步骤如下:
- 启用调试模式:
在与资源组关联的相应 Function App 中(如创建 ARM 模板步骤 7 中资源组列所指定的),导航至设置下的环境变量,点击 debugMode 旁的显示值。

- 启用 Insight 日志:
- 在与资源组关联的相应 Function App 中(如创建 ARM 模板步骤 7 中资源组列所指定的),导航至 Application Insights,点击开启 Application Insights。

- 在与资源组关联的相应 Function App 中(如创建 ARM 模板步骤 7 中资源组列所指定的),导航至 Application Insights,点击开启 Application Insights。
- 获取日志:
- 前往 Application Insights 中的日志边栏选项卡。
- 输入 traces 并点击运行以访问日志。
- 导出日志以便与我们共享。

- 禁用 Insight 日志:
- 几分钟后,在 Function App 的 Application Insights 边栏选项卡中禁用日志,以避免产生额外费用。
请注意,启用 Insight 日志将产生一定费用。请确保在收集完所需数据后禁用日志。
ARM 模板可在多个 Azure 服务中复用
您可以创建一个 ARM 模板,并在所有其他 Azure 服务中使用。
例如,假设需要从两个不同的 Azure 服务(应用服务和 Kubernetes 服务)收集日志,可以通过单个 ARM 模板实现:
- 创建两个不同的日志类型:AppServiceHTTPLogs 和 Azure-Kube-ApiServerLogs,并配置相应的示例日志和日志模式。
- 创建两个分别配置了对应日志类型的日志配置文件。即日志类型 AppServiceHTTPLogs 应配置在 AppServiceHTTPLogs 日志配置文件中,日志类型 Azure-Kube-ApiServerLogs 应配置在 Azure-Kube-ApiServerLogs 日志配置文件中。
- 在同一 Function App 的应用程序设置下,将两个不同日志配置文件中的 logTypeConfig 变量值分别配置为两个不同的变量。

- 前往已配置 ARM 的 Function App。
- 在左侧窗格中,前往设置下的配置。
- 在配置边栏选项卡上,点击新建应用程序设置。
- 为变量指定适当的名称(S247_<ActualLogName>)和值(相应日志配置文件中的 logTypeConfig 值)。

示例:
名称: S247_kube_apiserver
值: xxxxxxxxxxxxxxxxxxxxxxxxxxxx(日志配置文件 'Azure-Kube-ApiServerLog Profile' 的 logtypeconfig 值)
注意:
- 名称中不能包含连字符(-)。
- 名称必须以 S247_ 开头。
- 名称格式应为 S247_<ActualLogName>,其中 <ActualLogName> 是您在 Azure 服务诊断设置中需要选择的日志名称。
示例: S247_kube_apiserver, S247_AppServiceHTTPLogs - 如果 Azure 门户中的日志类型名称包含连字符(-),请将其替换为下划线(_)。
示例: 如果 Kubernetes 服务中的日志名称为 kube-apiserver,在 Site24x7 中配置日志配置文件时应将其更改为 S247_kube_apiserver。
同一 Azure 服务的多种日志类型
要为同一 Azure 服务配置多种日志类型:
- 前往该服务,然后进入其诊断设置。
- 点击添加诊断设置,在该服务中创建多个诊断设置,并选择所需的日志类型(通过勾选对应日志类型旁的复选框选择)。
- 在目标详情下选择流式传输到事件中心,并按照上方将日志从 Azure 监视器推送到 Event Hubs章节中的步骤 5-8 操作。

Azure 服务中各日志类型的日志模式
要了解 Azure 服务中不同日志类型的日志模式,请参阅 Azure 文档。参照该文档,为相应的日志类型配置日志模式。
示例: AppServiceConsoleLogs 的日志模式可由 Category、Host、Level、ResourceId、ResultDescription、SourceSystem、TenantId、TimeGenerated 和 Type 字段定义。
基于这些字段,AppServiceConsoleLogs 的日志模式配置如下:
json $resourceId as ResourceId$ $operationName$ $category as LogCategory$ $time as Time:date:yyyy-MM-dd'T'HH:mm:ss.SSS'Z'$ $properties.Host as Host$ $properties.Level as Level$ $properties.ResultDescription as ResultDescription$ $properties.SourceSystem as SourceSystem$ $properties.TenantId as TenantId$ $properties.Type as Type$
Azure 诊断日志仪表板
AppLogs 为每种日志类型创建一个专属仪表板,并默认显示若干组件。以下是 Azure 诊断日志仪表板中的可用组件列表:
- 操作统计
- 日志类别统计
- 资源组统计
除默认组件外,您保存的搜索也将自动添加到仪表板中。


