一、打造基于Prometheus的全方位监控平台

1.1、前言

官网地址:https://prometheus.io/docs/prometheus/latest/getting_started/

1.2、prometheus架构

Prometheus 的工作原理主要分为五个步骤: 1. 数据采集(Exporters):Prometheus 定期通过HTTP请求从目标资源中拉取数据。目标资源可以是应用程序、系统、服务或其他资源。

  1. 数据存储(Storage):Prometheus 将采集到的数据存储在本地存储引擎中。存储引擎以时间序列方式存储数据,其中每个时间序列都由指标名称和一组键值对组成。
  2. 数据聚合(PromQL):Prometheus 通过查询表达式聚合数据。PromQL 是 Prometheus 的查询语言,它允许用户通过查询表达式从存储引擎中检索指标的特定信息。
  3. 告警处理(Alertmanager):Prometheus 可以根据用户指定的规则对数据进行警报。当指标的值超出特定阈值时,Prometheus 向 Alertmanager 发送警报。Alertmanager 可以帮助用户对警报进行分组、消除和路由,并将警报发送到相应的接收器,例如邮件、企微、钉钉等。
  4. 数据大盘(Grafana):帮助用户通过可视化方式展示 Prometheus 的数据,包括仪表盘、图表、日志和警报等。

1.3、prometheus时间序列数据

1.3.1、什么是序列数据?

时间序列数据(TimeSeries Data):按照时间顺序记录系统、设备状态变化的数据被称为时序数据。

1.3.2、时间序列数据特点

官方数据:Prometheus 有着非常高效的时间序列数据存储方法,每个采样数据仅仅占用 3.5byte 左右空间,上百万条时间序列,30 秒间隔,保留 60 天,大概200多G。

1.3.3、Promethues适合场景

Prometheus 非常适合记录任何纯数字时间序列。它既适合以机器为中心的监控,也适合监控高度动态的面向服务的体系架构。

二、部署配置

整个监控体系涉及的技术栈较多,几乎可覆盖真实企业中的所有场景。主要技术栈如下:

2.1、Prometheus部署

部署对外可访问Prometheus:

  1. 首先需要创建Prometheus所在命名空间;
  2. 然后创建Prometheus使用的RBAC规则;
  3. 创建Prometheus的configmap来保存配置文件;
  4. 创建service暴露Prometheus服务;
  5. 创建deployment部署Prometheus容器;
  6. 最后创建Ingress实现外部域名访问Prometheus。

部署顺序如图下:

2.1.1、创建命名空间

2.1.2、创建RBAC规则

创建RBAC规则,包含ServiceAccountClusterRoleClusterRoleBinding三类YAML文件。

确认验证:

2.1.3、创建ConfigMap类型的Prometheus配置文件

确认验证:

2.1.4、创建ConfigMap类型的prometheus rules配置文件

使用ConfigMap方式创建prometheus rules配置文件:

包含的内容是两块,分别是general.rulesnode.rules。使用以下命令创建Prometheus的另外两个配置文件:

确认验证:

2.1.5、创建prometheus svc

2.1.6、创建prometheus deploy

由于Prometheus需要对数据进行持久化,以便在重启后能够恢复历史数据。所以这边我们通过早先课程部署的NFS做存储来实现持久化。

当前我们使用NFS提供的StorageClass来做数据存储。

Prometheus控制器文件:

部署的 Deployment 资源文件中的 containers 部分配置了两个容器,分别是:

上面资源文件中 Prometheus 参数说明:

确认验证:

2.1.7、创建prometheus ingress实现外部域名访问

访问验证:

三、初识Prometheus监控平台

prometheus监控平台:

  1. Graph:用于绘制图表,可以选择不同的时间范围、指标和标签,还可以添加多个图表进行比较。
  2. Alert:用于设置告警规则,当指标达到设定的阈值时,会发送告警通知。
  3. Explore:用于查询和浏览指标数据,可以通过查询表达式或者标签过滤器来查找数据。
  4. Status:用于查看prometheus的状态信息,包括当前的targets、rules、alerts等。
  5. Config:用于编辑prometheus的配置文件,可以添加、修改和删除配置项。

四、总结

  1. 支持动态服务发现:Prometheus可以自动地发现并监控正在运行的服务,从而避免手动配置。(后续课程会介绍到)
  2. 灵活的告警机制:Prometheus支持可配置的告警规则,可以根据不同的情况发出不同的告警信息,并且可以通过API通知其他服务。(后续课程会介绍到)
  3. 多维数据模型:Prometheus的数据模型支持多维度的数据,可以使用标准的PromQL查询语言对数据进行分析和展示。
  4. 高效的存储:Prometheus使用自己的时间序列数据库存储数据,采用一种基于时间的存储方式,可以高效地处理大量数据。