咱们能够简单的理解为.一个优化后用来处理时间序列数据的软件,而且数据中的数组是由时间进行索引的.node
所以很是适用于用来存储和处理监控数据。mysql
Prometheus是SoundCloud发布的一个开源的系统监控和报警工具。自2012成立以来,许多公司和组织都采用了普罗米修斯,该项目拥有一个很是活跃的开发人员和用户社区。它如今是一个独立的开源项目,而且独立于任何公司。为了强调这一点,并明确项目的治理结构,Prometheus在2016年加入了Cloud Native Computing Foundation,做为在 kubernetes以后的第二个由基金会主持的项目。git
Prometheus是一个强大的监控平台,提供了监控数据搜集、存储、处理、可视化和告警一套完整的解决方案。github
官方网站:https://prometheus.iogolang
prometheus主要的特性:web
prometheus生态系统由多个组件组成,其中许可能是可选的:sql
Most Prometheus components are written in Go, making them easy to build and deploy as static binaries.数据库
从这个架构图,也能够看出 Prometheus 的主要模块包含, prometheus server, exporters, pushgateway, PromQL, Alertmanager, WebUI 等。下面我就简单介绍各个组件实现的功能:数组
1. prometheus server: 按期从静态配置的 targets 或者服务发现(主要是DNS、consul、k8s、mesos等)的 targets 拉取数据。缓存
2. exporters:负责向prometheus server作数据汇报的程序统。而不一样的数据汇报由不一样的exporters实现,好比监控主机有node-exporters,mysql有MySQL server exporter,更多请参考连接。
3. pushgateway:主要使用场景为:
Prometheus 采用 pull 模式,可能因为不在一个子网或者防火墙缘由,致使 Prometheus 没法直接拉取各个 target 数据。在监控业务数据的时候,须要将不一样数据汇总, 由 Prometheus 统一收集。
总结:实现相似于zabbix-proxy功能;
4. Alertmanager:实现prometheus的告警功能。
5. webui:主要经过grafana来实现webui展现。
Prometheus Server 自己也将以容器的方式运行。
Exporter
Prometheus 有不少现成的 Exporter,完整列表请参考 https://prometheus.io/docs/instrumenting/exporters/
咱们将使用:
Node Exporter,负责收集 host 硬件和操做系统数据。它将以容器方式运行在全部 host 上。
cAdvisor,负责收集容器数据。它将以容器方式运行在全部 host 上。