(十四):Logstash配置

  在Logstash安装中演示了Logstash标准输入输出。标准输入输出模块,可以使Logstash读取键盘输入内容,并将结果直接打印在屏幕上。

1、Logstash配置结构与内容

1.1、配置结构

# this is a comment
input {
  value...
}

filter {
  value...
}

output {
  value...
}

  input 输入插件;filter 过滤器插件;output 输出插件。

1.2、value详情

  插件可以要求设置的值是某种类型,例如布尔值、列表值或散列值。支持以下值类型:

2.1、Array

  users => [ {id => 1, name => bob}, {id => 2, name => jane} ]

2.2、Lists

  Lists是类型集合,可以对多个值进行类型检查,在声明参数时指定:list => true来启用列表检查。

 path => [ "/var/log/messages", "/var/log/*.log" ]
 uris => [ "http://elastic.co", "http://example.net" ]

2.3、Boolean

  布尔值必须为 ture 或 false,注意:true和false关键字没有括在引号中。

 ssl_enable => true

2.4、Bytes

  字节字段是表示有效字节单位的字符串字段,是一种在插件选项中声明特定大小的简便方法。

  my_bytes => "1113"   # 1113 bytes
  my_bytes => "10MiB"  # 10485760 bytes
  my_bytes => "100kib" # 102400 bytes
  my_bytes => "180 mb" # 180000000 bytes

2.5、codec

  编解码器是用于表示数据的Logstash编解码器的名称。编解码器可用于输入和输出。输入编解码器提供了一种方便的方法,在数据进入输入之前对其进行解码。输出编解码器提供了一种方便的方法,在数据离开输出之前对其进行编码。

  使用输入或输出编解码器消除了在Logstash管道中使用单独过滤器的需要。

codec => "json"

2.6、Hash

  Hash是按"field1" => "value1"格式指定的键值对的集合。注意,多个键值条目由空格分隔,而不是逗号。

match => {
  "field1" => "value1"
  "field2" => "value2"
  ...
}
# or as a single line. No commas between entries:
match => { "field1" => "value1" "field2" => "value2" }

2.7、Number

  数字必须是有效的数值(浮点数或整数)。

 port => 33

2.8、Password

  密码是一个字符串,只有一个值,不被记录或打印。

my_password => "password"

2.9、URI

  URI可以是任何东西,从完整的URL(如http://elastic.co/)到简单的标识符(如foobar)。若URI包含密码,例如http://user:pass@example.net,则不会记录或打印URI的密码部分。

my_uri => "http://foo:bar@example.net"

2.10、Path

  路径是表示有效操作系统路径的字符串。

my_path => "/tmp/logstash"

2.11、String

  字符串必须是单个字符序列。注意字符串值用双引号或单引号括起来。

2.12、转义字符 Escape Sequences

  默认情况下,不启用转义序列。若希望在带引号的字符串中使用转义序列,则需要单独进行设置。在logstash.yml中配置项Support_escapes: true。

name => "Hello world"
name => 'It\'s a beautiful day'

2.13、注释 Comments

  注释以#字符开头,不需要在行首。

# this is a comment

2、Outputs 配置

2.1、输出到指定文件

  修改解压目录bin下的 logstash.conf,数据源从控制台输入,结果输出到磁盘做持久化存储,配置详情如下:

input {
    stdin{
    }
} 
 
output {
    file{
        path=>'D:\\development\\Logstash\\output\\logstash_file'
    }
}

  执行启动命令:

logstash -f logstash.conf 

  启动成功后,在控制台中输出如下内容。

0

  查看磁盘中的 logstash_file 文件:

0

  文件详情如下:

0

2.2、输出到ElastisSearch

  修改解压目录bin下的 logstash.conf,数据源从控制台输入,结果输出到ElasticSearch的 logstash-example 索引中,配置详情如下:

input {
    stdin{
    }
} 
 
output {
    elasticsearch{
        action=>"index"
        index=>"logstash-example"   
        hosts=>["http://127.0.0.1:9200"]                  
    }
}

  action 表示对 elasticsearch 进行的操作,index 表示给文档建立一个索引;index 表示写入事件时所用的索引;host 是一个数组,指明 ES 集群,因本机是单节点,所以只有一个ip:port。

  执行启动命令:

logstash -f logstash.conf 

  启动成功后,在控制台中输出如下内容。

0

  查看ElasticSearch的 logstash-example 索引下的文档,可以看到日志信息已经输出到ES中。详情如下:

0

3、Inputs 配置

  在 D:\development\Logstash\logs 文件下新建日志文件 access.log,详情如下:

71.141.244.242 - kurt [18/May/2011:01:48:10 -0700] "GET /admin HTTP/1.1" 301 566 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3"
134.39.72.245 - - [18/May/2011:12:40:18 -0700] "GET /favicon.ico HTTP/1.1" 200 1189 "-" "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.2; .NET4.0C; .NET4.0E)"
98.83.179.51 - - [18/May/2011:19:35:08 -0700] "GET /css/main.css HTTP/1.1" 200 1837 "http://www.safesand.com/information.htm" "Mozilla/5.0 (Windows NT 6.0; WOW64; rv:2.0.1) Gecko/20100101 Firefox/4.0.1"

  logstash.yml 配置文件详情如下:

input {
  file {
    path => "D:/development/Logstash/logs/access.log"
    start_position => "beginning"
  }
}

filter {
  grok {
    match => { "message" => "%{COMBINEDAPACHELOG}" }
  }
  date {
    match => [ "timestamp" , "dd/MMM/yyyy:HH:mm:ss Z" ]
  }
}

output {
  stdout { codec => rubydebug }
}

  依照 logstash.yml 配置文件启动Logstash,格式化输出日志文件,输出结果如下:

0

4、Filters配置

  Filters是一种内联处理机制,可以根据需要对数据进行分割。详情如下:

  logstash.yml 配置内容如下:

input { stdin { } }

filter {
  grok {
    match => { "message" => "%{COMBINEDAPACHELOG}" }
  }
  date {
    match => [ "timestamp" , "dd/MMM/yyyy:HH:mm:ss Z" ]
  }
}

output {
  stdout { codec => rubydebug }
}

  依照 logstash.yml 配置文件启动Logstash,输入如下内容:

127.0.0.1 - - [11/Dec/2013:00:01:45 -0800] "GET /xampp/status.php HTTP/1.1" 200 3891 "http://cadenza/xampp/navi.php" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:25.0) Gecko/20100101 Firefox/25.0"

  输出结果如下:

0

  Logstash 通过 grok过滤器 可以解析Apache“组合日志”格式的日志行,并将该日志行分解成许多不同的离散信息,便于查询和分析日志数据。比如提取 HTTP响应代码、IP地址等信息。

  通过 date 过滤器解析出时间戳,并将其用作事件的时间戳。

 

posted @ 2024-01-25 14:53  无虑的小猪  阅读(408)  评论(0编辑  收藏  举报