elk版本7.4版本,结构是filebeat—kafka—logstash—es—kibana
需求 每日凌晨生成固定时间格式的索引(类似index-2023.05.09),这个索引受到索引生命周期的管理,进行热,冷,删除阶段的管理
当前已做到
当天索引已经生成了,数据正常写入
elasticsearch {
hosts => [ "localhost:9200" ]
index => "logs-%{+YYYY.MM.dd}"
}
}
{
"index_patterns": ["logs-*"],
"settings": {
"index.lifecycle.name": "logs_policy",
"index.lifecycle.rollover_alias": "logs"
},
"mappings": {
"properties": {
"message": { "type": "text" }
}
}
}
PUT _ilm/policy/logs_policy
{
"policy": {
"phases": {
"hot": {
"actions": {
"rollover": {
"max_age": "1d",
"max_size": "5gb"
}
}
},
"delete": {
"min_age": "7d",
"actions": {
"delete": {}
}
}
}
}
}
已经做完这三步,索引在凌晨时滚动未设置
不知道这个步骤有没有问题,求指导,谢谢
根据您提供的信息,您已经完成了以下步骤:
在Logstash中使用Elasticsearch输出插件将数据写入Elasticsearch索引,索引名称为"logs-%{+YYYY.MM.dd}",即每天生成一个新的索引。
使用Index Lifecycle Management(ILM)创建了一个名为"logs_policy"的策略,该策略定义了索引的生命周期,包括热、冷和删除阶段。
创建了一个名为"logs"的rollover_alias,该别名将用于在索引滚动时切换到新的索引。
根据您提供的信息,您的索引在凌晨时没有滚动。这可能是由于以下原因之一:
PUT logs-*/_settings
{
"index": {
"lifecycle": {
"name": "logs_policy",
"rollover_alias": "logs"
}
}
}
PUT logs_policy/_settings
{
"policy": {
"status": "true"
}
}
如果您已经检查了以上原因,并且仍然无法解决问题,请提供更多信息,例如Elasticsearch和Logstash的日志,以便我们更好地帮助您解决问题。
该回答引用ChatGPT
PUT _template/template_logs
{
"index_patterns": [
"logs-*"
],
"settings": {
"index": {
"lifecycle": {
"name": "logs_policy",
"rollover_alias": "logs",
"index_codec": "best_compression"
},
"number_of_shards": "1",
"number_of_replicas": "1"
}
},
"aliases": {
"logs_write": {}
},
"mappings": {
"properties": {
"timestamp": {
"type": "date"
},
...
}
}
}
PUT _ilm/policy/logs_policy
{
"policy": {
"phases": {
"hot": {
"actions": {
"rollover": {
"max_age": "1d",
"max_size": "5gb"
}
}
},
"delete": {
"min_age": "7d",
"actions": {
"delete": {}
}
}
}
}
}
PUT logs-000001
{
"aliases": {
"logs": {
"is_write_index": true
}
}
}
以下答案由GPT-3.5大模型与博主波罗歌共同编写:
您已经完成了步骤中的大部分内容,只需要在logstash的配置文件中添加以下内容,就可以实现每天凌晨生成索引的需求了:
output {
elasticsearch {
hosts => ["localhost:9200"]
index => "logs-%{+yyyy.MM.dd}"
ilm_enabled => true
ilm_rollover_alias => "logs"
ilm_policy => "logs_policy"
}
}
这里的index中的 %{+yyyy.MM.dd}
表示将当前时间格式化为 年-月-日
的形式,例如:“2023.05.09”。
另外,您可以使用 Elasticsearch 的 API 进行验证。在控制台执行以下命令,查看索引的状态是否正确:
GET _cat/indices/logs-*?v
如果返回的结果中,包含滚动后的新索引名称,且状态是绿色,则表示索引生成和状态转移都是成功的。
如果我的回答解决了您的问题,请采纳!