在我们的项目中,我们使用ELK堆栈将日志存储在一个集中的位置。但是我注意到最近版本的ElasticSearch支持各种聚合。此外,Kibana 4支持很好的图形方式来构建图形。即使最近版本的grafana现在也可以使用Elastic Search 2数据源。
所以,这一切是否意味着ELK堆栈现在可用于存储系统内收集的计量信息,或者它仍然不能被视为现有解决方案的重要竞争对手:石墨,流入数据库等等。 如果是这样,有没有人使用ELK进行生产计量?你能分享一下你的经历吗?
为了澄清这些概念,我认为将数据计量为可以聚合的内容,并在一段时间内显示在图表中,而不是主要用例正在搜索的常规日志消息。
提前多多感谢
答案 0 :(得分:3)
是的,您可以使用 Elasticsearch 来存储和分析时间序列数据。
更确切地说 - 取决于您的用例。对于我的用例中的示例(金融工具价格刻度历史数据,开发中),我可以获得 40.000个文件/ sec ( ~125字节文档,每个包含11个字段 - 1个时间戳,字符串和小数,意味着 5MB / s的有用数据) 14小时/ day ,在单一节点(具有192GB内存的大型现代服务器)上由企业SAN支持(由旋转磁盘支持,而不是SSD!)。我去存储 1TB的数据,但我预测2-4TB也可以在单个节点上工作。
所有这些都是使用默认配置文件设置,但ES_HEAP_SIZE为30GB除外。我怀疑通过一些调整可以在该硬件上获得明显更好的写入性能(例如,我发现很奇怪iostat以25-30%报告设备使用率,好像Elastic正在限制它/保留i / o带宽用于读取或者合并......但也可能是%util是SAN设备不可行的度量标准..)
查询性能也很好 - 只要您使用时间和/或其他字段限制结果数据集,查询/ Kibana图表就会快速返回。
在这种情况下,您不会使用Logstash加载数据,而是批量大批量插入直接进入Elasticsearch。 https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-bulk.html
您还需要定义映射 https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping.html,以确保弹性分析您想要的数据(数字,日期等)。创建所需的索引级别等..
此用例的其他推荐做法是每天使用单独的索引(或月/周,具体取决于您的插入率),并确保使用<创建索引em>只足够的分片来容纳1天的数据(默认情况下,新索引会被5个分片创建,并且分片的性能会在分片增长超过一定大小后开始降级 - 通常为几十GB ,但它可能因您的用例而异 - 您需要进行测量/实验)。
使用Elasticsearch 别名 https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-aliases.html有助于处理多个索引,并且是一般建议的最佳做法。