Filebeat:为每个输入设置elasticsearch索引名称

问题描述 投票:0回答:1

我正在尝试设置 filebeat,以便我有两个日志源,最终位于目标 Logstash 的不同索引中。所有涉及的服务(filebeat、logstash、elastic)版本均为 8.12.0。

我在麋鹿论坛上找到了这个问题,其解决方案是“您可以设置每个输入的索引”(如此处记录)。

但是,像这样设置我的输入部分似乎不起作用;数据似乎完全丢失了。这是我完整的 filebeat 配置:

filebeat.inputs:
  - type: filestream
    id: "filestream-id"
    enabled: true
    index: "index-id"
    paths:
      - /usr/share/filebeat/logs/*.log

fields_under_root: true

processors:
  - dissect:
      tokenizer: "/usr/share/filebeat/logs/%{service_name}.log"
      field: "log.file.path"
      target_prefix: ""

output.logstash:
  hosts: [ "loghost:5044" ]

但是设置的

index-id
并没有出现在elk主机上。这是目标logstash的配置:

input {
  beats {
    port => 5044
    codec => "json"
  }
}

filter {
  mutate {
    remove_field => ["[event][original]"]
  }
}

output {
  elasticsearch {
    index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"
    hosts=> "${ELASTIC_HOSTS}"
    user=> "${ELASTIC_USER}"
    password=> "${ELASTIC_PASSWORD}"
    cacert=> "certs/ca/ca.crt"
  }
  stdout {
    codec => rubydebug
  }
}

如果我将

index: ...
条目从
filebeat.inputs
部分移至
output.logstash
,一切都会正常;但我想最终在该主机上添加更多输入,这些输入最终应该出现在另一个索引中。

出了什么问题?

logstash filebeat elk
1个回答
0
投票

当您在 filebeat 中的 filesteam 输入上设置索引选项时,结果取决于输出类型。对于elasticsearch 输出,它设置写入的索引。对于其他输出类型,它在事件元数据中设置 raw_index 字段。如果您的文件流输入配置为

- type: filestream
  id: my-filestream-id
  enabled: true
  paths:
    - /tmp/foo*.txt
  index: "someRandomName"

那么logstash输出接收到的事件将会有:

 "@metadata" => {
    "raw_index" => "someRandomName",
    ...

然后您可以在 Logstash 输出部分中将其与 sprintf 引用一起使用。

© www.soinside.com 2019 - 2024. All rights reserved.