依赖:Java运行环境。这个就不多写了。

安装Logstash

Download Logstash

这时以2.3.1 带全插件的版本

下载完后,假设安装在目录/ihome/ELK/logstash-2.3.1目录下。

假设变量 logstash_home=/ihome/ELK/logstash-2.3.1

Hello World

cd ${logstash_home}

╭─sky@sky-linux /ihome/ELK/logstash-2.3.1  
╰─➤  bin/logstash -e 'input { stdin {} } output { stdout {codec=>rubydebug} }'
Settings: Default pipeline workers: 4
Pipeline main started
hello world
{
       "message" => "hello world",
      "@version" => "1",
    "@timestamp" => "2016-06-01T10:39:20.879Z",
          "host" => "sky-linux"
}

使用配置文件方式:

创建一个文件logstash.conf${logstash_home}目录下,内容如下:

input {
	stdin {}
}

output {
	stdout {
		codec => rubydebug {}
	}
}

执行:

cd ${logstash_home}

╭─sky@sky-linux /ihome/ELK/logstash-2.3.1  
╰─➤  bin/logstash -f logstash.conf
Settings: Default pipeline workers: 4
Pipeline main started
Hello World
{
       "message" => "Hello World",
      "@version" => "1",
    "@timestamp" => "2016-06-01T10:47:10.391Z",
          "host" => "sky-linux"
}

logstash 配置文件语法

Section, {}

如:

input {
	stdin {
	}
}

数据类型

布尔: debug => true 字符串: host => "hostname" 数值: port => 123 数组: match => ["date", "unix", "ISO"] 哈希:options => {k1 => “value1”, k2 => “value2”}`

字段引用

[字段名]:即可得到字段的值了.

支持在字符串内格式化:

"Hello World %{[字段名]}

条件判断和表达式

==, !=, <, >, <=, >=

=~, !~

in, not in

and, or, nand, xor

!()

命令行参数

-e:直接执行后面的内容:如上面的Hello World.

-f或--config:执行后面参数代表的文件里的内容.如上面的Hello World带文件的例子。

-t或--configtest:测试配置文件语法是否正确.如:

╭─sky@sky-linux /ihome/ELK/logstash-2.3.1  
╰─➤  bin/logstash -t logstash.conf 
Configuration OK
╭─sky@sky-linux /ihome/ELK/logstash-2.3.1  
╰─➤  bin/logstash --configtest logstash.conf
Configuration OK

-l或--log:默认情况下logstash输出到标准输出中。-l,可以指定件输出到文件.

-w或--pipeline-workers:工作线程.-w 5。如:

╭─sky@sky-linux /ihome/ELK/logstash-2.3.1  
╰─➤  bin/logstash -f logstash.conf -w 5     
Settings: User set pipeline workers: 5, Default pipeline workers: 4
Pipeline main started

-p或--pluginpath:插件路径.可以自己写插件,然后这样子加载它.-p /home/logstash/plugins

--verbose:详细输出

--debug:调试

插件

管理

列出所有可用插件:${logstash_home}/bin/logstash-plugin list 安装插件:${logstash_home}/bin/logstash-plugin install xxxPlugin 升级插件:${logstash_home}/bin/logstash-plugin update xxxPlugin

如果插件是在本地文件系统,则改为绝对路径即可.

输入插件

如果没有写明input,那么就会使用默认的logstash-input-stdin 如果没有写明output,那么就会使用默认的logstash-output-stdout

即,上面的Hello World的例子,可以不用写,而直接运行${logstash_home}/bin/logstash -e即可。

typetags是 logstash 中两个特殊的字段。type标识类型。tags由后面的插件来添加或删除.

stdin

标准输入.

file

文件输入.

input {
    file {
        path => ["/path/to/file1", "/path/to/file2"]
        type => "system"
        start_position => "beginning"
    }
}

TCP输入

input {
    tcp {
        port => 8888
        mode => "server"
        ssl_enable => false
    }
}

etc..

后台运行

nohup COMMAND &

注意事项

  • logstash 一定要用一个input和output.