Promehteus是一款近年来很是火热的容器监控系统,它使用go语言开发,设计思路来源于Google的Borgmom(一个监控容器平台的系统)。node
由前谷歌SRE Matt T.Proudd在加入SoundCloud以后,与另外一位工程师Julius Volz合伙推出,并将其开源发布。2016年,由Google发起的原生云基金会(Cloud Native Computing Foundation)将其归入其下,成为该基金会继Kubernetes后,第二大开源项目。mysql
Promehteus自然具备对容器的适配性,可很是方便的知足容器的监控需求,也可用来监控传统资源。近年来随着kubernetes容器平台的火爆,Prometheus的热度也不断上升,大有超越老牌监控系统Zabbix成为No.1的趋势,目前已在众多公司获得普遍的使用。web
多维度数据模型sql
灵活的查询语言数据库
不依赖分布式存储,单个服务器节点是自主的服务器
经过基于HTTP的pull方式采集时序数据微信
能够经过中间网关进行数据推送架构
经过服务发现或者静态配置来发现目标服务对象分布式
支持多种多样的图表和界面展现,好比Grafana 等ide
Prmoetheus Server: 服务端,用于处理和存储监控数据
Exporter: 监控客户端,用于收集各种监控数据,不一样的监控需求由不一样的exporter处理,如node-exporter、mysql-exporter、blackbox-exporter等。
Pushgateway:在不支持pull 拉取监控数据的场景中,可经过部署Pushgateway的方式,由监控源主动上报到Promtehus。
Alertmanager: 独立组件,用于处理告警信息。
Web-UI:Pometheus自带的web界面,可进行监控数据的展现与查询。
其余支持工具:Promethues项目自己提供的组件及丰富的开源工具和套件。
官方架构图:
Prometheus可经过多种方式来发现要监控的资源列表,包括:
用户提供的静态资源列表
基于文件的发现
自动发现。例如,使用DNS SRV记录来生成列表或经过查询Consul等配置中心获取信息.
Prometheus根据配置的Job定时去拉取各个监控节点的数据,任何组件只要提供对应的HTTP接口就能够接入监控,不须要任何SDK或其余集成过程,很是适合虚拟化环境的监控,如Kubernetes、Docker等。
默认的拉取方式为pull,也可使用pushgateway提供的push 方式获取各个监控节点的数据,并将获取到的数据存入TSDB(一种时序型数据库)。
Prometheus提供一套内置的PromQL语言,其自带的Web-UI查询数据支持按条件表达式的方式,查询相关的监控数据。
Prometheus自带的Web-UI可支持图表展现 ,但功能及界面较简陋,常规方案是接入到grafana进行展现管理。
Promehteus Server没有内置告警工具,程序基于配置的rules发送告警信息到Alertmanager,由Alertmanager对告警信息进行统一处理。Alertmanger支持对告警信息进行聚合和收敛,并经过邮箱、短信、微信、钉钉等多种告警方式发送给相关的接收人。