当前位置: 首页 > 面试题库 >

ELK堆栈用于存储计量数据

卫博雅
2023-03-14
问题内容

在我们的项目中,我们使用ELK堆栈将日志存储在集中位置。但是,我注意到,ElasticSearch的最新版本支持各种聚合。此外,Kibana
4支持不错的图形方式来构建图形。现在,即使是最新版本的grafana也可以与Elastic Search 2数据源一起使用。

因此,这是否意味着ELK堆栈现在可以用于存储系统内部收集的计量信息,还是不能认为它是现有解决方案(石墨,流入db等)的重要竞争对手。如果是这样,是否有人在生产中使用ELK进行计量?您能否分享您的经验?

只是为了澄清概念,我将计量数据视为可以汇总的数据,并在“随时间推移”图中显示,而不是在主要用例正在搜索的常规日志消息中显示。

在此先多谢


问题答案:

是的,您可以使用 Elasticsearch 来存储和分析 时间序列 数据。

更准确地说- 这取决于您的用例* 。对于 例如我的使用情况下 (金融工具价格剔历史数据, 在发展中 )我能够得到
40.000文件插入/秒〜125页字节的文件 各有11场- 1个时间戳,字符串和小数,这意味着 5MB / S的有用数据
每天14小时 ,在由公司SAN( 由旋转磁盘 而不是SSD进行 备份 )支持的 单个节点 (具有192GB
ram的大型现代服务器)上。我去存储了多达 1TB的数据 ,但是我预测拥有2-4TB 的数据 也可以在单个节点上工作。

***

所有这些都是 默认的配置文件设置
,但ES_HEAP_SIZE为30GB。我怀疑通过一些调整可以在该硬件上获得显着更好的写入性能(例如,我发现iostat将设备使用率报告为25%至30%很奇怪,好像Elastic正在对其进行限制/保留I
/ O带宽以进行读取)或合并…,但也可能是%util是SAN设备的不可靠指标。

查询性能也很好-只要您使用时间和/或其他字段限制结果数据集,查询/ Kibana图就可以快速返回。

在这种情况下,您将 不会使用Logstash加载数据 ,而是 将大批量的大批量插入
直接插入到Elasticsearch中。https://www.elastic.co/guide/zh-
CN/elasticsearch/reference/current/docs-
bulk.html

您还需要 定义一个映射 https://www.elastic.co/guide/zh-
CN/elasticsearch/reference/current/mapping.html,以确保Elastic可以根据需要解析数据(数字,日期等)。创建所需的索引级别等。

用于该用途的情况下,其他推荐的做法是 使用一个单独的索引的每一天 (或月/周取决于你插入率),并确保 指数与创建 刚好
足够的碎片保持1天的数据中
(默认情况下,新的索引如果使用5个分片创建分片,并且分片增长到一定大小(通常为几十GB,但是对于您的用例可能有所不同,则需要进行测量/实验),分片的性能就会开始下降。

使用Elasticsearch 别名 https://www.elastic.co/guide/zh-
CN/elasticsearch/reference/current/indices-
aliases.html有助于处理多个索引,并且是通常推荐的最佳实践。



 类似资料:
  • 我正在使用logstash进行集中式日志记录。我在托运人节点上使用logstash转发器,在收集器节点上使用ELK堆栈。我想知道日志存储在elasticsearch中的位置,我没有看到日志所在位置创建的任何数据文件stored.Do有人知道吗?

  • 我对麋鹿栈没有太多的经验,我基本上只知道基础。 某些东西,即filebeat获取数据并将其发送到logstash Logstash 处理它并发送它 弹性搜索 Kibana 使用弹性搜索来可视化数据 (我希望这是正确的) 我需要创建一个elk系统,其中来自三个不同项目的数据被传递、存储和可视化。 项目号1。使用MongoDB,我需要将1个表中的所有信息放入kibana 项目2.也使用MongoDB,

  • 问题内容: 我有一个这样的数组声明: 这是原始类型的数组。该数组存储在哪里?它存储在堆还是堆栈上?这是一个原始类型,所有原始类型都不存储在堆上。 问题答案: 正如gurukulki所说,它存储在堆中。但是,你的帖子提出了一个误解,可能是由于一些善意的人传播了“原始生物始终存在”的神话。这是不正确的。局部变量在堆栈上有其值,但并非所有原始变量都是局部的… 例如,考虑一下: 现在,住在哪里?神话暗示它

  • 问题: 如何设置日志塔什ELK堆栈的多个http输入 我已经拥有的: <李>工作麋鹿码头工人形象基于:https://github.com/deviantony/docker-elk < li >工作日志存储-输入-http-插件基于:https://www . elastic . co/blog/introducing-log stash-input-http-plugin < li >我的lo

  • 我试图了解分配给堆栈和堆的内存量。假设sizeof(char)=1字节,sizeof(void*)=4字节。给定以下代码: 我们被告知分配给堆的内存量是5个字节,我明白这确实是malloc(strlen(str2)=5)中的量。但是,我不明白的是分配给堆栈的内存量是如何达到18个字节的?我想如果他们给我们一个指针大小是4个字节的信息,那么我们有4个字节的指针str1和另外6个字节的数组str2(包

  • 问题内容: 标识符或变量名在Java中存储在哪里?我知道对象会存储在堆中,变量会存储在堆或栈中,具体取决于变量的类型和范围。我们可以调试或编写任何程序来确认它吗? 感谢和问候 问题答案: 字段 名称作为类元数据的一部分存储在以前的PermGen now-Metaspace中。 数组元素 没有名称,只有数字。(提示Patrick McGoohan。) 如果选择了该选项,则 方法和构造函数参数的 名称