因此,我必须想出一种方法来使大量数据对用户“可读”,并且想知道是否有人可以指出使用 elasticsearch + kibana 的方法与使用 MRTG 之类的方法之间的区别。什么更适合更关注趋势的数据分析?
2 回答
Elasticsearch 对于存储结构化数据(如文本)非常有效。Logstash 的用例是如何为有效查询构建数据的示例。
MRTG/RRD 是一种用于测量时间间隔数据的工具。每 X 个时间单位,记录值 Y。MRTG/RRD 对存储文本无效,它的工作不涉及 Elasticsearch 的用例。
如果您已经安装并运行了 Logstash,Graphite 可能是一个需要考虑的工具。Logstash 可以向 Graphite 或 Statsd 触发事件,并将您的事件数据存储在 ElasticSearch 中。Graphite/Carbon 的好处是它不像 MRTG 那样与时间间隔相关。您可以随意或不频繁地将信息发送到 Graphite。
您在另一个答案中给出的用例将是 Graphite 或类似工具的绝佳使用。您可以在 Graphite 中绘制和报告许多基于值的事件,然后使用 Elasticsearch 将数据关联回事件。(我不是说有ES和Graphite的集成,只是说如果你用Logstash来推送事件,时代就很容易找了。)
您提到的两种方法适用于完全不同类型的数据。
如果您的数据由一系列带时间戳的常规指标值组成,例如来自路由器接口的 5 分钟流量速率样本,或来自温度传感器的 1 分钟样本,那么 MRTG(或者更确切地说是 RRDTool,它是后端数据库) ) 非常适合这样做。如果数据不规则,它仍然是可能的,但您需要稍微自定义 RRDTool 数据库设置以避免大的“未知”区域。RRDTool 能够对您正在记录的指标进行趋势分析,尽管这不是通过 MRTG 完成的——您需要直接调用 RRDTool 函数。
如果您的数据是不规则的文本日志条目(事件)序列,可能带有可解析的位置数据,并且您对事件的数量或速率更感兴趣,然后再深入查看单个事件,Logstash/Kibana 是去。他们会给你随时间变化的事件率图表,但我认为他们不能提供趋势分析。此外,它们不提供嵌入在事件日志文本中的解析数据的图形分析。Logstash/kibana 非常适合 Syslog、Eventlog、应用程序日志(如 Apache 日志)等,您更感兴趣的是查看随着时间的推移发生了多少与特定模式匹配的事件的模式。
您没有提供有关数据的实际性质的足够信息,也没有提供用户需要哪种“可读”分析的信息,因此这必然是功能的高级摘要。