Syslog 中的 Service Fabric Linux 群集事件

Service Fabric 公开一组平台事件,告知你群集中的重要活动。 点击此处查看公开的完整事件列表。 可通过多种方式使用这些事件。 在本文中,我们将讨论如何配置 Service Fabric,以便将这些事件写入 Syslog。

注意

本文最近已更新,从使用术语“Log Analytics”改为使用术语“Azure Monitor 日志”。 日志数据仍然存储在 Log Analytics 工作区中,并仍然由同一 Log Analytics 服务收集并分析。 我们正在更新术语,以便更好地反映 Azure Monitor 中的日志的角色。 有关详细信息,请参阅 Azure Monitor 术语更改

简介

在 6.4 版中就已引入了 SyslogConsumer,用于将 Service Fabric 平台事件发送到 Linux 群集的 Syslog。 开启后,事件将自动传递到可通过 Log Analytics 代理收集和发送的 Syslog。

每个 Syslog 事件均有 4 个组件

  • 设施
  • 标识
  • Message
  • 严重性

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. 在 Diagnostics 部分中,添加了一个新的 ConsumerInstance:SyslogConsumer。 这就告诉平台还有另一个事件使用者。
  3. 新部分 SyslogConsumer 需要将 IsEnabled 设为 true。 它已配置为自动使用 Local0 设施。 你可以添加另一个参数来替代该设置。
    {
        "name": "New LogFacility",
        "value": "<Valid Syslog Facility>"
    }

Azure Monitor 日志集成

可以使用 Azure Monitor 日志等监视工具来读取这些 Syslog 事件。 可以按照这些 [说明].(../azure-monitor/logs/quick-create-workspace.md),使用 Azure 市场创建一个 Log Analytics 工作区。还需向群集添加 Log Analytics 代理,以向该工作区收集和发送该数据。 这正是用于收集性能计数器的同一个代理。

  1. 导航到Advanced Settings边栏选项卡

    Workspace Settings

  2. 单击 Data

  3. 单击 Syslog

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

    Configure Syslog

  5. 单击工作区资源菜单中的Logs可前往查询浏览器启动查询

    Workspace logs

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

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

Syslog query

上面的示例为 NodeDown 事件。 可在此处查看事件的完整列表。

后续步骤