【发布时间】:2015-02-15 18:38:43
【问题描述】:
我正在尝试在以下场景中使用 ELK (Elasticsearch+Logstash+Kibana) 堆栈:
我有大约十个应用程序通过 Logstash 将它们的日志发送到单个 Elasticsearch 集群。
其中一些应用程序自然会生成比其他应用程序更多的日志,有时,其中一个应用程序可能会因为错误而变得“疯狂”,因此生成的日志条目甚至比正常情况还要多。因此,集群中的可用磁盘空间可能会被单个应用程序的日志不公平地“占用”,从而没有足够的空间留给其他应用程序。
我目前正在通过 Elasticsearch Curator 管理可用磁盘空间。它定期运行,就像在 crontab 中一样,并根据磁盘使用配额删除旧索引。当所有索引使用的磁盘空间超过一定限制时,最旧的索引会被一个一个删除,直到它们使用的磁盘空间总和再次在指定的限制范围内。
这种方法的第一个问题是 Elasticsearch Curator 只能删除整个索引。因此,我必须将 Logstash 配置为每小时创建一个不同的索引,并增加它们的粒度;因此,Curator 一次删除较小的日志块。此外,很难决定 Curator 应该多久运行一次。如果应用程序以更高的速率生成日志,那么即使是一小时的索引也可能不够。其次,无法为每个不同的应用程序指定磁盘使用配额。
理想情况下,Elasticsearch 应该能够在索引达到某个磁盘使用限制时自行删除较旧的日志条目。这将消除定义 Curator 运行频率的问题。但是,我在 Elasticsearch 手册中找不到任何类似的功能。
有人会推荐一种不同的方法来解决这些问题吗?
参考资料: http://www.elasticsearch.org https://github.com/elasticsearch/curator
【问题讨论】:
标签: elasticsearch logstash kibana