1. 基本介绍
Prometheus是一个开源的完整监控解决方案,形成了基于中央化的规则计算、统一分析和告警的新模型
2. 优点
2.1 易于管理
- Prometheus基于Pull模型的架构方式,可以在任何地方搭建我们的监控系统
- Prometheus服务发现(Service Discovery)的能力,动态管理监控目标。比如Kubernetes启动了3个Nginx,后面访问并发变高,又动态启动了2个Nginx副本,Prometheus也能动态的发现新启动的2个Nginx
2.2 监控服务的内部运行状态
Prometheus提供了丰富的Client库,可以轻松的在应用程序中添加对Prometheus 的支持,从而让用户可以获取服务和应用内部真正的运行状态
2.3 强大的数据模型
所有采集的监控数据均以指标(metric)的形式保存在内置的时间序列数据库当中
(TSDB)。每一条时间序列由指标名称(Metrics Name)以及一组标签(Labels)唯一标识,并包含一系列按时间排列的指标值。基于Labels可以方便地对监控数据进行聚合、过滤、裁剪
2.4 强大的查询语言PromQL
Prometheus内置了一个强大的数据查询语言 PromQL。 通过 PromQL 可以实现对
监控数据的查询、聚合。同时PromQL也被应用于数据可视化(如Grafana)以及告警当中
2.5 可扩展
可以在每个数据中心运行独立的单个Prometheus Sevrer。当单个Prometheus
Server处理的任务量过大时,通过使用功能分区(sharding)+联邦集群(federation)形成一个逻辑集群
2.6 易于集成
目前支持多种编程语言的客户端SDK,可以快速让应用程序纳入到Prometheus的监控当中。同时Prometheus还支持与其他的监控系统进行集成,比如Graphite、Statsd、Collected、Scollector、muini、Nagios等。 Prometheus社区还提供了大量第三方实现的监控数据采集支持,比如JMX、CloudWatch、EC2、MySQL、PostgresSQL、Haskell、Bash、SNMP、Consul、Haproxy、Mesos、Bind、CouchDB、Django、Memcached、RabbitMQ、Redis、RethinkDB、Rsyslog等
2.7 可视化
Prometheus Server中自带的Prometheus UI,可以方便地直接对数据进行查询,并且支持直接以图形化的形式展示数据
同时Prometheus还提供了一个独立的基于Ruby On Rails的Dashboard解决方案 Promdash
最新的Grafana可视化工具也已经提供了完整的Prometheus支持,基于Grafana 可
以创建更加精美的监控图标
基于Prometheus提供的API还可以实现自己的监控可视化UI