您可以通过Logtail插件采集Windows事件日志。本文介绍如何通过日志服务控制台创建Logtail配置采集Windows事件日志。

前提条件

  • 已在服务器上安装Windows Logtail 1.0.0.0及以上版本。具体操作,请参见安装Logtail(Windows系统)
  • 目标服务器持续产生日志。
    重要 Logtail只采集增量日志。如果下发Logtail配置后,日志文件无更新,则Logtail不会采集该文件中的日志。更多信息,请参见读取文件

原理

对于事件日志,Windows提供了Windows Event LogEvent Logging两套API,前者是后者的升级,仅在Windows Vista及以上的版本中提供。Logtail插件会根据所运行的系统,自动选择API(优先选择Windows Event Log)来获取Windows事件日志。

Windows事件日志采用发布订阅的模式,应用程序或者内核将事件日志发布到指定的通道(例如Application、Security、System),Logtail通过对应的Logtail插件调用Windows API,实现对这些通道的订阅,从而不断地获取相关的事件日志并发送到日志服务。

Logtail支持同时采集多个通道事件,例如同时采集应用程序和系统日志。

实现原理

查看通道信息

您可以在Windows服务器的事件查看器中查看通道信息。

  1. 单击开始
  2. 搜索并打开事件查看器
  3. 在左侧导航栏中展开Windows 日志
  4. 查看通道的全名。
    Windows日志下,选择目标通道,右键单击属性,查看通道全名,包括:
    • 应用程序:Application
    • 安全:Security
    • Setup:Setup
    • 系统:System
  5. 查看通道相关信息。
    Windows日志下,单击目标通道,在页面中间区域查看事件的级别、日期和时间、来源和事件ID等信息。

    在Logtail配置中,您可根据这些信息进行日志过滤。

    事件日志

采集步骤

  1. 登录日志服务控制台
  2. 接入数据区域,单击Windows事件日志
  3. 选择目标Project和Logstore,单击下一步
  4. 创建机器组页签中,创建机器组。
    • 如果您已有可用的机器组,请单击使用现有机器组
    • 如果您还没有可用的机器组,请执行以下操作(以ECS为例)。
      1. ECS机器页签中,通过手动选择实例方式选择目标ECS实例,单击创建

        更多信息,请参见安装Logtail(ECS实例)

        重要 如果您的服务器是与日志服务属于不同账号的ECS、其他云厂商的服务器和自建IDC时,您需要手动安装Logtail。具体操作,请参见安装Logtail(Windows系统)。安装完成后,您还需要在该服务器上手动配置用户标识。具体操作,请参见配置用户标识
      2. 安装完成后,单击确认安装完毕
      3. 创建机器组页面,输入名称,单击下一步

        日志服务支持创建IP地址机器组和用户自定义标识机器组,详细参数说明请参见创建IP地址机器组创建用户自定义标识机器组

  5. 选中目标机器组,将该机器组从源机器组移动到应用机器组,单击下一步
    重要 创建机器组后立刻应用,可能因为连接未生效,导致心跳为FAIL,您可单击自动重试。如果还未解决,请参见Logtail机器组无心跳进行排查。
  6. 数据源设置页签中,设置配置名称插件配置,然后单击下一步
    • inputs为数据源配置,必选项。
      重要 一个inputs中只允许配置一个类型的数据源。
    • processors为处理配置,用于解析数据。可选项,您可以配置一种或多种处理方式。

      如果当前的inputs配置无法满足日志解析需求,您可以在插件配置中添加processors配置,即添加Logtail插件处理数据。例如提取字段、提取日志时间、脱敏数据、过滤日志等。更多信息,请参见使用Logtail插件处理数据

    例如您要采集应用程序系统两个通道对应的日志,则可以在inputs中添加两个元素,示例如下所示。
    {
        "inputs": [
            {
                "type": "service_wineventlog",
                "detail": {
                    "Name": "Application",
                    "IgnoreOlder": 259200
                }
            },
            {
                "type": "service_wineventlog",
                "detail": {
                    "Name": "System",
                    "IgnoreOlder": 259200
                }
            }
        ]
    }
    参数类型是否必选说明
    typeString数据源类型,固定为service_wineventlog
    NameString待采集事件日志所属的通道名称。不配置时,默认为Application,表示采集应用程序通道中的事件日志。您可以在Windows系统中查看通道全名。更多信息,请参见步骤4
    IgnoreOlderUINT根据事件时间过滤日志,此配置是相对于采集开始时间的偏移量,单位为秒,早于此设置的日志会被忽略。 例如:
    • 设置为3600,表示相对于采集开始时间一小时前的日志都会被忽略。
    • 设置为14400,表示相对于采集开始时间四小时前的日志都会被忽略。

    默认为空,表示不根据事件时间进行过滤,采集服务器上所有的历史事件日志。

    说明 该选项仅在首次配置采集时生效,Logtail会记录事件采集的Checkpoint,保证不会重复采集事件日志。
    LevelString根据事件等级过滤日志,默认值为information, warning, error, critical,表示采集除了verbose等级外的其他所有日志。 可选值包括:information、warning、error、critical、verbose。您可以使用半角逗号(,)指定多个等级。
    说明 该参数仅支持Windows Event Log API,即只能在Windows Vista及以上的操作系统上使用。
    EventIDString根据事件ID过滤日志,可以指定正向过滤(单个或范围)或者反向过滤(不支持范围设置)。默认为空,表示采集所有事件。例如:
    • 1-200表示只采集事件ID在1-200范围内的事件日志。
    • 20表示只采集事件ID为20的事件日志。
    • -100表示采集除了事件ID为100以外的所有事件日志。
    • 1-200,-100表示采集1-200范围内除了100以外的事件日志。

    您可以使用半角逗号(,)指定多个值。

    说明 该参数仅支持Windows Event Log API,即只能在Windows Vista及以上的操作系统上使用。
    ProviderString数组根据事件来源过滤日志。例如设置为["App1", "App2"] 表示只采集来源名字为App1和App2的事件日志,其他事件日志都会被忽略。

    默认为空,表示采集所有来源的事件。

    说明 该参数仅支持Windows Event Log API,即只能在Windows Vista及以上的操作系统上使用。
    IgnoreZeroValueBoolean并非每条事件日志都拥有所有的字段,您可以使用此参数过滤空字段,空字段的定义根据类型而定,例如整数类型使用0表示空字段。

    默认为false,表示不过滤空字段。

  7. 预览数据及创建索引,然后单击下一步
    日志服务默认开启全文索引。您也可以根据采集到的日志,手动创建字段索引,或者单击自动生成索引,日志服务将自动生成字段索引。更多信息,请参见创建索引
    重要 如果您要查询和分析日志,那么全文索引和字段索引必须至少启用一种。同时启用时,以字段索引为准。
  8. 单击查询日志,系统将跳转至Logstore查询分析页面。
    您需要等待1分钟左右,待索引生效后,才能在原始日志页签中,查看已采集到的日志。更多信息,请参见查询和分析日志

