Syslog 中的 Service Fabric Linux 群集事件

Service Fabric 公开一组平台事件,告知你群集中的重要活动。 有关完整列表,请参阅Service Fabric 事件列表。 您可以通过多种方式使用这些事件数据。 本文介绍如何配置 Service Fabric以将这些事件写入 Syslog。

介绍

在 6.4 版本中,Microsoft 引入了 SyslogConsumer,用于将 Service Fabric 平台事件发送到 Linux 群集的 Syslog。 启用此功能时,事件会自动流向 Syslog,Azure Monitor代理可以收集和发送。

每个 Syslog 事件都有四个组件:

  • 设施
  • 身份
  • 消息
  • 严重性

SyslogConsumer 使用 Local0 设施写入所有平台事件。 可以通过更改配置来切换到任何有效的设施。所使用的身份标识是 ServiceFabric。 消息字段包含在 JSON 中序列化的整个事件,以便可通过各种工具查询和使用。

启用 SyslogConsumer

要启用 SyslogConsumer,你需要将自己的群集升级。 需要使用以下代码更新 fabricSettings 部分。 请注意,此代码仅包含与 SyslogConsumer 相关的部分

    "fabricSettings": [
        {
            "name": "Diagnostics",
            "parameters": [
            {
                "name": "ConsumerInstances",
                "value": "AzureWinFabCsv, AzureWinFabCrashDump, AzureTableWinFabEtwQueryable, SyslogConsumer"
            }
            ]
        },
        {
            "name": "SyslogConsumer",
            "parameters": [
            {
                "name": "ProducerInstance",
                "value": "WinFabLttProducer"
            },
            {
            "name": "ConsumerType",
            "value": "SyslogConsumer"
            },
            {
                "name": "IsEnabled",
                "value": "true"
            }
            ]
        },
        {
            "name": "Common",
            "parameters": [
            {
                "name": "LinuxStructuredTracesEnabled",
                "value": "true"
            }
            ]
        }
    ],

以下是需要重点说明的更改

  1. 在 Common 部分,有一个名为 LinuxStructuredTracesEnabled 的新参数。 这就要求在将 Linux 事件发送到 Syslog 时,将它们组织起来并串行化。
  2. 在诊断部分中,新增了一个 ConsumerInstance: SyslogConsumer。 此项告知平台还有另一个事件使用者。
  3. 新部分 SyslogConsumer 需要将 IsEnabled 设为 true。 它配置为自动使用 Local0 设施。 你可以添加另一个参数来替代该设置。
    {
        "name": "New LogFacility",
        "value": "<Valid Syslog Facility>"
    }

Azure Monitor 日志集成

可以使用 Azure Monitor 日志等监视工具来读取这些 Syslog 事件。 可以按照这些说明使用 Azure 市场创建 Log Analytics 工作区。

还需要将Azure Monitor代理添加到群集,并关联数据收集规则,以便收集和将此数据发送到工作区。

  1. 转到 Advanced Settings 部分

    工作区设置

  2. 选择 Data

  3. 选择 Syslog

  4. 将 Local0 配置为要跟踪的设施。如果在 fabricSettings 中进行了更改,可以再添加一个设施

    配置 Syslog

  5. 点击工作区资源菜单中的 Logs,前往查询浏览器以开始查询

    工作区日志

  6. 可以对 Syslog 表进行查询,查找作为 ProcessName 的 ServiceFabric。 以下示例查询演示如何分析事件中的 JSON 并显示其内容

    Syslog | where ProcessName == "ServiceFabric" | extend $payload = parse_json(SyslogMessage) | project $payload

Syslog 查询

前面的查询中的示例是 NodeDown 事件。 有关完整列表,请参阅Service Fabric 事件列表

后续步骤