美文网首页
数据采集-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