问题排查

使用Logtail采集日志后,如果预览页面或查询页面无数据,您可以参见Logtail采集日志失败的排查思路进行排查。

后续步骤

采集Windows事件至日志服务后,您可以在日志服务控制台上查看日志。原始日志
字段名说明
activity_id当前事件所属活动的全局事务ID,同一个活动的事件具有相同的全局事务ID。
computer_name产生当前事件的节点名。
event_data和当前事件相关的数据。
event_id当前事件的ID。
kernel_time当前事件消耗的内核时间,一般为0
keywords当前事件关联的关键字,用于事件分类。
level当前事件的等级。
log_name当前事件的通道名,即Logtail采集配置中Name参数。
message当前事件关联的消息。
message_error在解析当前事件关联消息时发生的错误信息。
opcode当前事件关联的操作码。
process_id当前事件的进程ID。
processor_id当前事件对应的处理器ID,一般为0
processor_time当前事件消耗的处理器时间,一般为0
provider_guid当前事件来源的全局事务ID。
record_number当前事件关联的记录编号。事件的记录编号会随着每条事件的写入递增,当超过2 32(Event Logging)或2 64(Windows Event Log)后会重新从0开始。
related_activity_id当前事件所属活动关联的其他活动的全局事务ID。
session_id当前事件的会话ID,一般为0
source_name当前事件的来源,即Logtail采集配置中Provider参数。
task当前事件关联的任务。
thread_id当前事件的线程ID。
type获取当前事件使用的API。
user_data当前事件关联的用户数据。
user_domain当前事件关联的用户域。
user_identifier当前事件关联的用户Windows安全标识。
user_name当前事件关联的用户名。
user_time当前事件消耗的用户态时间,一般为0
user_type当前事件关联的用户的类型。
version当前事件的版本号。
xml当前事件最原始的信息,XML格式。