0

我有 2 台服务器上安装了 filebeat,在另一台服务器上我安装了 ELK 堆栈。

在 Logstash conf 目录下的 ELK 服务器上,我创建了代表 2 个服务器的 2 个文件

在两台服务器上 在 filebeat 配置文件中,我为每台服务器指定了不同的端口(Logstash 作为输出)

这是我的服务器 1 的 Logstash 文件,

input {
  beats {
    port => 5044
  }
}

output {
  if "api_logs" in [tags] {
  elasticsearch {
    hosts => [ "es:9200" ]
    index => "api_logs-%{+YYYY.MM.dd}"
  }
 }
 else if "error_logs" in [tags] {
 elasticsearch {
    hosts => [ "es:9200" ]
    index => "error_logs-%{+YYYY.MM.dd}"
  }
 }
}

这是我的服务器 2 的 Logstash 文件,

input {
  beats {
    port => 5045
  }
}

output {
  if "api_logs" in [tags] {
  elasticsearch {
    hosts => [ "es:9200" ]
    index => "api_logs-%{+YYYY.MM.dd}"
  }
 }
 else if "error_logs" in [tags] {
 elasticsearch {
    hosts => [ "es:9200" ]
    index => "error_logs-%{+YYYY.MM.dd}"
  }
 }
}

我的服务器 1 的 filebeat 文件

filebeat.inputs:

- type: log
  tags: ["api_logs"]
  enabled: true
  paths:
    - logs/api*

- type: log
  tags: ["error_logs"]
  enabled: true
  paths:
    - logs/error*
output.logstash:
  hosts: ["es:5044"]

我的服务器 2 的 filebeat 文件

filebeat.inputs:

- type: log
  tags: ["api_logs"]
  enabled: true
  paths:
    - logs/api*

- type: log
  tags: ["error_logs"]
  enabled: true
  paths:
    - logs/error*
output.logstash:
  hosts: ["es:5045"]

但是当我在 Kibana 中创建索引时,它只显示一个服务器日志,而不是另一台服务器(在 host.name 字段下)。

请提出一些建议。

4

1 回答 1

0

配置中没有明显的错误,如果它适用于一台服务器,那么它也应该适用于另一台服务器,所以我怀疑这是一个配置错误的问题。

我认为查看服务器之间的差异并确保它们的配置完全相同是个好主意。

检查以下内容:

  • 通过 filebeat 从两台服务器(尤其是故障服务器)连接到 Logstash 服务器和端口
  • 比较两台服务器上日志文件的文件权限
  • 在 filebeat 和 logstash 上启用 INFO 日志记录,并尝试查看是否有任何问题
  • 确保版本与两台服务器上的 beats 和 ELK 兼容(https://www.elastic.co/support/matrix#matrix_compatibility
于 2019-08-02T17:38:04.857 回答