Prometheus 介绍

咱们知道zabbix在监控界占有不可撼动的地位,功能强大。可是对容器监控显得力不从心。为解决监控容器的问题,引入了prometheus技术。prometheus号称是下一代监控。接下来的文章打算围绕prometheus作一个系列的介绍,顺便帮本身理清知识点。node


1、简介

  prometheus是由谷歌研发的一款开源的监控软件,目前已经被云计算本地基金会托管,是继k8s托管的第二个项目。数据库

2、优点

  易于管理api

  轻易获取服务内部状态bash

  高效灵活的查询语句优化

  支持本地和远程存储google

  采用http协议,默认pull模式拉取数据,也能够经过中间网关push数据云计算

  支持自动发现spa

  可扩展blog

  易集成内存

3、prometheus运行流程

prometheus根据配置定时去拉取各个节点的数据,默认使用的拉取方式是pull,也可使用pushgateway提供的push方式获取各个监控节点的数据。将获取到的数据存入TSDB,一款时序型数据库。此时prometheus已经获取到了监控数据,可使用内置的PromQL进行查询。它的报警功能使用Alertmanager提供,Alertmanager是prometheus的告警管理和发送报警的一个组件。prometheus原生的图标功能过于简单,可将prometheus数据接入grafana,由grafana进行统一管理。

4、监控的目的

  google指出,监控分为白盒监控和黑盒监控之分。

  白盒监控:经过监控内部的运行状态及指标判断可能会发生的问题,从而作出预判或对其进行优化。

  黑盒监控:监控系统或服务,在发生异常时作出相应措施。

  监控的目的以下:

    一、根据历史监控数据,对为了作出预测

    二、发生异常时,即便报警,或作出相应措施

    三、根据监控报警及时定位问题根源

    四、经过可视化图表展现,便于直观获取信息

5、经常使用概念

  prometheus采集到的监控数据均以metric(指标)形式保存在时序数据库中(TSDB)

  每一条时间序列由 metric 和 labels 组成,每条时间序列按照时间的前后顺序存储它的样本值。

  默认状况下各监控client向外暴露一个HTTP服务,prometheus会经过pull方式获取client的数据,数据格式以下:

#  HELP node_cpu Seconds the cpus spent	in each	mode. 
#  TYPE node_cpu counter 
node_cpu{cpu="cpu0",mode="idle"}	362812.7890625 
#  HELP node_load1 1m	load	average. 
#  TYPE node_load1 gauge 
node_load1 3.0703125

  以#开头的表示注释信息,解释了每个指标的监控目的和类型

  node_cpu表示监控指标的名称

  {}内的内容是标签,以键值对的方式记录 

  数字是这个指标监控的数据

  下图横坐标表明的是时间(时间戳的方式记录在TSDB中),纵坐标表明了各类不一样的指标名称,坐标系中的黑点表明了各个指标在不一样时间下的值。

  每个横线 就是时间序列

  每一个黑点就是样本(prometheus将样本以时间序列的方式保存在内存中,而后定时保存到硬盘上)

 

   指标(metric)的格式以下:

<metric	name>{<label	name>=<label	value>,	...}

  指标名称反映的是监控了什么。

  标签反映的是样本的维度,能够理解成指标的细化。好比:

api_http_requests_total{method="POST",	handler="/messages"}

  指标是“api_http_requests_total”,含义是经过api请求的http总数。

  标签“method="POST"” "handler="/messages""表明了这些http请求中 POST 请求 而且 handler是/messages的数量

  上述指标等同于:

{__name__="api_http_requests_total",method="POST",	handler="/messages"}

  

  指标有四种类型

  一、Counter  只增不减  计数器

  二、Gauge  可增可减    仪表盘

  三、Histogram  直方图

  四、Summary  摘要型

相关文章
相关标签/搜索