zoukankan      html  css  js  c++  java
  • Logstash 入门

    一、简介

      Logstash 是开源的服务器端数据处理管道,支持从不同来源采集数据,装换数据,并将数据发送到不同的存储库中。  

      Logstash 项目诞生于 2009 年 8 月 2 日。其作者是世界著名的运维工程师乔丹西塞(JordanSissel),乔丹西塞当时是著名虚拟主机托管商 DreamHost 的员工,还发布过非常棒的软件打包工具 fpm。

      2013年,Logstash 被 Elasticsearch 公司收购。

    二、安装

      Logstash 开箱即用,所以你只要下载压缩文件,然后解压之后就能用了。

    $ wget https://artifacts.elastic.co/downloads/logstash/logstash-7.3.0.tar.gz
    $ tar -zxvf logstash-7.3.0.tar.gz
    $ cd logstash-7.3.0

    三、Hello World

      首先以输出一个 “Hello World” 的形式开始 Logstash 的学习。

      可以运行以下命令, stdin{} 表示从标准输入输入信息; -e 表示从命令行指定配置;然后 codec=>rubydebug 表示把结果输出到控制台。

    $ bin/logstash -e 'input{stdin{}}output{stdout{codec=>rubydebug}}'

      此时在命令行输入 Hello World , 然后回车会看到如下结果:  

    {
        "@version" => "1",
        "@timestamp" => 2019-08-09T08:52:29.790Z,
        "message" => "Hello World ",
        "host" => "chengshengzhangdeMacBook-Pro.local"
    }

      如上显示,Logstash 会额外增加一些信息,比如 @timestamp 时间, host 主机名等。

    四、运行流程

      使用过Linux的程序员都清楚,Linux 有一个管道符,类似于以下命令:

    $ cat randdata | awk '{print $2}' | sort | uniq -c | tee sortdata

      Logstash 就像一个管道符一样,可以将输入,经过过滤,然后输出到不同的存储库中。Logstash 使用不同的线程来实现这些功能的,数据在线程之间以事件的形式流传, 而且 Logstash 可以处理多行的数据。

      Logstash 采用的可插拔的框架,目前已经有200多个插件。分为输入插件(input),编码插件(codec),过滤器插件(filter),输出插件(output)。

      Logstash 处理数据的整个流程: input | decode | filter | encode | output。

    • input 插件可以对接不同数据源
    • codec 插件,codec 来自 coder / decoder 两个单词的首字母缩写,主要用来decode、encode事件的,codec 使 Logstash 更方便的和其他自定义的数据格式对接,将相应格式的数据转化为Logstash事件
    • filter 插件可以解析各个事件,比如把非结构化数据结构化,从IP地址解析出地理坐标等
    • output 插件对接不同存储层,比如 ElasticSearch,HDFS,Kafka等。

    五、命令行参数

    5.1、-e

      意即执行。我们在 "Hello World" 的时候已经用过这个参数了。事实上你可以不写任何具体配置,直接运行 bin/logstash -e '' 达到相同效果。这个参数的默认值是下面这样:

    input {
        stdin { }
    }
    output {
        stdout { }
    }

    5.2、--config 或 -f

      意即文件。真实运行中,我们会写很长的配置,甚至可能超过 shell 所能支持的 1024 个字符长度。所以我们必把配置固化到文件里,然后通过 bin/logstash -f agent.conf 这样的形式运行。

      此外,logstash 还提供一个方便我们规划和书写配置的小功能。你可以直接用 bin/logstash -f /etc/logstash.d/ 来运行。logstash 会自动读取 /etc/logstash.d/ 目录下所有的文本文件,然后在自己内存里拼接成一个完整的大配置文件,再去执行。

    5.3、--configtest 或 -t

      意即测试。用来测试 Logstash 读取到的配置文件语法是否能正常解析。Logstash 配置语法是用 grammar.treetop 定义的。尤其是使用了上一条提到的读取目录方式的读者,尤其要提前测试。

    5.4、--log 或 -l

      意即日志。Logstash 默认输出日志到标准错误。生产环境下你可以通过 bin/logstash -l logs/logstash.log 命令来统一存储日志。

    5.5、--filterworkers 或 -w

       意即工作线程。Logstash 会运行多个线程。你可以用 bin/logstash -w 5 这样的方式强制 Logstash 为过滤插件运行 5 个线程。

      注意:Logstash目前还不支持输入插件的多线程。而输出插件的多线程需要在配置内部设置,这个命令行参数只是用来设置过滤插件的!

      提示:Logstash 目前不支持对过滤器线程的监测管理。如果 filterworker 挂掉,Logstash 会处于一个无 filter 的僵死状态。这种情况在使用 filter/ruby 自己写代码时非常需要注意,很容易碰上 NoMethodError: undefined method '*' for nil:NilClass 错误。需要妥善处理,提前判断。

    5.6、--pluginpath 或 -P

      可以写自己的插件,然后用 bin/logstash --pluginpath /path/to/own/plugins 加载它们。

    5.7、--verbose

      输出一定的调试日志。

      小贴士如果你使用的 Logstash 版本低于 1.3.0,你只能用 bin/logstash -v 来代替。

    5.8、--debug

      输出更多的调试日志。

      小贴士:如果你使用的 Logstash 版本低于 1.3.0,你只能用 bin/logstash -vv 来代替。

    六、参考资料

  • 相关阅读:
    1058
    light oj 1067 费马小定理求逆元
    HDU 1022
    贪心
    HDU 4994 博弈。
    HDU 5234 背包。
    CodeForces 327B 水题。
    vue的$nextTick使用总结,this.$refs为undefined的解决办法,element Ui的树形控件setCheckedKeys方法无法使用
    Object.assign的用法
    react + antd 实现打印功能(踩了不少坑)
  • 原文地址:https://www.cnblogs.com/Zhangcsc/p/11332082.html
Copyright © 2011-2022 走看看