基于Prometheus&Grafana的监控方案[1]-组件介绍

Prometheus

简单介绍

Prometheus是由Go编写的一套开源的监控&报警&时间序列数据库的组合,由SoundCloud开发,从 2012 年开始编写代码,再到 2015 年 github 上开源以来,已经吸引了 9k+ 关注,以及很多大公司的使用;2016 年 Prometheus 成为继 k8s 后,第二名 CNCF(Cloud Native Computing Foundation) 成员。作为新一代开源解决方案,很多理念与 Google SRE 运维之道不谋而合。

主要特点
  • 基于HTTP的pull方式采集时序数据
  • 可以通过push gateway进行时序列数据推送(pushing)
  • 有简单的多种可视化图表及仪表盘支持
  • 可以通过服务发现或者静态配置去获取要采集的目标服务器
  • 不依赖分布式存储,单个服务器节点
  • 比较容易扩展,联邦集群
  • 自己定义的一套多维数据模型(时间序列由指标metric名称和键/值对组成)
  • 有自己的查询语言PromQL
  • 非常高效的存储 平均一个采样数据占 ~3.5 bytes左右,320万的时间序列,每30秒采样,保持60天,消耗磁盘大概228G。
架构&组件

架构

  • Prometheus Server:主要用于抓取数据和存储时序数据,另外还提供查询和 Alert Rule 配置管理
  • Alertmanager:是独立于Prometheus的一个组件,可以支持Prometheus的查询语句,提供十分灵活的报警方式
  • PushGateway:这个组件是支持Client主动推送metrics到PushGateway,而Prometheus只是定时去Gateway上pull数据
  • Jobs/exporters:真正收集本地监控数据的组件,社区提供了大量的第三方的exporter,基本涵盖了服务端的各种监控需求
  • Web UI:prometheus提供了一些简单的监控图标,实际中我们一般用Grafana进行展现
数据模型

Prometheus的数据格式是简单的文本格式,可以直接阅读。其中,#号开头的是注释,除此之外,每一行一个数据项,数据名在前,值在后。{}中是标签,一条数据可以有多个标签。由于数据采用http的pull方式拉取,因此可以自己按照数据格式实现数据的采集。

样例

# HELP go_gc_duration_seconds A summary of the GC invocation durations.
# TYPE go_gc_duration_seconds summary
go_gc_duration_seconds{quantile="0"} 8.1724e-05
go_gc_duration_seconds{quantile="0.25"} 0.000146067
go_gc_duration_seconds{quantile="0.5"} 0.000185996
go_gc_duration_seconds{quantile="0.75"} 0.000241331
go_gc_duration_seconds{quantile="1"} 0.003861429
go_gc_duration_seconds_sum 24.3027719
go_gc_duration_seconds_count 106632

数据类型
Prometheus定义了四种数据类型

  • Gauge:常规数值,例如 温度变化、内存使用变化。可变大,可变小。重启进程后,会被重置。
  • Counter:用于累计值,例如记录请求次数、任务完成数、错误发生次数。一直增加,不会减少。重启进程后,会被重置。
  • Histogram:直方图,可以理解为柱状图的意思,常用于跟踪事件发生的规模,例如:请求耗时、响应大小。它特别之处是可以对记录的内容进行分组,提供count和sum全部值的功能。
  • Summary:和Histogram十分相似,常用于跟踪事件发生的规模,例如:请求耗时、响应大小。同样提供 count 和 sum 全部值的功能。它提供一个quantiles的功能,可以按%比划分跟踪的结果。例如:quantile取值0.95,表示取采样值里面的95%数据。
官网地址

https://prometheus.io/docs/introduction/overview/

网友翻译地址

https://github.com/1046102779/prometheus

Prometheus操作指南

https://github.com/yunlzheng/prometheus-book

Grafana

由于Prometheus自带的图表太简单了,一般我们用Grafana进行展现。
Grafana是用于可视化大型测量数据的开源程序,提供了强大和优雅的方式去创建、共享、浏览数据。
Grafana有热插拔控制面板和可扩展的数据源,目前已经支持Graphite、InfluxDB、OpenTSDB、Elasticsearch、Prometheus等等各种数据来源。

Grafana官网

https://grafana.com/

猜你喜欢

转载自blog.csdn.net/zeroctu/article/details/81134716