点一下关注吧!!!非常感谢!!持续更新!!!

目前已经更新到了:

  • Hadoop(已更完)
  • HDFS(已更完)
  • MapReduce(已更完)
  • Hive(已更完)
  • Flume(已更完)
  • Sqoop(已更完)
  • Zookeeper(已更完)
  • HBase(已更完)
  • Redis (已更完)
  • Kafka(已更完)
  • Spark(已更完)
  • Flink(已更完)
  • ClickHouse(已更完)
  • Kudu(已更完)
  • Druid(已更完)
  • Kylin(已更完)
  • Elasticsearch(已更完)
  • DataX(已更完)
  • Tez(已更完)
  • 数据挖掘(已更完)
  • Prometheus(正在更新…)

章节内容

上节我们完成了如下的内容:

  • KMeans 基于轮廓系数来选择 n_clusters

在这里插入图片描述

Prometheus

架构设计

Prometheus 的核心架构设计简单明了,包括以下组件:

  • Prometheus Server:负责采集、存储时间序列数据,并提供查询服务。它通过 HTTP 协议从指定的服务端点(targets)拉取数据。
  • Exporter:负责将不同系统的监控指标转换为 Prometheus 可读取的格式,比如 node_exporter 可以监控主机的 CPU、内存等资源,blackbox_exporter 可以进行网站的可达性检查。
  • Alertmanager:用来处理 Prometheus 产生的报警。当满足指定的报警条件时,Alertmanager 可以将报警信息发送到邮件、Slack、PagerDuty 等多种渠道。
  • Pushgateway:适用于短生命周期的批处理任务,将数据主动推送给 Prometheus。
  • 客户端库(Client Libraries):允许开发者在应用程序代码中直接定义并记录自定义的监控指标,如请求数、延迟等。

官方网站

https://prometheus.io/download/

这里用 2.53.2

在这里插入图片描述

数据模型

Prometheus 的数据模型基于键值对存储时间序列数据。它的数据单位是 时间序列,每个时间序列由 唯一的 metric 名称 和一组 标签(labels) 组成。标签使得用户可以灵活地标记和筛选数据,比如 http_requests_total{method=“GET”, status=“200”} 表示获取到的 HTTP 请求总数。

数据采集方式

Prometheus 的数据采集采用 Pull 模型,即 Prometheus 定期从指定的目标端点(targets)拉取数据。这种模型对分布式系统尤其适用,因为可以灵活配置并自动发现服务(通过与 Kubernetes 集成),无需每个服务都主动上报数据。

查询语言(PromQL)

Prometheus 提供了一种强大的查询语言 PromQL,用于查询和分析存储的数据。PromQL 允许用户对数据进行复杂的运算和聚合,例如:

  • rate(http_requests_total[5m]):计算过去 5 分钟的 HTTP 请求速率。
  • avg_over_time(cpu_usage[1h]):计算过去 1 小时的 CPU 使用率平均值。 PromQL 支持过滤、聚合、运算符、时间窗口等操作,使得用户可以灵活地分析监控数据。

应用场景

  • 在业务层作用埋点系统:支持多种语言(Go、Python、Ruby 等等),我们可以通过客户端对核心业务进行埋点,如下单流程、添加购物车等等
  • 在应用层作用监控系统:一些主流应用可以通过官方或者第三方的导出器,来对这些应用做核心指标的收集,如 Redis、MySQL
  • 在系统层用作系统监控除了常用软件,Prometheus 也有相关系统层和网络层 exporter,用于监控服务器或者网络
  • 集成其他监控 Prometheus 还可以通过各种 exporter,集成其他的监控系统,收集监控数据,如 AWS CloudWatch、JMX、Pingdom 等等。

我们需要完成:

  • 在监控服务器上安装 Prometheus
  • 在被监控的环境上安装 export
  • 安装 Grafana

下载配置

cd /opt/software
wget https://github.com/prometheus/prometheus/releases/download/v2.53.2/prometheus-2.53.2.linux-amd64.tar.gz

执行结果如下所示:

在这里插入图片描述

解压配置

tar -zxvf prometheus-2.53.2.linux-amd64.tar.gz
mv prometheus-2.53.2.linux-amd64 ../servers/

执行结果如下所示:
在这里插入图片描述

修改配置

解压配置,修改配置文件,在项目对应目录下:

cd /opt/servers/prometheus-2.53.2.linux-amd64
vim prometheus.yml

执行的结果如下所示:
在这里插入图片描述
我们需要进行一些配置:

# my global config
global:
  scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
  # scrape_timeout is set to the global default (10s).

# Alertmanager configuration
alerting:
  alertmanagers:
    - static_configs:
        - targets:
          # - alertmanager:9093

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
  # - "first_rules.yml"
  # - "second_rules.yml"

# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: "prometheus"

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

    static_configs:
      - targets: ["localhost:9090"]
      
  - job_name: "h121-wzk-icu"
    static_configs:
      - targets: ["h121.wzk.icu:9100"]

  - job_name: "h122-wzk-icu"
    static_configs:
      - targets: ["h122.wzk.icu:9100"]
      
  - job_name: "h123-wzk-icu"
    static_configs:
      - targets: ["h123.wzk.icu:9100"]
      
  - job_name: "wzk-icu-grafana"
    static_configs:
      - targets: ["h121.wzk.icu:9091"]

对应的内容如下图所示:

在这里插入图片描述

启动服务

配置完成后,只需要运行起来这个软件:

cd /opt/servers/prometheus-2.53.2.linux-amd64
./prometheus

执行结果如下图所示:
在这里插入图片描述
我们通过 URL可以看到自带的监控界面:

http://h121.wzk.icu:9090/

访问结果如下所示:
在这里插入图片描述
我们选择 Targets 选项:

http://h121.wzk.icu:9090/targets?search=

可以看到如下的内容:
在这里插入图片描述

Alerting 和通知

Prometheus 可以基于查询结果设定报警规则,比如当 CPU 使用率超过 80% 持续一定时间,就可以触发报警。Prometheus 的 Alertmanager 负责管理和路由报警,支持去重、分组、静默处理等功能,帮助团队更高效地处理报警事件。Alertmanager 可以与多个通知平台集成,如 Slack、邮件、PagerDuty、OpsGenie 等。

存储机制

Prometheus 的数据默认会保存在本地磁盘中,使用 TSDB(时间序列数据库) 存储引擎,以时间块的形式进行存储和压缩。为了满足长时间的数据保留和查询需求,Prometheus 也支持通过远程存储(如 Cortex、Thanos)扩展数据的持久化和高可用性。

服务发现

Prometheus 提供了多种服务发现机制,能够自动发现新的监控目标。它支持静态配置、DNS 服务发现、文件服务发现以及多种平台的自动发现,比如 Kubernetes、Consul、Amazon EC2、Azure 等,使得 Prometheus 能够动态地发现容器、Pod、VM 等新资源,减少运维人员的手动操作。

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部