Prometheus
Prometheus 是一套开源的系统监控报警框架,基于中央化的规则计算、统一分析和告警的新模型,其本身就是一个时序数据库,将采集到的监控数据按照时间序列的方式存储在本地磁盘当中,负责数据的收集,存储、管理并且对外提供数据查询支持
特点
1.易于管理
- 不存在第三方依赖(数据库,缓存等), 唯一需要本地磁盘,因此不会有级联故障的风险
- Prometheus基于Pull模型,可以在任意环境(本地电脑,开发环境,测试环境)搭建,另外可以通过服务发现来动态管理监控目标
2.监控服务内部运行状态
- Prometheus有丰富的Client库,用户可以轻松获取应用服务内部的真正运行状态
3.强大的数据模型
所有采集的监控数据均以指标(metric)的形式保存在内置的时间序列数据库当中(TSDB)。每一条时间序列由指标名称(Metrics Name)以及一组标签(Labels)唯一标识。每条时间序列按照时间的先后顺序存储一系列的样本值,所有的样本除了基本的指标名称以外,还包含一组用于描述该样本特征的标签,主要由指标、时间戳和样本值三部分组成:
- 指标(metric):metric name和描述当前样本特征的label sets,prometheus的指标主要有如下几种类型
- Counter(计数器)Counter类型的指标其工作方式和计数器一样,只增不减(除非系统发生重置)常见的监控指标,如http_requests_total,node_cpu都是Counter类型的监控指标。 一般在定义Counter类型指标的名称时推荐使用_total作为后缀
- Gauge(仪表盘)Gauge类型的指标侧重于反应系统的当前状态。因此这类指标的样本数据可增可减。常见指标如:node_memory_MemFree(主机当前空闲的内容大小)、node_memory_MemAvailable(可用内存大小)都是Gauge类型的监控指标
- Histogram(直方图) Histogram和Summary主用用于统计和分析样本的分布情况
- Summary(摘要)Histogram和Summary主用用于统计和分析样本的分布情况
- 时间戳(timestamp):一个精确到毫秒的时间戳
- 样本值(value): 一个float 64的浮点型数据表示当前样本的值
示例如下:
<--------------- metric ---------------------><-timestamp -><-value->
http_request_total{status="200", method="GET"}@1434417560938 => 94355
http_request_total{status="200", method="GET"}@1434417561287 => 94334
http_request_total{status="404", method=