时序数据库和可视化的现在和以前

时序数据库的简述

历史背景

大约10年前,开始出现了DevOps这样的思维方式。其中的一种活动是可视化,尤其是收集应用程序指标(例如,网站当前的访客数量)和基础设施指标(CPU使用率等),并几乎实时地进行可视化,引起了广泛的热潮。

当时,一个名为Etsy的电子商务网站的成员,通过一系列被称为graphite的工具(包括收集工具: carbon,存储工具: whisper,可视化工具: graphiteweb),以及用于高效收集数据的工具statsd,成功地实现了此提倡和执行的目标。

在当时,(graphite中的)指标是通过用点分隔的命名空间来标识的,比如host.cpu.idle表示CPU使用率,clicks.item813表示商品点击数,数据以<指标名称,时间,数值>的形式,即时间序列数据来表示。

在运动中,我们看到了激情高涨的一面,但Graphite作为一种工具的开发已经停滞不前,很难满足各个领域新需求的情况出现。例如,可以举出以下几点。

    • [収集] メトリクス名が多すぎ・長すぎるので構造化したい

 

    • [格納] 過去のデータを後から入れたい

 

    • [格納] 格納効率を上げたい

 

    • [格納] もっとスケールしたい

 

    [可視化] もっとかっこよく、カスタマイズ可能なダッシュボードがほしい

以上是历史进程和问题意识的共享。

时序数据库战国时代。

基于这种背景,提出了许多时序数据库,并逐渐淘汰了一些。现在仍然保留的是以下几种(按个人认为有希望的顺序):

    • influxdb: Go製 graphiteのよき後継者

 

    • prometheus: Go製 Influxdbよりシンプルだが格納効率が高い

 

    • elasticsearch: Java製 時系列DBではないが、時系列DBとしても使える。

 

    OpenTSDB: 古株。HBaseを利用することによって高い可用性を持つ

每个产品都有自己独特的协议(主要是HTTP REST),但它们之间不兼容。不过,由于它们都是简易的协议,所以在应用程序中存储时间序列数据并不太难。每个产品都满足基本功能,并专注于集群和复制等应用功能。

通常情况下,可视化时间序列数据库中存储的数据的产品通常附带在时间序列数据库中。

    • Grafana: Go製 Webサーバ機能を同梱し、単体で動作する. Kibanaからfork

 

    • 各種時系列DBに付属の製品

 

    Kibana: ElasticSearchの可視化ツール。 Grafanaに多大な影響を与えた

特别是Grafana这个产品,支持前面提到的所有时序数据库,并且由于其开发活跃且功能齐全,已经成为事实上的标准。

现在和未来

在日本国内,虽然没有太多技术方面的资料,但是在Elasticsearch方面,常常会看到使用fluentd收集日志并通过Kibana进行可视化的方法。这被称为EFK堆栈(值得注意的是,在欧美地区使用的是logstash而不是fluentd,所以称为ELK堆栈)。

尽管如此,Elasticsearch是一种用于日志分析的软件,而不是时间序列数据库,并且Kibana的功能有些缺陷,因此考虑跟随时代潮流,转向使用influxdb + Grafana或者prometheus + Grafana是一个好主意。

广告
将在 10 秒后关闭
bannerAds