在 ASG 中为 logstash 集群 运行 配置 AWS 网络负载均衡器

configuring AWS Network Load Balancer for logstash cluster Running in ASG

input {
 beats {
   type => "testlog"
   port => "5066"
 }
}
filter {
   if [message] =~ /{.*}/ {
       grok { match => { "message" => "(?<[@metadata][json]>({.*}))"} }
       json { source => "[@metadata][json]" remove_field => [ "message" ] }
   }
}

output {
 stdout {
       codec => rubydebug
       }
 amazon_es {
   hosts => ["****************************"]
   region => "us-east-1"
   index => "filebeatsecondpipelinefinal1-%{+YYYY.MM.dd}"
   #user => "elastic"
   #password => "changeme"
 }
}
input {
  beats {
    type => "testlog"
    port => "5044"
  }
}
filter {
    if [message] =~ /{.*}/ {
        grok { match => { "message" => "(?<[@metadata][json]>({.*}))"} }
        json { source => "[@metadata][json]" remove_field => [ "message" ] }
    }
}

output {
  stdout {
        codec => rubydebug
        }
  amazon_es {
    hosts => ["************************"]
    region => "us-east-1"
    index => "filebeatsecondpipelinefinal2-%{+YYYY.MM.dd}"
    #user => "elastic"
    #password => "changeme"
  }
}

您需要对 ELB 和 Logstash 配置进行一些更改。

首先,端口 9600 是获取 logstash 指标的 REST 端口,您可以使用它来执行 healthcecks,但默认情况下,出于安全原因,logstash 将此端口绑定到环回 ip (127.0.0.0)。 0.1),您需要在 logstash.yml 中添加 http.host 配置,以将其绑定到实例的内部 IP。

http.host: "instance-local-ip"

您需要在每个 logstash 主机中执行此操作,您还可以在 logstash 中使用环境变量 config

其次,您的ELB目标组使用了错误的端口。您的管道正在使用端口 50445066,因此您需要一个用于端口 5044 的目标组和另一个用于端口 5066 的目标组,并且在为这些端口配置健康检查时目标组您需要选择覆盖端口选项并使用端口 9600.

这样您的目标组将在端口 50445066 上侦听,但会在端口 9600.

上对您的实例执行健康检查