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

前提条件

已在服务器上安装Logtail,详情请参见安装Logtail(Windows系统)
说明 目前仅支持Windows Logtail 1.0.0.0及以上版本。

原理

对于事件日志,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日志下,选择目标通道,右键单击属性,查看通道全名。Windows日志下常用通道全名如下所示。
    • 应用程序:Application
    • 安全:Security
    • Setup:Setup
    • 系统:System
  5. 查看通道相关信息。
    Windows日志下,单击目标通道,在页面中间区域查看事件的级别、日期和时间、来源和事件ID等信息。

    在采集配置中,可根据这些信息进行过滤。

    事件日志

采集步骤

  1. 登录日志服务控制台
  2. 接入数据区域,选择自定义数据插件
  3. 选择日志空间页签中,选择目标Project和Logstore,单击下一步
    您也可以单击立即创建,重新创建Project和Logstore,详情请参见步骤1:创建Project和Logstore
  4. 创建机器组页签中,创建机器组。
  5. 机器组配置页签中,应用机器组。
    选择一个机器组,将该机器组从源机器组移动到应用机器组
  6. 数据源设置页签中,配置配置名称插件配置
    • inputs为Logtail采集配置,必选项,请根据您的数据源配置。
      说明 一个inputs中只允许配置一个类型的数据源。
    • processors为Logtail处理配置,可选项。您可以配置一种或多种处理方式,详情请参见处理数据
    此处以同时采集应用程序系统两个通道为例,其中IgnoreOlder设置为3天以避免采集过多的事件日志。
    {
        "inputs": [
            {
                "type": "service_wineventlog",
                "detail": {
                    "Name": "Application",
                    "IgnoreOlder": 259200
                }
            },
            {
                "type": "service_wineventlog",
                "detail": {
                    "Name": "System",
                    "IgnoreOlder": 259200
                }
            }
        ]
    }
    参数 类型 是否必选 说明
    type string 数据源类型,固定为service_wineventlog
    Name string 待采集事件日志所属的通道名称,只能指定一个。不配置时,默认为Application,表示采集应用程序通道中的事件日志。您可以在windows系统中查看通道全名,详情请参见步骤 4
    IgnoreOlder uint 根据事件时间过滤日志,此配置是相对于采集开始时间的偏移量,单位为秒,早于此设置的日志会被忽略。 例如:
    • 设置为3600,表示相对于采集开始时间一小时前的日志都会被忽略。
    • 设置为14400,表示相对于采集开始时间四小时前的日志都会被忽略。

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

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

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

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

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

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

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

  7. 查询分析配置页签中,设置索引。
    默认已设置索引,您也可以根据业务需求,重新设置索引,具体请参见开启并配置索引
    说明
    • 全文索引和字段索引属性必须至少启用一种。同时启用时,以字段索引属性为准。
    • 索引类型为long、double时,大小写敏感和分词符属性无效。

后续步骤

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