当前位置: 首页 > news >正文

Prometheus 实战教程-搭建 Prometheus 环境

Prometheus 实战教程 —— 阶段 1

第 1 步:搭建 Prometheus 环境

方法 1:使用 Docker 快速搭建(推荐)

1.1 启动 Prometheus 容器

运行以下命令,使用官方 Docker 镜像启动 Prometheus:

docker run -d \--name=prometheus \-p 9090:9090 \-v /path/to/prometheus.yml:/etc/prometheus/prometheus.yml \prom/prometheus

解释:

  • -p 9090:9090:将 Prometheus 的默认端口 9090 映射到本地。
  • -v /path/to/prometheus.yml:/etc/prometheus/prometheus.yml:挂载自定义的配置文件。
  • prom/prometheus:使用官方镜像。
1.2 访问 Prometheus Web 界面

在浏览器中访问:http://localhost:9090


第 2 步:配置 Node Exporter 采集系统指标

Node Exporter 用于采集系统级别的硬件和操作系统指标,例如 CPU、内存、磁盘和网络使用情况。

2.1 安装 Node Exporter

使用 Docker 快速启动 Node Exporter:

docker run -d \--name=node-exporter \-p 9100:9100 \prom/node-exporter

2.2 验证 Node Exporter 是否工作

在浏览器中访问:http://localhost:9100/metrics
你会看到类似以下内容:

# HELP node_cpu_seconds_total Seconds the CPUs spent in each mode.
# TYPE node_cpu_seconds_total counter
node_cpu_seconds_total{cpu="0",mode="user"} 12345.678
node_cpu_seconds_total{cpu="0",mode="system"} 543.21

第 3 步:配置 Prometheus 采集 Node Exporter 数据

3.1 修改 Prometheus 配置文件 (prometheus.yml)

创建或修改 prometheus.yml,添加 scrape_configs 部分,让 Prometheus 采集 Node Exporter 的数据。

global:scrape_interval: 15s   # 每 15 秒采集一次数据evaluation_interval: 15sscrape_configs:- job_name: 'node_exporter'static_configs:- targets: ['localhost:9100']

解释:

  • scrape_interval:设置 Prometheus 采集数据的频率,默认 15 秒。
  • job_name:定义任务名称为 node_exporter
  • targets:设置 Node Exporter 的地址(localhost:9100)。

3.2 重新启动 Prometheus

如果是 Docker 方式运行 Prometheus,请重启容器:

docker restart prometheus

3.3 验证配置

在 Prometheus Web 界面,进入 Status -> Targets,你应该可以看到 node_exporter 目标状态为 UP


第 4 步:使用 PromQL 查询数据

PromQL(Prometheus Query Language)是 Prometheus 的查询语言,用于提取和分析时间序列数据。以下是几个基础查询示例:

4.1 查询最新的 CPU 使用数据

node_cpu_seconds_total

说明: 这条查询会返回所有 CPU 时间序列的最新值,包括不同的 CPU 核心和模式(user, system, idle 等)。


4.2 查询某个模式下的 CPU 使用数据

node_cpu_seconds_total{mode="user"}

说明: 这条查询会筛选出 mode="user" 的 CPU 时间序列数据,忽略其他模式。


4.3 计算 5 分钟内的 CPU 使用率

rate(node_cpu_seconds_total[5m])

说明: rate() 计算每秒的增长率,常用于监控 CPU 使用率、网络流量等数据。


4.4 查询最近 1 小时的内存使用数据

node_memory_MemAvailable_bytes

第 5 步:实战任务 1——搭建监控并查询 CPU 使用情况

任务描述:

  1. 搭建 Prometheus 和 Node Exporter 采集主机的 CPU 和内存使用情况。
  2. 使用 PromQL 查询最近 5 分钟的 CPU 使用率,并分析内存的可用空间。

第 6 步:实战任务 2——编写简单的告警规则

任务描述:
编写告警规则,监控 CPU 使用率,当 5 分钟平均值超过 80% 时触发告警。

6.1 告警规则配置 (prometheus.yml)

prometheus.yml 文件中添加如下告警规则:

rule_files:- 'alert.rules.yml'  # 引用外部告警规则文件

创建 alert.rules.yml 文件:

groups:- name: cpu_alertsrules:- alert: HighCPUUsageexpr: rate(node_cpu_seconds_total{mode="user"}[5m]) > 0.8for: 1mlabels:severity: warningannotations:summary: "CPU 使用率高"description: "CPU 使用率在过去 5 分钟内持续超过 80%"

eg:

