我使用logstash + elasticsearch来收集syslog,并希望将ttl设置为日志老化
我在logstash中找到一个名为elasticsearch-template.json的文件,路径为logstash / logstash-1.4.2 / lib / logstash / outputs / elasticsearch / elasticsearch-template.json
我在文件中添加ttl信息,如下所示:
{
"template" : "logstash-*",
"settings" : {
"index.refresh_interval" : "5s"
},
"mappings" : {
"_default_" : {
"_all" : {"enabled" : true},
"dynamic_templates" : [ {
"string_fields" : {
"match" : "*",
"match_mapping_type" : "string",
"mapping" : {
"type" : "string", "index" : "analyzed", "omit_norms" : true,
"fields" : {
"raw" : {"type": "string", "index" : "not_analyzed", "ignore_above" : 256}
}
}
}
} ],
"_ttl": {
"enabled": true,
"default": "1d"
},
"properties" : {
"@version": { "type": "string", "index": "not_analyzed" },
"geoip" : {
"type" : "object",
"dynamic": true,
"path": "full",
"properties" : {
"location" : { "type" : "geo_point" }
}
}
}
}
}
}
然后重新启动logstash,删除所有elasticsearch索引。 我在弹性搜索中检查新索引的映射,但它没有以这种方式工作。
如何配置索引模板?
答案 0 :(得分:8)
您需要更改您的logstash配置。
如果你已经遵循了默认设置,logstash已经在elasticsearch中创建了一个名为logstash
的模板,logstash将继续使用存储在elasticsearch中的模板,除非你不明确告诉它。
修改您找到的模板文件,但除此之外,在您的logstash配置中,设置以下内容:
output {
elasticsearch {
...
template_overwrite => true
...
}
}
答案 1 :(得分:2)
看起来JSON文件不在正确的文件夹中。以下是有关如何使用模板的文档: http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/indices-templates.html 关于文件夹:
配置
索引模板也可以放在模板目录下的配置位置(path.conf)中(注意,确保将它们放在所有符合条件的主节点上)。例如,名为template_1.json的文件可以放在config / templates下,如果它与索引匹配,则会添加它。以下是上述文件的示例:
答案 2 :(得分:0)
我已经创建了新的template.json文件,并将其定义为logstash.yml配置文件的elasticsearch输出块的路径:
def notification = [
attachments: [
[
color: "#2A9B3A",
author_name: DEV_NAME,
title: "Build Status",
title_link: BUILD_URL,
text: "Successful Build"
]
]
]
def response = ["curl", "-X", "POST", "-H", "Content-Type: application/json", "-d", JsonOutput.toJson(notification), "https://hooks.slack.com/services/${SLACK_WEBHOOK}"].execute().text
将Elastic的document_type定义为logstash.yml配置文件的输入块:
stdout { codec => json_lines }
elasticsearch {
"hosts" => ["ip:port"]
"index" => "name-of-index-%{+dd.MM.YYYY}"
template => "/{path-to-logstash-folder}/templates/your-template.json"
template_overwrite => true
manage_template => false
}
有我的template.json文件
input {
file {
path => "/your-path-to-directory/*.log"
type => "name-of-type"
}
}