Logstash知识点

 

目录

Logstash的基本知识

Logstash是什么

工作原理(看这里)

执行模型

Logstash配置文件

Logstash.config(看这里)

条件语句和临时字段(看这里)

Logstash中的通信

利用X-Pack配置集中式管道管理

使用Logstash和相关的性能调优


Logstash的基本知识

Logstash是什么

数据收集处理引擎。支持动态的从各种数据源搜集数据,并对数据进行过滤、分析、丰富、统一格式等操作,然后存储以供后续使用。

相关版本支持(看这里

工作原理(看这里

  • 输入
    file:从文件系统上的文件读取,非常类似于UNIX命令 tail -0F
    syslog:在知名端口514上侦听syslog消息并根据RFC3164格式进行解析
    redis:使用redis通道和redis列表从redis服务器读取。Redis经常在集中式Logstash安装中用作“代理”,该安装会将来自远程Logstash“托运人”的Logstash事件排队。
    beats:处理 Filebeat其他beat发送的数据
  • 过滤器(使用方式
    date:用于完成日期转换,可以将日期类型的字符串生成为一个新的字段,用以替代默认的
    json:将字段内容转为JSON格式
    grok:将符合某个正则规则的内容重新定义为另一个字段中。Logstash预定义了很多的正则规则,通过这些文件还可以学习到很多正则高级写法,这些规则存放在以下目录:/usr/local/logstash/vendor/bundle/jruby/1.9/gems/logstash-patterns-core-2.0.5/patterns
    mutate:该插件也是使用很频繁的插件,可以对字段内容做处理,比如重命名,删除,替换和修改事件中的字段。
    dissect:基于分割符来切割字段,避免grok消耗CPU的问题,性能是grok的三倍左右。但是需要每行日志格式相似,并有明显的分割符
    geoip:添加有关IP地址地理位置的信息(还在Kibana中显示惊人的图表!)
    fingerprint :创建一个或多个字段的一致哈希(指纹),并将结果存储在新字段中。
  • 输出
    流行的Logstash输出插件
    file:输出到文件
    email:收到输出时,它会根据某些条件发送电子邮件
    elasticsearch:输出到elasticsearch集群,这是Logstash最常见和最推荐的输出
    stdout:标准输出流
    redis:事件写入redis队列,并用作许多ELK实现的代理
    mongodb:输出到mongodb
    kafka:输出到kafka topic
  • 编解码器:
    编解码器基本上是流过滤器,可以作为输入或输出的一部分进行操作。编解码器使您可以轻松地将消息的传输与序列化过程分开。流行的编解码器有:
    json:以JSON格式编码或解码数据。
    plain插件:主要用于事件之间没有分隔的纯文本。
    multiline:将多行文本事件(例如java异常和stacktrace消息)合并为一个事件。

常用的过滤器和编解码器插件

执行模型

Logstash事件处理管道协调输入,过滤器和输出的执行。
Logstash在管道阶段(输入→过滤器和过滤器→输出)之间使用内存中有界队列来缓冲事件。为了帮助防止数据丢失,可以持久队列,将正在进行的事件持久保存到磁盘。dead letter queue为Logstash无法处理的事件提供磁盘存储。默认情况下,死信队列是禁用的。

Logstash配置文件

logstash.yml

包含Logstash配置标志。您可以在此文件中设置标志,而不是在命令行中传递标志。您在命令行上设置的所有标志都将覆盖logstash.yml文件中的相应设置。有关更多信息,请参见logstash.yml

pipelines.yml

包含用于在单个Logstash实例中运行多个管道的框架和说明。有关更多信息,请参见多管道

jvm.options

包含JVM配置标志。使用此文件来设置总堆空间的初始值和最大值。您也可以使用此文件设置Logstash的语言环境。在单独的行上指定每个标志。此文件中的所有其他设置都被视为专家设置。

log4j2.properties

包含log4j 2库的默认设置。有关更多信息,请参见Log4j2配置

startup.options (Linux)

在安装Logstash软件包时,system-install脚本将在安装过程结束时执行,并使用中指定的设置startup.options来设置选项,例如用户,组,服务名称和服务描述。

Logstash.config(看这里

基本结构:

input {
  插件{
    具体插件配置,插件的配置包括插件名称,后跟该插件的一组设置
    name => value
  }
}

filter {
  插件{
    具体插件配置
  }
}

output {
  插件{
    具体插件配置
  }
}

插件配置值的支持数据类型:

  • Array:users => [ {id => 1, name => bob}, {id => 2, name => jane} ]
  • Lists:path => [ "/var/log/messages", "/var/log/*.log" ]
  • Boolean:ssl_enable => true
  • Bytes:my_bytes => "1024" 表示1024个字节
  • codec:codec => "json"
  • Hash:match => { "field1" => "value1" "field2" => "value2" }
  • Number:port => 33
  • Password:my_password => "123456"
  • URI:my_uri => "http://foo:bar@example.net"
  • Path:my_path => "/tmp/logstash"
  • String:"直接就是一个字符串"

logstash.config的配置示例

条件语句和临时字段(看这里

  1. 使用if条件语句可以在特定条件下过滤或输出事件,语法是:
    if EXPRESSION {
      ...
    } else if EXPRESSION {
      ...
    } else {
      ...
    }
  2. 使用@metadata代表临时字段,可用于条件语句中,该字段的值不会出现这结果集中

Logstash中的通信

同一个Logstash实例中连接多个管道的信息,请参阅多管道管道到管道通信

不同的Logstash实例之间建立通信,请使用Logstash到Logstash的通信,或使用中间队列,例如Kafka或Redis。

利用X-Pack配置集中式管道管理

x-pack介绍,在logstash中的可行的配置在Kibana中配置集中式管道管理

使用Logstash和相关的性能调优

  • 如何确保数据的可扩展性、持久性和安全性?(看这里

    在输入插件和Logstash直接使用Kafka消息队列,输入插件把消息推送给Kafka,再由Kafka推送数据经过Logstash的Kafka输入插件输入Lagstash。
    TCP,UDP和HTTP协议是将数据输入Logstash的常用方法。Logstash可以使用相应的TCPUDP和 HTTP输入插件公开端点侦听器。TCP,UDP和HTTP源也可以通过Kafka推送数据到Logstash也可以直接通过负载均衡直接将数据输入给Logstash

  • 性能调优(看这里
    借助于JVisualVM工具可以分析JVM情况,根据情况进行性能调优

  • 如何监控Logstash?使用API使用X-Pack
    Logstash提供了节点信息API插件信息API节点统计API热点线程API来进行检索有关Logstash的运行情况。
    X-Pack插件也提供了logstash相关的监控功能,将在Kibana中以图形方式展现

  • 如何编写一个Logstash的Java插件(了解)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值