一、Logstash介绍

Logstash是开源的服务器端数据处理管道,能够从多个来源采集数据,转换数据,然后将数据发送到Elastic search。

Elastic search是主流的分布式大数据存储和搜索引擎。

二、Logstash的工作原理

Logstash时间处理管道又三个阶段:输入-->过滤器-->输出。输入生成时间,过滤器修改他们,输出将他们发送到其他地方。输入和输出支持编解码器。

输入

常用输入:

file:从文件系统上读取,与unix命令非常相似  tail -0F

syslog:在已知端口514上侦听syslog消息,并根据RFC3164格式进行解析

redis:使用redis通道和redis列表从redis服务器读取。

beats:处理Beats发送的事件。

过滤器:

有用过滤包括:

grok:解析并构造任意文本。Grok是目前Logstash种将非结构化日志数据解析为结构化可查询内容的最佳方式。

mutate:对事件字段执行常规转换。可以重命名、删除、替换、修改字段。

drop:完全删除事件,例如调试事件。

clone:制作事件副本,可能添加或删除字段

geoip:添加有关ip地址的地理位置信息

输出:

常用输出:

elasticsearch:将事件数据发送到Elasticsearch。

file:将时间数据写入磁盘上的文件。

graphite:将事件数据发送到graphite,这是一种用于存储和绘制指标的流行开源工具。

statsd:将事件发送到statsd,这是一种侦听统计信息,如计数器和定时器,通过UDP发送并将聚合发送到一个或多个可插入后端服务。

编解码器

编解码器基本上是流过滤器,可以作为输入或者输出的一部分。使用编解码器可以轻松的将消息传输与序列化过程分开。流行编解码器包括json、msgpack、plain。

json:以son格式编码或解码数据。

multiline:将多行文本事件(如java异常和堆栈跟踪消息)合并到一个事件中。

三、Logstash配置文件

Logstash有两种类型的配置文件:

管道配置文件

在定义Logstash处理管道的各个阶段时,可以创建管道配置文件。在deb和rpm上,将管道配置文件放在/etc/logstash/conf.d目录种。Logstash尝试仅加载具有.conf扩展名的文件,/etc/logstsh/conf.d directory并忽略所有其他配置文件。

设置文件

设置文件已在Logstash安装中定义。Logstash包括一下设置文件:

logstash.yml

包含Logstash配置标志。在命令行设置的任何传递标志,都会覆盖logstash.yml文件中的相应设置。

要使用分层表单来设置管道批处理大小和批处理延迟
pipeline:
  batch:
    size: 125
    delay: 50
要表示与平键相同的值
pipeline.batch.size: 125
pipeline.batch.delay: 50
在设置值中对环境变量进行bash样式插值
pipeline:
  batch:
    size: ${BATCH_SIZE}
    delay: ${BATCH_DELAY:50}
node:
  name: "node_${LS_NODE_NAME}"
path:
   queue: "/tmp/${QUEUE_DIR:queue}"
指定模块
modules:
  - name: MODULE_NAME1
    var.PLUGIN_TYPE1.PLUGIN_NAME1.KEY1: VALUE
    var.PLUGIN_TYPE1.PLUGIN_NAME1.KEY2: VALUE
    var.PLUGIN_TYPE2.PLUGIN_NAME2.KEY1: VALUE
    var.PLUGIN_TYPE3.PLUGIN_NAME3.KEY1: VALUE
  - name: MODULE_NAME2
    var.PLUGIN_TYPE1.PLUGIN_NAME1.KEY1: VALUE
    var.PLUGIN_TYPE1.PLUGIN_NAME1.KEY2: VALUE

 

pipelines.yml

包含在单个Logstash实例中运行多个管道的框架和说明。

jvm.options

包含jvm配置标志。使用此文件设置总堆空间的初始值和最大值。还可以为Logstash设置区域设置。在单独的行上指定每个标志。此文件中的所有其他设置均被视为专家设置。

log4j2.properties

包含log4j 2库的默认配置。

startup.options Linux的

包含使用的选项system-install在脚本中/usr/share/logstash/bin建立相应的启动脚本为您的系统。安装Logstash软件包时,system-install脚本将在安装过程结束时执行,并使用指定的设置startup.options来设置用户,组,服务名称和服务描述等选项。默认情况下,Logstash服务安装在用户下logstash。该start.options文件是您可以轻松的安装Logstash服务的多个实例。您可以复制文件并更改特定设置的值。请注意,startup.opthons启动时不会读取该文件。如果要更改Logstash启动脚本(例如,更改Logstash用户或从其他配置路径读取),则必须重新运行system-instal脚本(以root身份)传递新设置。

四、运行

从命令行运行Logstash

bin/logstash [options]

运行Logstash并加载mypipeline.conf文件中定义的配置:

bin/logstash -f mypipeline.conf