本文为您介绍如何创建Logstash采集配置和处理配置。

插件介绍

  • logstash-input-file插件

    logstash-input-file插件以tail方式采集日志。更多信息,请参见logstash-input-file

  • logstash-output-logservice插件

    logstash-output-logservice插件将采集到的日志进行处理并上传到日志服务。

操作步骤

  1. 创建一个配置文件到C:\logstash-2.2.2-win\conf\目录。

    请根据实际情况,替换logstash-2.2.2-win。您可以为每种日志创建一个配置文件,格式为*.conf

  2. 创建采集配置和处理配置。

    请根据实际情况,配置如下信息(input为采集配置,详情配置请参见Logstash官方文档output为处理配置),并添加到配置文件中。

    说明
    • 配置文件格式必须以UTF-8无BOM格式编码,可以通过文本编辑器修改文件编码格式。
    • path参数中配置的文件路径,请使用UNIX模式的分隔符,例如C:/test/multiline/*.log,否则无法支持模糊匹配。
    • type参数在同一个配置文件内保持一致。如果服务器上存在多个Logstash配置文件,请保证各配置文件中的type参数唯一。
    input {
      file {
        type => "iis_log_1"
        path => ["C:/inetpub/logs/LogFiles/W3SVC1/*.log"]
        start_position => "beginning"
      }
    }
    filter {
      if [type] == "iis_log_1" {
      #ignore log comments
      if [message] =~ "^#" {
        drop {}
      }
      grok {
        # check that fields match your IIS log settings
        match => ["message", "%{TIMESTAMP_ISO8601:log_timestamp} %{IPORHOST:site} %{WORD:method} %{URIPATH:page} %{NOTSPACE:querystring} %{NUMBER:port} %{NOTSPACE:username} %{IPORHOST:clienthost} %{NOTSPACE:useragent} %{NUMBER:response} %{NUMBER:subresponse} %{NUMBER:scstatus} %{NUMBER:time_taken}"]
      }
        date {
        match => [ "log_timestamp", "YYYY-MM-dd HH:mm:ss" ]
          timezone => "Etc/UTC"
      }    
      useragent {
        source=> "useragent"
        prefix=> "browser"
      }
      mutate {
        remove_field => [ "log_timestamp"]
      }
      }
    }
    output {
      if [type] == "iis_log_1" {
      logservice {
            codec => "json"
            endpoint => "***"
            project => "***"
            logstore => "***"
            topic => ""
            source => ""
            access_key_id => "***"
            access_key_secret => "***"
            to_json => true
            max_send_retry => 10
            max_buffer_items => 4000
            max_buffer_bytes => 2097152
            max_buffer_seconds => 3
        }
        }
    }
    表 1. 处理配置参数说明
    参数 是否必填 说明
    endpoint 日志服务的服务入口。
    project 日志服务Project。
    logstore 日志服务Logstore。
    topic 日志主题。
    source 日志来源。自定义填写。
    access_key_id 阿里云账号的AccessKey ID。更多信息,请参见访问密钥
    access_key_secret 阿里云账号的AccessKey Secret。更多信息,请参见访问密钥
    to_json 是否按照JSON格式解析日志。
    • (默认)true:按照JSON格式解析日志。

      如果日志是字符串格式,将使用双引号("")包裹。

    • false:按照字符串格式解析日志。

      如果日志是JSON格式,将被转义。

    max_send_retry 数据包发送到日志服务发生异常时的最大重试次数,重试不成功的数据包会被丢弃,重试间隔为200毫秒。
    max_buffer_items 每个数据包所缓存的日志条数。

    如果未设置,表示使用默认值(4000条)。

    max_buffer_bytes 每个数据包所缓存的日志大小,最大值为10485760。单位:Bytes。

    如果未设置,表示使用默认值(2097152 Bytes)。

    max_buffer_seconds 最大缓存时间。单位:秒。

    如果未设置,表示使用默认值(3秒)。

  3. 重启Logstash。
    具体操作,请参见启动服务

后续步骤

在PowerShell中启动logstash.bat,logstash进程会在前台工作,一般用于配置测试和采集调试。建议调试通过后,把Logstash设置为Windows服务。可以保持后台运行以及开机自启动。更多信息,请参见设置Logstash为Windows服务