Logstash安装及使用
Contents
依赖:Java运行环境。这个就不多写了。
安装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
即可。
type
和tags
是 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.