一、简介
Prometheus 是由 SoundCloud 开发的告警监控系统 , 是由 Go 语言开发 . 它通过 HTTP 抓取被监控组件的状态 , 任意组件只要提供对应的 HTTP 接口并且符合 Prometheus 的数据格式 , 就可以接入监控 .
二、架构介绍
Prometheus server 负责定时在标上抓取 metrics 数据 , 每个抓取目标都需要暴露 http 服务接口用于 Prometheus 抓取 . 通过这种方式 , 被采集端无需感知监控系统的存在 , 这样数据的采集完全由监控系统控制 . 但是有些系统是通过 push 方式实现数据的收集 , 为了接入这些系统 , 它提供了对 pushgateway 的支持 , 这些系统主动推送 metrics 到 gateway , 而 prometheus 只需要到 gateway 去拉取即可 .
Prometheus 可以通过两种方式去进行数据的搜集 , 一种是配置文件进行静态配置 , 另外一种是支持 zk 、k8s 等方式进行动态发现 , 例如对 k8s 的动态发现 , Prometheus 使用 k8s 的 API 查询和监控容器信息的变化 , 动态更新监控对象 .
Prometheus 支持两种存储方式 , 一种是通过自带的时序数据库将数据保存到本地磁盘 , 另外一种是远端存储 ,比如TSDB、InfluxDB、Elasticsearch等 .
Prometheus 通过 PromQL 展示收集的数据 ,它支持多种方式的图标可视化 , 例如 Grafana 、自带的控制台等 , 自身提供API查询接口 , 可以自定义所需要的数据内容 .
AlertManager 是独立于 Prometheus 的一个组件 , 在触发设定的规则后 , Prometheus 会推送告警信息到 AlertManager , AlertManager可以通过邮件或者钉钉等途径发送告警消息 .