ELk Stack-5.0.0-Logstash的安装以及logstash-input-plugin-file使用

本文详细介绍了如何安装Logstash 5.0.0,以及如何配置和使用logstash-input-plugin-file处理多行日志,包括通过delimiter和multline codec实现日志事件的合并。Logstash启动和配置文件的介绍让读者对Logstash的工作原理有了初步理解。
摘要由CSDN通过智能技术生成

Logstash下载地址:https://www.elastic.co/downloads/logstash

Logstash官方文档:https://www.elastic.co/guide/en/logstash/current/index.html


1、下载安装

下载下来后,直接解压并进入logstash/bin目录下,执行如下命令:

./logstash -e ""

启动成功后,会有如下的回显:

Successfully started Logstash API endpoint {:port=>9600}

如果没有上面的回显,则会显示相应的错误。

2、Logstash初体验

上面启动成功后,输入hello,则会有如下回显:

{
    "@timestamp" => 2017-09-29T12:38:12.529Z,
      "@version" => "1",
          "host" => "master",
       "message" => "hello",
          "type" => "stdin"
}


从上面的回显可以看到,Logstash给我们新增了几个字段,分别为@timestamp,@version,host,message,type,并以json的格式回显的,下面对此做下说明。

当我们以-e参数来运行时,Logstash默认会以标准输入的方式来运行,即stdin,这种方式就是以json的方式进行回显的。

3、Logstash的配置文件

Logstash还提供了-f的运行参数,通过指定Logstash的配置文件来运行。

3.1 配置文件格式

input{// 从文件输入
        file{
                path => ["/opt/applog/*"]  // 文件路径
                delimiter => "[#"  // 文件的结束标志,用于多行的情况
                type => "applog"  // 说明,用于后面的判断
        }
        file{
                path => ["/opt/log/*"]
                type => "syslog"
        }
}
output{// 输出到Redis,redis插件后面会做专门的介绍
        if [type] == "applog" {// 当type为applog时,将日志输出到redis,并且key为chhliu
                redis {
                        data_type => "list"
                        key => "chhliu"
                        host => "192.168.2.109"
                        port => 6379

                }
        }
        if [type] == "syslog" {// 当type为syslog时,将日志输出到redis,并且key为xyh
                redis {
                        data_type => "list"
                        key => "xyh"
                        host => "192.168.2.109"
                        port => 6379

                }
        }
        stdout{}
}
Lagstash的配置文件由3部分组成,分别为input、filter、output,上面的示例中忽略了filter(非必须)

3.2 使用type个性化输出日志

例如,我们现在有个需求,应用日志输出到redis中,系统日志输出到elasticsearch中,这个时候,我们就需要通过判断上面示例中的type类型来实现。

3.3 多行日志处理

3.3.1 通过delimiter来进行多行的合并

比如下面的日志类型:

[#%&*^]2016-06-28 13:45:17:4517.172.1.4.28!chhliu-PC!:.13984,1#%&*^:INFO>TRR rescheduled Requset RTT :{}<TestData>
	<version>1.2.0</version>
	<POSIZE>
		<channel>hello</channel>
	</POSIZE></TestData>


如果上面的日志中,我们不进行控制的话,默认会产生5行日志事件,这显然不是我们想要的。默认情况下,每个事件被假定为一行,并且一行被视为换行符之前的文本。 通常,日志记录将在写入的每一行的末尾添加一个换行符。 如果要将多个日志行加入一个事件,我们可以通过设定日志的结束符为"[#",这样Logstash就会对日志进行多行的合并,直到遇到"[#"才认为一行结束了

3.3.2 通过multline codec处理

关于多行的合并,如果想要更加精细的控制,可以使用codec的multline插件,配置如下:

input{
        file{
                path => ["/opt/applog/*"]
                codec => multiline {// 多行插件
                         pattern => "^\[\#" // 如果匹配到该正则,则认为是一行的开始
                         negate => "true" // 如果为true的话,当日志格式不匹配正则的时候,就会被multline过滤器匹配,从而根据what来决定该行日志合并到哪一行
                         what => "previous" // 如果为previous则合并到上一行,当为next则合并到下一行
                 }
                type => "applog"
        }
        file{
                path => ["/opt/log/*"]
                type => "syslog"
        }
}
output{
        if [type] == "applog" {
                redis {
                        data_type => "list"
                        key => "chhliu"
                        host => "192.168.2.109"
                        port => 6379

                }
        }
        if [type] == "syslog" {
                redis {
                        data_type => "list"
                        key => "xyh"
                        host => "192.168.2.109"
                        port => 6379

                }
        }
        stdout{}
}

但是codec的multline插件有个缺点,就是最后一行日志的收集,可能会有延时。

4、Logstash的原理

Logstash使用管道方式进行日志的搜集处理和输出
在logstash中,包括了三个阶段:
  输入input --> 处理filter(不是必须的) --> 输出output


每个阶段都由很多的插件配合工作,比如file、elasticsearch、redis等等。每个阶段也可以指定多种方式,比如输出既可以输出到elasticsearch中,也可以指定到stdout在控制台打印。由于这种插件式的组织方式,使得logstash变得易于扩展和定制。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值