欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-04-30 09:29:52
...

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&Grafana的监控方案[1]-组件介绍

  • 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/

相关标签: 监控