如何更改 elk stack 中的日志保留策略?
How to change log retention policy in elk stack?
我正在使用 elk stack 来保留和监控我的 k8s 集群的 nginx-ingress 日志。我使用的不是 kibana,而是 Grafana,而不是 fluentd,我使用的是 fuent-bit。我发现一份文档说 elasticsearch 保留日志 7 天,我还找到一篇文章说它保留日志终身。
我只需要最近 6 个月的日志,不需要超过 6 个月的日志。
我检查了 elasticsearch 的 values.yaml 文件,看是否可以找到更改日志保留时间的配置选项,但无济于事。
有没有人使用过类似的堆栈并且知道如何更改日志保留时间???
非常感谢您的宝贵时间。
要保留数据,您需要配置Index Lifecycle Policy。目前,如果你没有配置ILM策略,那么Elastic会保留日志数据一辈子,不会自动删除。您也可以从 Kibana 创建策略,但正如您提到的您没有使用 Kibana,您可以按照以下命令操作。
To create a lifecycle policy from Kibana, open the menu and go to
Stack Management > Index Lifecycle Policies. Click Create policy.
您可以使用以下方法配置 ILM 策略 API:
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"
}
}
}
更新
您可以使用 Explain lifecycle API 来验证 ILM 是否正常工作。
GET my-index-000001/_ilm/explain
我正在使用 elk stack 来保留和监控我的 k8s 集群的 nginx-ingress 日志。我使用的不是 kibana,而是 Grafana,而不是 fluentd,我使用的是 fuent-bit。我发现一份文档说 elasticsearch 保留日志 7 天,我还找到一篇文章说它保留日志终身。
我只需要最近 6 个月的日志,不需要超过 6 个月的日志。
我检查了 elasticsearch 的 values.yaml 文件,看是否可以找到更改日志保留时间的配置选项,但无济于事。
有没有人使用过类似的堆栈并且知道如何更改日志保留时间??? 非常感谢您的宝贵时间。
要保留数据,您需要配置Index Lifecycle Policy。目前,如果你没有配置ILM策略,那么Elastic会保留日志数据一辈子,不会自动删除。您也可以从 Kibana 创建策略,但正如您提到的您没有使用 Kibana,您可以按照以下命令操作。
To create a lifecycle policy from Kibana, open the menu and go to Stack Management > Index Lifecycle Policies. Click Create policy.
您可以使用以下方法配置 ILM 策略 API:
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"
}
}
}
更新
您可以使用 Explain lifecycle API 来验证 ILM 是否正常工作。
GET my-index-000001/_ilm/explain