001 基本介绍
1.主要功能
- 多维数据模型(时序由metric名字和k/v的labels构成)
- 灵活的查询语句
- 无依赖存储,支持local和remote不同的模型
- 采用http协议,使用pull模式,拉取数据,简单易懂
- 监控目标,可以采用服务发现或静态配置的方式
- 支持多种数据模型,图形化友好
2.核心组件
- Promethus Server :主要用于抓取数据和存储数据,另外还提供查询和alert rule配置管理
- client libraries:用于对接Prometheus Server,可以查询和上报数据
- push gateway:用于批量,短期的监控数据的汇总节点,主要用于业务数据汇报
- 各种汇报数据的exporters
- 用于告警通知管理的alertmanager
3.基础架构图
从上图可以看出prometheus主要模块包括:
- Server
- Exporters
- Pushgateway
- PromQL
- Alertmanager
- WebUI
使用逻辑:
- prometheus server定期从静态配置的targets或者服务发现的targets拉取数据
- 当新拉取的数据大于配置内存缓冲区的时候,Prometheus会将数据持久化到磁盘(如果使用remote storage将持久化到云端)
- Prometheus可以配置rules,然后定时查询数据,当条件触发时会将告警推送到altermanager
- altermanager收到告警会根据配置聚合、去重、降噪,最后发送警告
- 可以使用API,prometheus console或者grafana查询和聚合数据
4.注意
- prometheus的数据是基于时序的float64的值,如果数据值有很多类型,则无法满足
- prometheus不适合做审计计费,因为它的数据是按照一定时间采集,关注系统的运行瞬时状态以及趋势,即使没有少量数据没有采集也可容忍。审计计费需要记录每个请求,并且数据长期存储,prometheus无法满足。
5. 总结
- prometheus属于一站式监控告警平台,依赖少,功能齐全
- 支持对云或者容器的监控,其他不洗头主要针对主机监控
- 数据查询表现力更强大,内置更强大的统计函数
- 在数据存储扩展性和持久性不如InfluxDB、OpenTSDB、Sensu好