如何轮转 ELK 日志?

How to rotate ELK logs?

我在 3 个主机中总共有大约 250 GB 的索引,即 ELK 集群中的 750 GB 数据。

那么我如何轮换 ELK 日志以在我的 ELK 集群中保留三个月的数据,而较旧的日志应该被推送到其他地方。

您可以使用“indexname-%{+YYYY.MM}”命名格式创建索引。这将每月创建一个不同的索引。

然后您可以使用像 curator 这样的插件,根据时间戳过滤这个索引。 策展人可以帮助您设置 CRON 作业以清除那些旧索引或将它们备份到某个 s3 存储库中。

参考 - Backup or Restore using curator

此外,您甚至可以在需要时直接从 s3 存储库恢复这些备份索引以进行历史分析。

dexter_ 的回答是正确的,但由于答案是旧的,更好的答案是:

版本7.x的elastic stack提供了索引生命周期管理策略,可以通过kibana GUI轻松管理,elk stack原生。 PS,您仍然必须按照建议的 dexter_

管理索引,例如 "indexname-%{+YYYY.MM}"

elastic.co/guide/en/elasticsearch/reference/current/index-lifecycle-management.html

我花了一段时间才弄清楚确切的语法和规则,所以我将 post 用于删除旧索引的最终策略(它基于 https://aws.amazon.com/blogs/big-data/automating-index-state-management-for-amazon-opensearch-service-successor-to-amazon-elasticsearch-service/ 中的示例):

{
    "policy": {
        "description": "Removes old indexes",
        "default_state": "active",
        "states": [
            {
                "name": "active",
                "transitions": [
                    {
                        "state_name": "delete",
                        "conditions": {
                            "min_index_age": "14d"
                        }
                    }
                ]
            },
            {
                "name": "delete",
                "actions": [
                    {
                        "delete": {}
                    }
                ],
                "transitions": []
            }
        ],
        "ism_template": {
            "index_patterns": [
                "mylogs-*"
            ]
        }
    }
}

它将自动为任何新的 mylogs-* 索引应用该策略,但您需要为现有索引手动应用它(在“索引管理”->“索引”下)。