如何从 filebeat 设置 kibana 索引模式?

How to set kibana index pattern from filebeat?

我正在将 elk stack 与节点应用程序一起使用。我使用 filebeat、logstash 格式将日志从主机发送到 logstash,并将数据发送到 elastic 并从 elastic 读取 kibana。在 kibana 中,我看到了像 filebeat-2019.06.16 这样的默认索引模式。

我想将其更改为 application-name-filebeat-2019.06.16。但它不起作用。我正在寻找一种在 filebeat 中执行此操作的方法,因为会有多个 applications/filebeats 但只有一个 logstash/elasticsearch/kibana.

我已经在 filebeat.yml.

尝试过这个 filebeat 配置
filebeat.inputs:
- type: log
  paths:
    - /var/log/*.log
  fields:
    - app_name: myapp

output.logstash:
  index: "%{fields.app_name}-filebeat-%{[agent.version]}-%{+yyyy.MM.dd}"
  hosts: ["${ELK_ENDPOINT}"]
  ssl.enabled: true
  ssl:
    certificate_authorities:
      - /etc/pki/tls/certs/logstash-beats.crt

setup.template.name: "%{fields.app_name}-filebeat-%{[agent.version]}"

相同类型的文件将与每个节点应用程序主机和 filebeat。

logstash 也使用此配置初始化

02-节拍-input.conf

input {
  beats {
    port => 5044
    codec => "json"
    ssl => true
    ssl_certificate => "/etc/pki/tls/certs/logstash-beats.crt"
    ssl_key => "/etc/pki/tls/private/logstash-beats.key"
  }
}

30-output.conf

filter {
  json {
    source => "message"
  }
}

output {
  elasticsearch {
    hosts => ["localhost"]
    manage_template => false
    index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"
    document_type => "%{[@metadata][type]}"
  }
}

它正在生成类似 filebeat-2019.06.16 的索引模式。我想要 application-name-filebeat-2019.06.16.

这样的东西

您正在将 filebeat 日志发送到 logstash,您需要在 logstash 管道中定义索引名称,而不是在 filebeat 配置文件中。

尝试以下输出:

output {
  elasticsearch {
    hosts => ["localhost"]
    manage_template => false
    index => "%{[fields][app_name]}-%{[@metadata][beat]}-%{+YYYY.MM.dd}"
    document_type => "%{[@metadata][type]}"
  }
}

要在 filebeat 上设置索引名称,您需要将日志直接发送到 elasticsearch。

如果您有其他节拍将数据发送到同一端口并且其中一些没有字段 [fields][app_name] 您可以在输出上使用条件或在管道上创建字段。