filebeat 中的 Apache 响应字段名称

Apache response field name in filebeat

我正在使用带有 ES 作为输出的 filebeat。我已经指定: input_type: 日志 document_type:阿帕奇 路径: - /var/log/httpd/*_log 在 /etc/filebeat/filebeat.yml 中,我能够在 Kibana 中成功看到结果。 然而,我正在玩弄 "Watcher" 并尝试基于 404 的 http return 代码创建一个手表,我在我的 Kibana filebeat 结果中看不到任何字段对应于且仅对应于“404”,一些东西像 "response",恐怕我遗漏了一些东西,因为 filebeat 和 ELK 是大产品,我们将不胜感激。

Filebeat 在每个事件的 message 字段中转发日志行 "as is"。为了进一步处理消息以将响应代码等详细信息提取到它们自己的字段中,您可以使用 Logstash。

在 Logstash 中,您将使用 beats input to receive data from Filebeat, then apply a grok filter 从消息中解析数据,最后使用 elasticsearch 输出将数据写入 Elasticsearch。

使用 Logstash 的替代方法是使用 "Ingest Node" 和 Elasticsearch 中合适的管道。

https://www.elastic.co/guide/en/beats/filebeat/5.0/configuring-ingest-node.html

您可以设置包含 Grok 处理器的管道:

https://www.elastic.co/guide/en/elasticsearch/reference/5.0/grok-processor.html

我用这个 pipeline.json 文件做了这个:

{
  "description": "Combined Apache Log Pipeline",
  "processors": [
    {
      "grok": {
        "field": "message",
        "patterns": [ "%{COMBINEDAPACHELOG}" ]
      }
    }
  ]
}

然后我运行这个命令将管道部署到集群:

curl -XPUT 'http://node-01.example.com:9200/_ingest/pipeline/combined-apache-log' -d@pipeline.json

最后,我更新了 filebeat.yml 以告知 Elasticsearch 输出使用管道处理事件:

#================================ Outputs =====================================

#-------------------------- Elasticsearch output ------------------------------
output.elasticsearch:
  # Array of hosts to connect to.
  hosts:
    - "192.168.0.1:9200"
    - "192.168.0.2:9200"
    - "192.168.0.3:9200"
  loadbalance: true
  pipeline: combined-apache-log

这似乎不需要 Logstash 就可以工作。

我肯定会看到响应、推荐人、响应等字段