【问题标题】:ELK: Setup multiple http inputs of logstash ELK stackELK:设置logstash ELK堆栈的多个http输入
【发布时间】:2017-11-10 08:14:50
【问题描述】:

问题:

  • 如何设置 logstash ELK 堆栈的多个 http 输入

我已经拥有的:

input {
  http {
        host => "0.0.0.0"
        port => "5000"
    }
}

output {
  elasticsearch {
      hosts => "elasticsearch:9200"
  }
}
  • 我可以使用邮递员在 URL 上轻松发送我的组件日志(作为 JSON):http://localhost:5000

我需要什么:

  • 多个 http 输入,因为我有多个组件 - 类似于(但第二个输入不监听请求):
input {
  http {
        host => "0.0.0.0"
        port => "5000"
  }
  http {
      host => "0.0.0.0"
      port => "7070"
  }
}
  • 我必须区分 Kibona 中的那些组件

【问题讨论】:

  • 您可以在每个http 输入中使用type 设置来区分文档的来源

标签: elasticsearch logstash kibana elastic-stack logstash-configuration


【解决方案1】:

您可以为每个输入设置一个类型并使用该类型生成索引名称:

input {
  http {
    host => "0.0.0.0"
    port => "5000"
    type => "A"
  }

  http {
    host => "0.0.0.0"
    port => "5001"
    type => "B"
  }
}

使用类型可能就足够了,因为您可以使用它过滤记录。但是您可能还需要将每种类型的记录存储在不同的索引中,因为每种类型可能对同一字段使用不同的类型。这会导致映射冲突。

output {
  elasticsearch {
    hosts => "elasticsearch:9200"
    index => "%{[type]}-%{+YYYY.MM.dd}"
  }
}

【讨论】:

  • 不允许设置同一主机和端口的两个端点。此外,不允许在两个不同的端口上进行设置。第一个输入总是可以正常工作,但第二个输入不听任何请求。
  • 抱歉打错字了。
【解决方案2】:

我已经解决了这个问题。

我需要在 logstash: 部分的 docker-compose.yml 文件中添加一个端口,例如:

ports:
  - "5000:5000"
  - "7070:7070"

还有

type => "A"

很好用。

【讨论】:

    猜你喜欢
    • 2018-09-13
    • 2019-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多