美文网首页
数据采集-Logstash初探

数据采集-Logstash初探

作者: neo_ng | 来源:发表于2019-02-13 19:13 被阅读4次

    outline

    • 什么是Logstash
    • Logstash安装
    • 运行及常用命令
    • 输入输出
    • 过滤

    什么是Logstash

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

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

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


    logstash-arch.jpg

    Logstash安装

    • 前提条件: 机器已经安装好jdk
    • Elastic官网下载logstash安装
    • 解压缩

    运行及常用命令

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

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

    输入输出

    支持的输入
    • stdin
    • 文件
    • TCP
    • generator
    • syslog
    • Redis
    • Collectd
    支持的输出
    • Stdout
    • File
    • Elasticsearch
    • Redis
    • TCP
    • Statsd
    • Email
    • Exec
    还支持的插件
    • Kafka
    • HDFS
    • Scribe

    输入输出配置文件例子

    采集控制台数据,输出数据到文件
    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搭建统一日志分析平台

    相关文章

      网友评论

          本文标题:数据采集-Logstash初探

          本文链接:https://www.haomeiwen.com/subject/kotjeqtx.html