我们正在考虑在亚马逊上设置ELK堆栈,但我们并不知道我们需要什么样的机器才能顺利处理它。 现在我知道如果它没有顺利运行会很明显,但我们希望能够了解我们对我们的情况需要什么。
因此,我们有4台服务器以自定义格式生成日志文件。每天约有大约4500万行日志,产生大约4个文件,600mb(gzip),所以每天约有24GB的日志。
现在我们正在研究ELK堆栈,并希望Kibana的仪表板显示实时数据,因此我考虑使用syslog进行日志记录。
4台服务器 - > Rsyslog(在这4台服务器上) - > Logstash(AWS) - > ElasticSearch(AWS) - > Kibana(AWS)
现在我们需要弄清楚AWS需要哪种硬件来处理这个问题。
我读了3个ElasticSearch的主人和2个datanode。 那么Kibana共有5台服务器+ 1台服务器,Logstash共有1台服务器? 所以我需要总共7台服务器才能开始,但这有点像是有点过分了吗? 我想保留我的数据1个月,最多31天,所以我在弹性搜索中会有大约1.4TB的原始日志数据(~45GB x 31)
但是,由于我不知道最佳设置是什么,所以欢迎任何提示/提示/信息。
同样可以为我处理此问题的系统或工具(节点故障等)也很有用。
提前致谢,
darkownage
答案 0 :(得分: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上运行托管弹性搜索服务,但上次我看起来比在您自己的实例和YMMV上运行它的成本高出约60%。
答案 1 :(得分:2)
好像你需要从AWS上的ELK Stack开始
您是否尝试过这两个CloudFormation脚本,它可以简化您的安装过程,并帮助您一次性设置环境。
ELK-Cookbook - CloudFormation Script
ELK-Stack with Google OAuth in Private VPC
如果这不能解决您的问题,请在下面进行评论。