elasticsearch 如何在Logstash中设置Elasticsearch输出模板
我对Kibana和ELK(Elasticsearch、Logstash和Kibana)堆栈比较陌生,我在设置一个堆栈方面做得很好,但我遇到了一个奇怪的问题,需要一些帮助来了解发生了什么 我使用ELK堆栈来处理一些Apache日志,但我有自己的自定义类型设置。因此,我需要显式地指定字段类型,而不是使用Logstash(或者是Kibana?)猜测数据映射将是什么 从中可以很清楚地看到,我可以在elasticsearch 如何在Logstash中设置Elasticsearch输出模板,elasticsearch,logstash,kibana,elastic-stack,elasticsearch,Logstash,Kibana,Elastic Stack,我对Kibana和ELK(Elasticsearch、Logstash和Kibana)堆栈比较陌生,我在设置一个堆栈方面做得很好,但我遇到了一个奇怪的问题,需要一些帮助来了解发生了什么 我使用ELK堆栈来处理一些Apache日志,但我有自己的自定义类型设置。因此,我需要显式地指定字段类型,而不是使用Logstash(或者是Kibana?)猜测数据映射将是什么 从中可以很清楚地看到,我可以在输出中设置模板值。elasticsearch配置块如下所示: output { elasticsearc
输出中设置模板值。elasticsearch
配置块如下所示:
output {
elasticsearch {
hosts => ["localhost:9200"]
index => "logstash-apache"
document_id => "%{[@metadata][fingerprint]}"
manage_template => false
template => "/path/to/logstash/logstash-apache.json"
template_name => "logstash-apache"
template_overwrite => true
}
stdout {
codec => rubydebug
}
}
100%确定设置了正确的路径。但是出于某种原因,如果我使用它,启动Logstash并让它做它的事情,我在Logstash apache.json
中指定的映射就不会出现。Kibana中的索引也是logstashapache
,所以这应该可以正常工作吗
因此,我现在要做的是将映射模板直接预加载到Elasticsearch中,如下所示:
curl -ss -XPUT "http://localhost:9200/_template/logstash-apache/" -H 'Content-Type: application/json' -d @"/path/to/logstash/logstash-apache.json";
它显然工作得很好,数据得到了正确的映射……但这样做相当笨拙。如果所有这些都来自我设置的logstash apache.conf
文件,那就更干净了
那么我做错了什么?如何才能通过logstash apache.conf
使用我的自定义映射模板,而不必跳过curl
命令的额外环?问题是您已将manage_template
设置为false
,这将完全禁用此模板创建功能,并要求您像现在一样手动创建模板
因此,您的输出
部分应该如下所示,并且您应该可以继续:
elasticsearch {
hosts => ["localhost:9200"]
index => "logstash-apache"
document_id => "%{[@metadata][fingerprint]}"
manage_template => true <-- change this line
template => "/path/to/logstash/logstash-apache.json"
template_name => "logstash-apache"
template_overwrite => true
}
elasticsearch{
hosts=>[“localhost:9200”]
索引=>“logstash apache”
文档id=>“%{[@metadata][fingerprint]}”
manage_template=>true“/path/to/logstash/logstash apache.json”
模板_name=>“logstash apache”
模板覆盖=>true
}
谢谢!我知道这很简单。但不是那么简单。但我很感激!只是一件小事:作为一个相对新的麋鹿堆栈世界,阅读的描述相比,只是有点混乱。不知道一个值会影响另一个值。基本上,manage\u template
会打开/关闭模板管理<代码>模板
在启用模板管理时提供模板的路径template\u name
是在ES中保存模板时使用的名称。并且template\u overwrite
告诉Logstash如果已经存在同名的模板,是否覆盖该模板。感谢进一步的澄清。我理解这一点。但我现在要说的是,在这个问题和答案的背景下,官方文件在这个背景下似乎有点混乱s和的官方文档中声明的目的并不能真正解释它们之间的联系。公平地说,如果您愿意,您可以自由地建议对文档进行改进。