5,扩展方案

之前的章节讲述的都是单个Logstash进程,及其对数据的读取,解析和输出处理。

但是,在生产环境中,从每台应用服务器运行logstash 进程并将数据直接发送到Elasticsearch里,显然不是第一选择,


原因有三:

1. 过多的客户端连接对Elaticsearch 是一种额外的压力


2. 网络抖动会影响到Logstash 进程,进而影响生产应用

3.运维人员未必愿意在生产服务器上部署Java,或者让Logstash 跟业务代码争夺Java资源。

所以,在实际运用中,Logstash 进程被氛围两个不同的角色。

1.运行在应用服务器上的尽量减轻运行压力,只做读取和转发,这个角色叫Shipper


2.运行在独立服务器上的完成数据解析处理,负责写入Elasticsearch的角色 叫做Indexer


5.1 通过Redis 队列扩展:


Redis 服务器是Logstash 官方推荐的Broker选项,Broker 角色也就意味着会同时存在输入和输出两个插件。


5.1.1 读取Redis数据

zjtest7-frontend:/usr/local/logstash-2.3.4/config# cat redis.comf 
input {
    redis {
       data_type =>"pattern_channel"
       key =>"logstash-list"
       host=>"192.168.32.67"
       port=>6379
       password => "1234567"
          }
}

output {
 stdout {
  codec=>rubydebug{}
   }
}



zjtest7-frontend:/usr/local/logstash-2.3.4/config# ../bin/logstash -f redis.comf 
Settings: Default pipeline workers: 1
Pipeline main started
{
       "message" => "hello zjzc",
          "tags" => [
        [0] "_jsonparsefailure"
    ],
      "@version" => "1",
    "@timestamp" => "2016-09-01T06:29:47.551Z"
}

原文地址:https://www.cnblogs.com/zhaoyangjian724/p/6199257.html