我正在使用elk堆栈来保留和监视我的k8s集群的nginx入口日志。我用的不是kibana,而是Grafana,也不是fluentd,我用的是fuent bit。我发现了一份文件,上面写着弹性搜索可以保留日志7天,我还发现了一篇文章,上面说它可以长期保留日志。
我想要的只是过去6个月的日志,除此之外的任何日志都不需要。
我已经检查了elasticsearch的values.yaml文件,看看我是否可以找到更改日志保留时间的配置选项,但没有用。
是否有人使用过类似的堆栈并知道如何更改日志保留时间???非常感谢您抽出时间。
为了保留数据,您需要配置索引生命周期策略。目前,如果您尚未配置ILM策略,那么Elastic将在整个生命周期内保留日志数据,并且不会自动删除。您也可以从Kibana创建策略,但正如您所提到的,您没有使用Kibana,您可以按照以下命令操作。
要从Kibana创建生命周期策略,请打开菜单并转到堆栈管理>索引生命周期策略。单击创建策略。
您可以使用以下API配置ILM策略:
PUT _ilm/policy/my_policy
{
"policy": {
"phases": {
"hot": {
"actions": {
"rollover": {
"max_age": "7d"
}
}
},
"delete": {
"min_age": "30d",
"actions": {
"delete": {}
}
}
}
}
}
如果索引至少在7天前创建,则上述策略将滚动该索引,并在滚动30天后删除该索引。
您可以使用以下命令将创建的策略分配给您的索引:
PUT logs-my_app-default/_settings
{
"index": {
"lifecycle": {
"name": "my_policy"
}
}
}
更新
您可以使用解释生命周期API来验证ILM是否正常工作。
GET my-index-000001/_ilm/explain