cat prometheus/prometheus.yml
global:scrape_interval: 15s   # 每 15 秒抓取一次数据evaluation_interval: 15salerting:alertmanagers:- static_configs:- targets: ['alertmanager:9093']scrape_configs:- job_name: 'prometheus'static_configs:- targets: ['localhost:9090']- job_name: 'node-exporter'static_configs:- targets: ['node-exporter:9100']- job_name: 'cadvisor'static_configs:- targets: ['cadvisor:8080']- job_name: 'pushgateway'static_configs:- targets: ['pushgateway:9091']
rule_files:- '/etc/prometheus/alert_rules.yml'   # 容器内的挂载路径

**6.2 加载告警规则文件

docker方式

docker run -d \--name=prometheus \-p 9090:9090 \-v /path/to/prometheus.yml:/etc/prometheus/prometheus.yml \-v /path/to/alert.rules.yml:/etc/prometheus/alert.rules.yml \harbor.fq.com/prometheus/prometheus:v3.1.0

docker-compose 修改docker-compose.yaml配置文件 ,添加挂载路径 “- /opt/monitoring/rules/alert_rules.yml:/etc/prometheus/alert_rules.yml:ro”

cat docker-compose.yaml
#version: '3.8'services:prometheus:image: harbor.fq.com/prometheus/prometheus:v3.1.0container_name: prometheusvolumes:- ./prometheus/prometheus.yml:/etc/prometheus/prometheus.yml:ro- /opt/monitoring/rules/alert_rules.yml:/etc/prometheus/alert_rules.yml:ro- prometheus-data:/prometheus       # 持久化存储ports:- "9090:9090"command:- "--config.file=/etc/prometheus/prometheus.yml"restart: alwaysalertmanager:image: harbor.fq.com/prometheus/alertmanager:v0.27.0container_name: alertmanagervolumes:- ./alertmanager/alertmanager.yml:/etc/alertmanager/config.yml:roports:- "9093:9093"restart: alwaysgrafana:image: harbor.fq.com/prometheus/grafana:9.5.3container_name: grafanavolumes:- grafana-data:/var/lib/grafana      # Grafana 持久化存储ports:- "3000:3000"environment:- GF_SECURITY_ADMIN_USER=admin- GF_SECURITY_ADMIN_PASSWORD=adminrestart: alwaysnode-exporter:image: harbor.fq.com/prometheus/node-exporter:v1.8.2container_name: node-exporterports:- "9100:9100"restart: alwayscadvisor:image: harbor.fq.com/prometheus/cadvisor:v0.33.0container_name: cadvisorports:- "8080:8080"restart: alwayspushgateway:image: harbor.fq.com/prometheus/pushgateway:1.11.0container_name: pushgatewayports:- "9091:9091"restart: alwaysvolumes:prometheus-data:grafana-data:

6.3 验证告警规则

在添加或修改规则文件后,使用 Prometheus 自带的验证工具:

 # 进入到prometheus容器内,然后运行‘promtool’工具docker-compose exec  prometheus shpromtool check rules /etc/prometheus/rules/alert_rules.yml
  • 如果规则正确,会输出 SUCCESS
  • 如果规则有错误,会输出具体的错误信息,便于修复。 在 Prometheus Web 界面,进入 Alerts 页面,检查告警规则是否生效。

相关文章:

  • 现代c++获取linux系统指定网络接口的ip地址
  • 数字化时代软件检测机构如何保障软件质量、安全与合规性?
  • 【Linux实践系列】:进程间通信:万字详解命名管道实现通信
  • NGINX ngx_http_addition_module 模块响应体前后注入内容
  • NVIDIA新模型DAM-3B:描述一切,图像视频局部描述新突破
  • vue3+ts+pinia+vite实战后台管理系统一(框架搭建和配置)
  • IBM Engineering Lifecycle Management 创建用户
  • 迈瑞医疗:国际业务增长21.28% 发展中国家成重要增长引擎
  • C语言中的指针详解
  • 单元测试总结
  • Vue3 项目中 Pinia 与 JavaScript 循环依赖问题深度解析
  • 【前缀和 差分数组 数论】P6042 「ACOI2020」学园祭|省选-
  • 经典数仓架构深度解析与演进:从离线处理到新型架构对比
  • 为什么执行了删除语句后mysql内存无变化?
  • 介绍下Nginx的作用与请求转发机制
  • 初识c++
  • 【Java学习笔记】克隆对象
  • 【HCIA】NAT Server
  • mysql约束
  • RocketMQ 存储核心:深入解析 CommitLog 设计原理
  • 对谈|李钧鹏、周忆粟:安德鲁·阿伯特过程社会学的魅力
  • 西湖大学本科招生新增三省两市,首次面向上海招生
  • 黄永年:说狄仁杰的奏毁淫祠
  • 现场|贝聿铭上海大展:回到他建筑梦的初始之地
  • 涉军民事案件类型日益增多,最高法新规明晰管辖争议问题
  • 国家发改委:更大力度、更实举措促进民营经济高质量发展