ELK入门系列(03)——Logstash的快速安装

1、前言

Logstash是一个开源的服务器端数据处理管道,可以同时从多个数据源获取数据,并对其进行转换,然后将其发送到你最喜欢的“存储”。(当然,我们最喜欢的是Elasticsearch)。简单的说,logstash就是一个类似于flum的文件监听工具

2、原理介绍及组件

1565418958(1).jpg

logstash在ELK系统中扮演着数据搬运的角色,举足轻重。我们可以看到logstash内部主要分为三个组件,输入(input),过滤器(filter),输出(output)

2.1、输入(input)
input.jpg

支持插件:elasticsearch,file,http_poller,jdbc,log4j,rss,rabbitmq,redis,syslog,tcp,udp…等

2.2、过滤器(filter)
filter.jpg

支持插件:grok,json,mutate,split …等

2.3、输出(output)
output.jpg

支持插件:email,elasticsearch,file,http,mongodb,rabbitmq,redis,stdout,tcp,udp …等

3、logstash的优缺点

  • 优点
    1 、可伸缩性
    节点应该在一组Logstash节点之间进行负载平衡。建议至少使用两个Logstash节点以实现高可用性。
    2 、弹性
    Logstash持久队列提供跨节点故障的保护。对于Logstash中的磁盘级弹性,确保磁盘冗余非常重要。
    3、 可过滤
    对事件字段执行常规转换。您可以重命名,删除,替换和修改事件中的字段
    4 、可扩展
    可扩展插件生态系统,提供超过200个插件,以及创建和贡献自己的灵活性。
  • 缺点
    1 、Logstash耗资源较大,运行占用CPU和内存高。
    2 、另外没有消息队列缓存,存在数据丢失隐患。

3、下载解压安装

最新版 https://www.elastic.co/downloads/logstash

2.3.4版 https://www.elastic.co/downloads/past-releases/logstash-2-3-4

tar -xzvf logstash-2-3-4.tar.gz

4、配置结构

logstash在启动时要指定配置,这个配置中需要配置(input、filter、output)

#输入
Input{
}
#加工过滤
Filter{
}
#输出
Output{
}

以下我们简单举几个配置案例,并根据案例去启动观察

执行: ./logstash -f ./test*.conf

4.1、简单的输入输出 test1.conf
input{
 stdin{}
}

output{
 stdout{}
}
test1.jpg
4.2、输入输出json test2.conf
input{
 stdin{}
}

output{
 stdout{
  codec => json  ##json输出
 }
}
test2.jpg
4.3、监听文件输出json test3.conf
input{
 file{
  path => "/usr/local/logs/*.log" ##指定类型为file,指定文件路径
 }
}

output{
 stdout{
  #codec => json
 }
}
4.4、监听文件输出到kafka test4.conf
input{
 file{
  path => "/usr/local/logs/*.log"
 }
}

output{
 stdout{codec => rubydebug}
 kafka{
  bootstrap_servers => "127.0.0.1:9092"
  codec => json
  topic_id => "kafka-logstash"
  compression_type => "snappy"
 }
}
4.5、监听文件输出到ES test5.conf
input{
 file{
  path => "/usr/local/logs/*.log"
 }
}

output{
 elasticsearch{
  hosts=>["127.0.0.1:9200"]
  index => "es-message-%{+YYYY.MM.dd}"
 }
 stdout{codec => rubydebug}
}
4.6、监听kafka输出到ES test6.conf
input{
 kafka{
  bootstrap_servers => ["127.0.0.1:9092"] ##kafka地址,可以是集群
  ##client_id => "kafka-logstash"
  auto_offset_reset => "latest"  ##从最新的偏移量开始消费
  topics => ["kafka-logstash"]  ## 数组类型,可配置多个topic
  decorate_events => true  #此属性会将当前topic、offset、group、partition等信息也带到message中
  consumer_threads => 5
 }
}

output{

 elasticsearch{
  hosts=>["127.0.0.1:9200"]
  index => "rc-admin-business-log"
 }
 stdout{
  #codec => json
 }
}

以上是logstash的一些简单使用配置,logstash有非常灵活的配置,具体可以参考官网文档

相关参考:

推荐阅读更多精彩内容