prometheus既是一个时序数据库又是一个监控系统
Prometheus 主要有 Prometheus server、pushgateway、 job/exporter、 service discovery 、altermanager 、dashboard 6个核心模块构成。
- job/exporter
job/exporter 属于 prometheus target 是监控的对象、
分为长时间执行和短时间执行,长时间job可以使用Prometheus client,短时间job可以监控数据推送到 pushgateway中缓存
- pushgateway
Prometheus是以拉模式为主的监控系统。他的推模式是通过pushgateway组件实现的,支持临时性的job主动推送的中间网关,本质上是一种用于监控permethues服务器无法抓取的资源的解决方案。
适用场景 临时/短作业 批处理作业 应用程序 与Prometheus服务器之间有网络隔离。
常见问题 存在单点故障问题, 当pushgateway的节点在收集信息时宕机,会失去这个节点收集的所有节点的监控 会触发不同的报警, Prometheus的拉模式的up监控指标只可以监控 pushgateway节点
- 服务发现 service discovery
支持文件服务发现, 周期性的从文件中获取最新的target信息
支持常见的服务发现组件
- Prometheus 服务器
抓取 通过服务发现组件,周期性的从job expoter pushgateway 这3个组件中通过HTTP轮询的形式拉取数据
存储 抓取到的监控数据通过一定的规则清理和数据整理,把得到的结果存储在新的时间序列中进行持久化,(Prometheus分为本地存储【直接存储在磁盘】和远程存储【存储大量数据】)
查询 通过持久化数据以后,客户端可以通过promQL语句对数据进行查询了。
- Dashboard
Prometheus除了支持内置查询语言promQL语言,也支持表达式浏览器及表达式浏览器上的数据图形界面,
- alertmanager
独立于Prometheus的一个告警组件,需要单独安装部署。Prometheus可以将多个alert manager配置成一个集群,通过服务发现 动态发现告警集群中节点的上下线从而避免单点问题。
alertmanager接收Prometheus推送过来的告警,用于管理、整合和分发告警到不同的目的地。alertmanager提供了对webhook通知的支持,通过webhook用户可以完成对告警的更多个性化的扩展。
- Prometheus 3大局限性
不适合存储事件和日志
不针对大量的历史数据进行存储,有需要,进行远端存储
集群上没有influxDB成熟度高