Prometheus技术秘笈epub电子书下载

简介: 一本书帮你全面了解并掌握Prometheus的原理与应用。

*文中代码字体版权说明

第1章

Prometheus基础入门

Prometheus是一款时下比较先进的时序数据库,也被认为是下一代的监控系统。在时序数据库2019年3月的排名中,Prometheus排名已经超越老牌时序数据库OpenTSDB,跃居第5名的位置,如图1-1所示。

图1-1

1.1

时序数据库对比

下面将从数据存储和监控系统两个层面介绍一下常见的时序数据库和监控系统,帮助读者迅速了解它们的特性,方便读者根据自己的使用场景进行选型。

1.1.1 InfluxDB简介

InfluxDB是使用Golang语言编写的一款时序数据,目前较新的版本为2.0 Alpha版本,稳定版是1.7.5版本。InfluxDB在时序数据库方面的市场占有率较大,其热度之所以如此之高,与以下特点有着直接关系。

1.读写性能

InfluxDB在时序数据写入、数据压缩以及实时查询等方面的表现都非常出众。InfluxDB官方网站将InfluxDB与Cassandra、Elasticsearch、MongoDB、OpenTSDB进行了性能以及磁盘占用量的比较,结果表明InfluxDB在时序数据读写性能方面,较市面上其他的数据库产品有较大的优势。

2.支持多种接口

InfluxDB提供了多种通用接口,例如HTTP API和GRPC等;也支持多种时序数据库协议,例如Graphite、Collectd和OpenTSDB等。这就方便了时序数据的写入以及InfluxDB与其他时序产品之间的数据迁移。

3.支持类SQL的查询语句

用户可以通过书写InfluxQL语句来查询InfluxDB中的时序数据。InfluxQL是一种类SQL的查询语言,这就降低了InfluxDB的使用门槛;同时InfluxQL也支持多种函数和表达式,方便用户实现一些高级功能。

4.数据压缩

对于近期的时序数据,InfluxDB会保存其原始数据;对于较久的时序数据,InfluxDB会进行Downsampling处理,对数据进行聚合处理,聚合之后的时序数据精度会降低,但数据量会减少,这样就可以降低磁盘占用量,这也算是InfluxDB在数据精度和磁盘使用量之间的折中设计。另外,InfluxDB可以开启定期清理过期数据的功能,进一步释放磁盘空间。

单从时序数据的存储方面来看,InfluxDB已经非常先进,Prometheus TSDB在某些方面的设计与InfluxDB非常类似。从一个监控系统的角度来看,Influ-xDB之前的相关生态比较匮乏,但是近几年InfluxData以InfluxDB为中心,打造了很多配套组件,形成了一个完整的生态系统,也被称为“TCIK Stack”,如图1-2所示。

图1-2

这里简单介绍一下InfluxDB相关组件的功能。

Telegraf:Agent组件。Telegraf用于收集各个系统产生的时序数据以及事件信息,并将其push到InfluxDB进行持久化。

Kapacitor:流处理引擎。Kapacitor可以从InfluxDB或是Telegraf获取时序数据或时事件信息,然后根据用户自定义逻辑进行处理,处理结果可以写回InfluxDB存储,也可以发送到外部的报警模块用于报警处理。另外,Kapacitor的开源版本有一些功能上的缺失,感兴趣的读者可以参考InfluxDB的官方文档。

Chronograf:可视化管理平台。Chronograf提供了可视化的查询界面以及插件化的Dashboard,虽然其可视化功能比Prometheus强大,但是与发展成熟且插件众多的Grafana相比还是有一定差距。

InfluxDB的高可用以及集群方案目前并不开源,用户只能在企业版或是InfluxCloud上付费使用,且价格不菲,这也是很多企业放弃使用InfluxDB的原因之一。有些用户在InfluxDB单机版本之上,根据自身业务通过Sharding的方式建立了InfluxDB集群,但这种方式并不通用。目前市面上还没有开源的通用Influx-DB集群方案。

版权:人民邮电出版社