我使用带有ES的filebeat作为输出。我已经指定: input_type:log document_type:apache 路径: - / var / log / httpd / * _ log 在/etc/filebeat/filebeat.yml中,我能够在Kibana中成功查看结果。 然而,我正在和#34; Watcher"并尝试基于http返回码404创建一个手表,我看到我的Kibana文件结果中没有字段对应于和#34; 404",类似于"响应",我担心我遗失了一些东西,因为filebeat和ELK是大型产品,我们将不胜感激。
答案 0 :(得分:0)
Filebeat转发日志行"按原样#34;在每个事件的message
字段中。为了进一步处理消息以将响应代码等详细信息提取到他们自己的字段中,您可以使用Logstash。
在Logstash中,您将使用beats input从Filebeat接收数据,然后应用grok filter来解析消息中的数据,最后使用elasticsearch输出将数据写入Elasticsearch。 / p>
答案 1 :(得分:0)
使用Logstash的另一种方法是使用“摄取节点”,以及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即可运行。
我肯定会看到回复,推荐人,回复等字段。