Prometheus 简介
随着容器技术的迅速发展,Kubernetes 已然成为大家追捧的容器集群管理系统。Prometheus 作为生态圈 Cloud Native Computing Foundation(简称:CNCF)中的重要一员,其活跃度仅次于 Kubernetes, 现已广泛用于 Kubernetes 集群的监控系统中
Prometheus 是一套开源的系统监控报警框架。它启发于 Google 的 borgmon 监控系统,由工作在 SoundCloud 的 google 前员工在 2012 年创建,作为社区开源项目进行开发,并于 2015 年正式发布。2016 年,Prometheus 正式加入 Cloud Native Computing Foundation,成为受欢迎度仅次于 Kubernetes 的项目。
Prometheus 具有以下特点:
1. 强大的多维度数据模型:
时间序列数据通过 metric 名和键值对来区分。
所有的 metrics 都可以设置任意的多维标签。
数据模型更随意,不需要刻意设置为以点分隔的字符串。
可以对数据模型进行聚合,切割和切片操作。
支持双精度浮点类型,标签可以设为全 unicode。
2. 灵活而强大的查询语句(PromQL):
在同一个查询语句,可以对多个 metrics 进行乘法、加法、连接、取分数位等操作。
3. 易于管理:
Prometheus server 是一个单独的二进制文件,可直接在本地工作,不依赖于分布式存储。
4. 高效:
平均每个采样点仅占 3.5 bytes,且一个 Prometheus server 可以处理数百万的 metrics。
使用 pull 模式采集时间序列数据,这样不仅有利于本机测试而且可以避免有问题的服务器推送坏的 metrics。
5. 可以采用 push gateway 的方式把时间序列数据推送至 Prometheus server 端。
6. 可以通过服务发现或者静态配置去获取监控的 targets。
7. 有多种可视化图形界面。
8. 易于伸缩。
prometheus 的不足 有待于改进
1. 不支持集群化 (这个是当前最迫切的需求)
2. 被监控集群过大后 本身性能有一定瓶颈(如果有集群 就可以解决这个问题)
3. 偶尔发生数据丢失(这个问题 在2.0之前 会偶尔发生几次, 2.0之后貌似已经彻底解
决 至少这几个月 没有看到丢失)
4. 中文支持不好 中文资料也很少(这个问题 也是老生常谈了 往往新的 很牛的国外工具
都不太支持中文)
注:
由于数据采集可能会有丢失,所以 Prometheus 不适用对采集数据要 100% 准确的情形。但如果用于记录时间序列数据,Prometheus 具有很大的查询优势,此外,Prometheus 适用于微服务的体系架构。