一、简介

  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..tar.gz
$ cd logstash-7.3.

三、Hello World

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

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

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

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

{
"@version" => "",
"@timestamp" => --09T08::.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 来代替。

六、参考资料

Logstash 入门的更多相关文章

  1. 大数据入门第二十五天——logstash入门

    一.概述 1.logstash是什么 根据官网介绍: Logstash 是开源的服务器端数据处理管道,能够同时 从多个来源采集数据.转换数据,然后将数据发送到您最喜欢的 “存储库” 中.(我们的存储库 ...

  2. 实战ELK(5) Logstash 入门

    Logstash 是一个开源的数据收集引擎,它具有备实时数据传输能力.它可以统一过滤来自不同源的数据,并按照开发者的制定的规范输出到目的地. 一.原理 Logstash 通过管道进行运作,管道有两个必 ...

  3. logstash 入门篇

    场景介绍 基于分布式集群海量日志数据,且分布在不同的服务器上,日志的采集以及可视化是需要我们解决的问题.ELK就是这么一个方案,当然我们这里主要讲解logstash安装配置和基础语法. ELK帮我们解 ...

  4. 第三章·Logstash入门-部署与测试

    1.Logstash环境准备与安装 Logstash环境准备 关闭防火墙 #CentOS6 关闭防火墙 [root@elkstack01 ~]# /etc/init.d/iptables stop # ...

  5. [Logstash]使用详解

    Logstash是一款轻量级的日志搜集处理框架,可以方便的把分散的.多样化的日志搜集起来,并进行自定义的处理,然后传输到指定的位置,比如某个服务器或者文件. 本文针对官方文档进行翻译以及实践,希望有更 ...

  6. [Logstash]使用详解(转)

    Logstash是一款轻量级的日志搜集处理框架,可以方便的把分散的.多样化的日志搜集起来,并进行自定义的处理,然后传输到指定的位置,比如某个服务器或者文件. 本文针对官方文档进行翻译以及实践,希望有更 ...

  7. 一、ELKStack介绍与入门实践

    第1章 ELKStack 对于日志来说,最常见的需求就是收集.存储.查询.展示,开源社区正好有相对应的开源项目:logstash(收集).elasticsearch(存储+搜索).kibana(展示) ...

  8. ElasticStack的入门学习

    Beats,Logstash负责数据收集与处理.相当于ETL(Extract Transform Load).Elasticsearch负责数据存储.查询.分析.Kibana负责数据探索与可视化分析. ...

  9. 浅尝 Elastic Stack (三) Logstash + Beats

    本文使用 Filebeat,如果没有安装需要安装: curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat- ...

随机推荐

  1. leetcode - 最小移动次数使数组元素相等

    思路 (假设数组每次都已被排好序) 每次使得小于等于最大值的n-1的数字加1,直接暴力求解会超时 改进一: 为了让最小元素等于最大元素,至少需要数组中最大值-最小值次, 所以以此为基础再次暴力求解(参 ...

  2. MYSQL之概念基础篇

    1数据库概述 1.1 数据管理技术的产生和发展 数据库技术是应数据库管理任务的需要而产生的.20世纪50年代中期以前,计算机主要是用于科学计算.当时的硬件状况是,外存只有纸带.卡片.磁带,没有磁盘等可 ...

  3. QCustomplot使用分享(八) 绘制图表-加载cvs文件

    目录 一.概述 二.效果图 三.源码讲解 1.源码结构 2.头文件 3.移动游标 4.设置坐标轴矩形个数 5.添加图表数据 6.设置折线图类型 6.其他函数 四.测试方式 1.测试工程 2.测试文件 ...

  4. Day 21 进程管理

    1.什么是进程 比如: 开发写的代码我们称为程序,那么将开发的代码运行起来.我们称为进程. 总结一句话就是: 当我们运行一个程序,那么我们将运行的程序叫进程. PS1: 当程序运行为进程后,系统会为该 ...

  5. JavaScript之基本概念(二)

    今天主要介绍两个东西:JS标识符和数据类型 一 变量和常量 在介绍标识符之前有必要先了解一下JS中的变量和常量. 变量:程序执行期间可操作的临时存储数据的内存空间. 声明方式: var:函数作用域,变 ...

  6. Spring boot 梳理 - @Conditional

    @Conditional(TestCondition.class) 这句代码可以标注在类上面,表示该类下面的所有@Bean都会启用配置,也可以标注在方法上面,只是对该方法启用配置. spring框架还 ...

  7. centos7 远程连接其他服务器redis

    在本地远程连接 在终端输入: redis-cli -h 服务器ip地址 -p 端口 -a 密码

  8. 【SQL server基础】object_id()函数

    在SQLServer数据库中,如果查询数据库中是否存在指定名称的索引或者外键约束等,经常会用到object_id('name','type')方法,做笔记如下: ? 语法:object_id('obj ...

  9. java基础之和String相关的一些转换

      String虽然不是java的基本数据类型,但使用的频率却非常之高,可以说是很常见了. 列举几个常见的关于String的转换,写的有点过于简洁,欢迎纠错和补充   1.Object和String的 ...

  10. 虚拟现实研究经典问卷Presence Questionnaire (PQ) 详细介绍

    虚拟现实(VR)是一种沉浸式体验,它的作用就是将用户完全包裹在一个人为构建出的(数字)虚拟世界中,让用户在这个新环境中得到不一样的体验,或完成一些现实中不能完成的任务.所以让体验者相信“我身处此中”非 ...