大数据之Logstash一文通【Logstash至简致远】

297 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第21天,点击查看活动详情

一.Logstash

Logstash作为Elasicsearch常用的实时数据采集引擎,可以采集来自不同数据源的数据,并对数据进行处理后输出到多种输出源,是Elastic Stack 的重要组成部分。 在这里插入图片描述 弹性搜索是当前主流的分布式大数据存储和搜索引擎,能够为用户提供强大的全文检索能力,广泛应用于日志检索、全站搜索等领域。Logstash作为弹性搜索常用的实时数据收集引擎,可以从不同的数据源收集数据,并在处理后将其输出到多个输出源。它是弹性堆栈的重要组成部分。本文从Logstash的工作原理、使用示例、部署方法和性能调优开始,为您提供一个快速入门的方法。在文章的末尾,我们还提供了一些链接来了解更多关于Logstash的信息,以便您可以根据需要了解更多有关它的信息。 Logstash你好世界 第一个示例Logstash使用标准输入和标准输出作为输入和输出,并且没有指定过滤器 (1) 下载Logstash并将其解压缩(JDK8需要提前安装) (2) Cd到Logstash的根目录,并执行如下启动命令:

cd logstash-6.4.0 bin/logstash -e 'input { stdin { } } output { stdout {} }'

二.Logstash Hello world

cd logstash-6.4.0
bin/logstash -e 'input { stdin { } } output { stdout {} }' 

Logstash将采用标准输入和标准输出作为input和output,并且不指定filter。 其中,syslog 为系统日志。保存文件。 在控制台结果如下: 在这里插入图片描述

三.action

index 给一个文档建立索引 delete 通过id值删除一个文档(这个action需要指定一个id值) create 插入一条文档信息,如果这条文档信息在索引中已经存在,那么本次插入工作失败 update 通过id值更新一个文档。更新有个特殊的案例upsert,如果被更新的文档还不存在,那么就会用到upsert

action => "index"

默认的Logstash安装包含Beats input插件,Beats input插件允许Logstash从Elastic Beats框架接收事件,也就是说任何Beat written使用Beats框架工作,例如Packetbeat和Metricbeat,也可以将事件数据发送到Logstash。

image.png

如上图所示,Logstash的数据处理过程主要包括三个部分:输入、过滤和输出。此外,编解码器可用于处理输入和输出中的数据格式。这四个部分以插件的形式存在。用户可以定义管道配置文件,设置输入、过滤、输出和编解码器插件,用于实现特定的数据采集、数据处理、数据输出等功能 (1) 输入:用于从数据源获取数据。常见插件,如file、syslog、redis、beans等 (2) 过滤器:用于处理数据,如格式转换和数据导出。常见插件,如grok、mutate、drop、clone、geoip等 (3) 输出:用于数据输出。常见插件,如弹性搜索、文件、图形、statsd等 (4) 编解码器:编解码器不是一个单独的过程,而是输入和输出插件中的数据转换模块。它用于对数据进行编码。常见插件,如json和multiline

四.manage_template

布尔类型 默认为true 设置为false将关闭logstash自动管理模板功能 比如你定义了一个自定义模板,更加字段名动态生成字段,那么应该设置为false

五.filter

Logstash三个组件的第二个组件,也是真个Logstash工具中最复杂,最蛋疼的一个组件,当然,也是最有作用的一个组件。

filter{
    grok{
        match => ['message','%{TIMESTAMP_ISO8601:logdate}']
    }
}

date插件 这里需要合前面的grok插件剥离出来的值logdate配合使用

filter{
    date{
        match=>["logdate","dd/MMM/yyyy:HH:mm:ss Z"]
        target=>"@timestamp"
        remove_field => 'logdate'
    }
}