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

基于 Prometheus+Alertmanager+Grafana 打造监控报警后台(一)-Prometheus介绍及安装

一、什么是 Prometheus?

1.1 Prometheus 是一个开源系统监控和警报工具包,最初由 SoundCloud 构建。自 2012 年启动以来,许多公司和组织都采用了 Prometheus,该项目拥有非常活跃的开发者和用户社区。它现在是一个独立的开源项目,独立于任何公司进行维护。为了强调这一点,并明确项目的治理结构,Prometheus 于 2016 年作为继 Kubernetes 之后的第二个托管项目加入了云原生计算基金会(CNCF)。

1.2 Prometheus 将其指标收集并存储为时间序列数据,即指标信息与记录时的时间戳以及称为标签的可选键值对一起存储。
🔍 核心特性

 - 多维数据模型,可以按照实例,服务,端点和方法之类的维度随意对数据进行切片和切块- 有自己的查询语言 PromQL,可以进行非常灵活和多样的查询- 不依赖分布式存储;单个服务器节点是自治的, 可以随时随地部署监控服务- 时间序列收集通过 HTTP 上的拉模型进行- 通过中间网关(pushgateway)支持推送时间序列- 通过服务发现或静态配置发现目标实例- 多种图形和仪表板支持模式

1.3 Prometheus架构及其一些生态系统组件
在这里插入图片描述
上面使用的是官方文档中的架构图,主要包含以下几点:
1.Prometheus Server是Prometheus组件中的核心部分,负责实现对监控数据的获取,存储以及查询。
2.Exporter将监控数据采集的端点通过HTTP服务的形式暴露给Prometheus Server,Prometheus Server通过访问该Exporter提供的Endpoint端点,即可获取到需要采集的监控数据。
3.AlertManager是在Prometheus Server中支持基于PromQL创建告警规则,如果满足PromQL定义的规则,则会产生一条告警,而告警的后续处理流程则由AlertManager进行管理使用邮件,企微等进行消息通知。
4.grafana是一个通用的可视化工具,它不仅适用于展示Prometheus下的监控数据,也同样适用于一些其他的数据可视化需求。
5.PushGateway是在当网络需求无法直接满足时,就可以利用PushGateway来进行中转。可以通过PushGateway将内部网络的监控数据主动Push到Gateway当中。而Prometheus Server则可以采用同样Pull的方 式从PushGateway中获取到监控数据。

二、使用 Docker 安装 Prometheus

我们采用 docker-compose 方式进行部署,便于管理配置与数据持久化。

  1. 创建项目目录结构
mkdir -p /opt/prometheus/{data,config,rules}
cd /opt/prometheus

目录说明:

config/:存放 prometheus.yml 主配置文件
rules/:存放告警规则文件
data/:Prometheus 数据存储目录(TSDB)

在这里插入图片描述

  1. 编写 Prometheus 配置文件
    主配置:config/prometheus.yml
global:scrape_interval: 15s          # 全局采集间隔evaluation_interval: 15s      # 告警规则评估频率scrape_timeout: 10s           # 单次采集超时时间# 加载告警规则
rule_files:- "rules/*.yml"# 配置 Alertmanager(可选,用于告警通知)
alerting:alertmanagers:- static_configs:- targets:- "localhost:9093"  # 若使用 Alertmanager,填写其地址# 采集目标配置
scrape_configs:# 监控 Prometheus 自身- job_name: 'prometheus'static_configs:- targets: ['localhost:9090']# 示例:监控主机(需提前部署 Node_Exporter)- job_name: 'node_expoter'static_configs:- targets: ['localhost:9100']  labels:group: 'ubuntu-server'# 示例:监控 gpu指标(需提前部署 Dcgm_Exporter)- job_name: 'dcgm_exporter'static_configs:- targets: ['localhost:9400']
告警规则示例:rules/instance-down.yml
groups:- name: instance-healthrules:- alert: InstanceDownexpr: up == 0for: 1mlabels:severity: criticalannotations:summary: "实例 {{ $labels.instance }} 已宕机"description: "实例 {{ $labels.instance }} (job={{ $labels.job }}) 已宕机超过 1 分钟。"
  1. 编写 docker-compose.yml
version: '3.8'services:prometheus:image: prom/prometheus:latestcontainer_name: prometheusrestart: unless-stoppedcommand:- '--config.file=/etc/prometheus/prometheus.yml'- '--storage.tsdb.path=/prometheus'- '--web.enable-lifecycle'           # 支持热加载配置(POST /-/reload)- '--storage.tsdb.retention.time=15d'  # 数据保留 15 天ports:- "9090:9090"volumes:- ./config:/etc/prometheus- ./rules:/etc/prometheus/rules- prometheus_data:/prometheus- /etc/localtime:/etc/localtime:ro  # 同步主机时间networks:- monitoringnetworks:monitoring:driver: bridgevolumes:prometheus_data:driver: local

三、启动 Prometheus 服务

# 在 /opt/prometheus 目录下执行
docker-compose up -d

验证服务

docker ps

在这里插入图片描述
如出现问题则查看日志更具日志保存进行相应的调整

docker logs -f prometheus

五、访问 Prometheus Web UI
打开浏览器访问:
http://{ip}:9090
在这里插入图片描述
查询个exporter状态:
在这里插入图片描述
查询报警规则:
在这里插入图片描述
使用PromQL语句查询数据:
Prometheus查询语法官方文档地址:https://prometheus.io/docs/prometheus/latest/querying/basics/
在这里插入图片描述

六、配置热加载(无需重启)
当修改 prometheus.yml 或规则文件后,可发送 reload 请求:

curl -X POST http://localhost:9090/-/reload

注意: 需在 docker-compose.yml 中启用 --web.enable-lifecycle

http://www.xdnf.cn/news/18653.html

相关文章:

  • DMP-Net:面向脑组织术中成像的深度语义先验压缩光谱重建方法|文献速递-深度学习人工智能医疗图像
  • PyTorch实战(1)——深度学习概述
  • 阿里:基于设计逻辑的LLM数据合成
  • crc16是什么算法
  • C++ 指针与引用面试深度解析
  • STM32项目分享:基于STM32的智能洗衣机
  • 开源大模型天花板?DeepSeek-V3 6710亿参数MoE架构深度拆解
  • 微软恶意软件删除工具:官方免费的系统安全防护利器
  • 网络编程1-基本概念、函数接口
  • 2.1.5 数学与其他
  • VUE 的弹出框实现图片预览和视频预览
  • C++数据结构之二叉搜索树
  • AEB 强制来临,东软睿驰Next-Cube-Lite有望成为汽车安全普惠“破局器”
  • macbook国内源安装rust
  • 【AGI使用教程】GPT-OSS 本地部署(2)
  • 【AMBA总线互联IP】
  • 自然语言处理——07 BERT、ELMO、GTP系列模型
  • python文件import找不到其它目录的库解决方案
  • Python爬虫第四课:selenium自动化
  • 【云馨AI-大模型】AI热潮持续升温:2025年8月第三周全球动态
  • MySQL数据库精研之旅第十一期:打造高效联合查询的实战宝典(二)
  • 禁用 Nagle 算法(TCP_NODELAY)
  • RuoYi-Vue3项目中Swagger接口测试404,端口问题解析排查
  • 信誉代币的发行和管理机制是怎样的?
  • linux下camera 详细驱动流程 OV02K10为例(chatgpt版本)
  • stm32温控大棚测控系统(CO2+温湿度+光照)+仿真
  • Linux->多线程2
  • 56 C++ 现代C++编程艺术5-万能引用
  • Wagtail CRX 简介
  • 详解无监督学习的核心原理