数据采集-Logstash初探

2019-02-13  本文已影响4人  neo_ng

outline

什么是Logstash

Logstash 项目诞生于 2009 年 8 月 2 日。其作者是世界著名的运维工程师乔丹西塞(JordanSissel)

Logstash 是一个 input | decode | filter | encode | output 的数据流!codec 就是用来 decode、encode 事件的

Logstash 社区通常习惯用 shipper,broker 和 indexer 来描述数据流中不同进程各自的角色。如下图:


logstash-arch.jpg

Logstash安装

运行及常用命令

采集控制台数据,输出数据至控制台,脚本支持参数
cd logstash/bin
./logstash -e 'input { stdin { } } output { stdout {} }'

-t 测试配置文件是否正确
-f 指定配置文件启动

输入输出

支持的输入
支持的输出
还支持的插件

输入输出配置文件例子

采集控制台数据,输出数据到文件
input {
    stdin {
    }
}
output { 
    stdout {
        } 
}
采集文件数据,输出数据至ES
input {
        file {
                path => ["/usr/local/package/testL.log"]
                type => "system"
                start_position => "beginning"
                #表示多就去path路径下查看是够有新的文件产生。默认是15秒检查一次。
                discover_interval => 15
                close_older => 3600
                #已经监听的文件,若超过这个时间内没有更新,就关闭监听该文件的句柄,默认一天
                ignore_older => 86400
                #logstash 每隔多 久检查一次被监听文件状态( 是否有更新) , 默认是 1 秒。
                stat_interval => 1
        }
}
output {
        if "_grokparsefailure" not in [tags]{
                #根据规则转化成功的日志才输出到es
                elasticsearch {
                        # 导出到es,最常用的插件
                        codec => "json"
                        hosts => ["XX.XX.XX.XX:8030"]
                        index => "test_logstash"
                        #根据请求接口名动态生成动态
                        document_type => "test_logstash"
                        #flush_size => 500
                        #idle_flush_time => 1
                }
                #这里除了es,还可以把转换好的内容输出到其他路径
        }else{
                #转换失败的日志就不做处理
        }   
}

过滤器

丰富的过滤器插件的存在是 logstash 威力如此强大的重要因素

Grok

Grok 是 Logstash 最重要的插件。你可以在 grok 里预定义好命名正则表达式,在稍后(grok参数或者其他正则表达式里)引用它。
实际运用中,我们需要处理各种各样的日志文件,如果你都是在配置文件里各自写一行自己的表达式,就完全不可管理了。所以,我们建议是把所有的 grok 表达式统一写入到一个地方。然后用 filter/grok 的 patterns_dir 选项来指明。

filter {
    grok {
        patterns_dir => "/path/to/your/own/patterns"
        match => {
            "message" => "%{SYSLOGBASE} %{DATA:message}"
        }
        overwrite => ["message"]
    }
}

采坑记录:
logstash最佳实践
使用ELK搭建统一日志分析平台

上一篇下一篇

猜你喜欢

热点阅读