适用于ELK的AWS设置良好

dar*_*age 7 hardware amazon-ec2 amazon-web-services elastic-stack

我们正在考虑在亚马逊上设置ELK堆栈,但我们并不知道我们需要什么样的机器来顺利处理它.现在我知道如果它没有顺利进行会变得明显,但我们仍希望了解我们对我们的情况需要什么.

所以我们4台服务器以自定义格式生成日志文件.每天大约有大约4500万行日志,产生大约4个文件600mb(gzip),所以每天约有24GB的日志.

现在我们正在研究ELK堆栈并希望Kibana的仪表板显示实时数据,因此我考虑使用syslog进行日志记录.

4台服务器 - > Rsyslog(在这4台服务器上) - > Logstash(AWS) - > ElasticSearch(AWS) - > Kibana(AWS)

所以现在我们需要弄清楚我们在AWS中需要什么样的硬件来处理这个问题.

我读了ElasticSearch的3个主人和最少2个数据节点.那么Kibana共有5台服务器+ 1台服务器,Logstash共有1台服务器?所以我需要总共7台服务器才能开始,但这有点像是有点过分了吗?我想保留我的数据1个月,所以最多31天,所以我在弹性搜索中会有大约1.4TB的原始日志数据(~45GB x 31)

但是,由于我并不知道最佳设置是什么,所以任何提示/提示/信息都是受欢迎的.

此外,为我处理此问题的系统或工具(节点故障等)可能很有用.

提前致谢,

darkownage

Mat*_*gen 9

以下是我构建云群的方法:

3主节点 - 这些节点协调集群并保持其中三个节点有助于容忍故障.理想情况下,这些将分布在可用区域.这些可能相当小,理想情况下不会收到任何请求 - 他们唯一的工作就是维护集群.在这种情况下设置discovery.zen.minimum_master_nodes = 2为维持仲裁.这些IP和这些IP只是您应该为所有群集节点提供的discovery.zen.ping.unicast.hosts

索引:你应该利用每日索引 - 请参阅https://www.elastic.co/guide/en/elasticsearch/guide/current/time-based.html这将在下面更有意义,但如果你也会有所帮助开始向上扩展 - 您可以随着时间的推移增加分片计数而无需重新编制索引.

数据节点:根据您的规模或性能要求,有一些选项 - i2.xlarge或d2.xlarge可以正常工作,但r3.2xlarge也是一个不错的选择.确保JVM堆保持<30GB.将数据路径保留在实例本地的临时驱动器上 - 对于此用例,EBS并不是那么理想,但根据您的要求可能就足够了.确保您有多个数据节点,因此副本分片可以跨可用区分割.随着您的数据需求的增加,只需扩展它们.

热/暖:根据使用情况 - 有时将数据节点拆分为热/暖(快速SSD /慢速HDD)是有益的.这主要是因为所有写入都是实时的,并且大多数读取都是在过去的几个小时内完成的.如果你可以将昨天的数据移动到更便宜,速度更慢的驱动器上,那么它会有所帮助.这有点复杂,但您可以在https://www.elastic.co/blog/hot-warm-architecture上阅读更多内容.这需要在每晚添加一些标签和使用策展人,但通常是值得的,因为从更昂贵的SSD移动大量未搜索的数据可以节省成本.

在生产中,我为热层运行~20 r3.2xlarge,为热层运行4-5 d2.xlarge,复制因子为2 - 这允许每天摄取~TB和相当大的保留量.我们按体积热量和热量保持量.

总的来说 - 祝你好运!一切顺利运行,这是一个有趣的堆栈,可以构建和运行.

PS - 根据您可用的时间/资源,您可以在AWS上运行托管弹性搜索服务,但上次我看起来比在您自己的实例上运行它的成本高出约60%,而YMMV.