elk堆栈

s1ag04yj  于 2021-07-03  发布在  Java
关注(0)|答案(1)|浏览(304)

在我们的项目中,我们使用elk堆栈在一个集中的地方存储日志。不过,我注意到elasticsearch的最新版本支持各种聚合。此外,kibana4支持很好的图形方式来构建图形。即使是最新版本的grafana现在也可以使用elastic search 2数据源。
那么,所有这些是否意味着elk stack现在可以用来存储系统内部收集的计量信息,或者它仍然不能被认为是现有解决方案的一个重要竞争对手:graphite、influxdb等等。如果有,是否有人在生产中使用麋鹿进行计量?你能分享一下你的经验吗?
为了澄清这些概念,我将计量数据视为可以聚合并显示在“随时间变化”的图形中的东西,而不是主要用例正在搜索的常规日志消息。
提前多谢了

ajsxfq5m

ajsxfq5m1#

是的,您可以使用elasticsearch来存储和分析时间序列数据。
更准确地说,这取决于您的用例。例如,在我的用例(金融工具价格历史数据,正在开发中)中,我能够每秒插入40000个文档(约125字节的文档,每个文档有11个字段-1个时间戳、字符串和小数,意味着5mb/s的有用数据),持续14小时/天,在由公司san支持的单节点(大型现代服务器,192gb ram)上(由旋转磁盘支持,而不是ssd!)。我去存储高达1tb的数据,但我预测2-4tb也可以在单个节点上工作。
所有这些都是默认配置文件设置,除了es\u heap\u大小为30gb。我怀疑通过一些调整可以在硬件上获得显著更好的写性能(例如,我发现很奇怪iostat报告device util为25-30%,就好像elastic正在限制它/为读取或合并保存i/o bandwith一样。。。但也可能是%util对于san设备来说是一个不可靠的指标
查询性能也很好-只要用时间和/或其他字段限制结果数据集,查询/kibana图就会快速返回。
在这种情况下,您不会使用logstash来加载数据,而是直接将大批量插入elasticsearch。https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-bulk.html
你还需要定义一个Mappinghttps://www.elastic.co/guide/en/elasticsearch/reference/current/mapping.html 为了确保elastic按您的需要解析数据(数字、日期等),创建了所需的索引级别等。。
此用例的其他推荐做法是每天(或每月/周,取决于插入率)使用一个单独的索引,并确保创建索引时只有足够的碎片来容纳1天的数据(默认情况下,创建新索引时有5个碎片,当碎片增长到一定大小(通常是几十gb)之后,碎片的性能就会开始下降,但这可能会因您的用例而异(您需要测量/实验)。
使用elasticsearch aliaseshttps://www.elastic.co/guide/en/elasticsearch/reference/current/indices-aliases.html 有助于处理多个索引,是通常推荐的最佳实践。

相关问题