找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

1009

积分

0

好友

131

主题
发表于 4 天前 | 查看: 14| 回复: 0

一、Prometheus简介

1.1、Prometheus核心特性

Prometheus是一套基于Go语言开发的开源监控、告警与时间序列数据库组合,最初由SoundCloud公司在2012年构建并开源。作为云原生监控领域的标杆,它在容器与微服务架构中得到了广泛应用。

其主要优势包括:

  1. 多维度数据模型:采用键值对格式存储数据,支持从多个维度(如实例、应用、端口)进行灵活查询。
  2. 高效的时序数据库:内置TSDB作为存储引擎,在保证高性能的同时,降低了数据存储成本。
  3. 强大的可视化集成:原生提供基础的Web UI,并支持接入如Grafana等第三方仪表盘,实现更丰富的图形化展示。
  4. 模块化架构:核心组件如Prometheus Server、Exporter、Alertmanager彼此独立,便于部署和维护。
  5. 存储灵活:不依赖外部存储,数据可持久化保存在本地磁盘,也支持远程存储方案。
  6. 出色的性能:单个数据采样点仅占用约3.5字节,一个Prometheus Server实例有能力处理数百万级别的监控指标。
  7. 灵活的服务发现:既支持静态配置文件管理监控目标,也支持基于Consul、Kubernetes等的动态服务发现机制。
  8. 强大的查询语言:提供了功能丰富的PromQL(Prometheus Query Language),并开放HTTP API供外部调用。
  9. 支持数据运算:可以直接在查询层对时间序列数据进行算术运算和聚合。
  10. 易于扩展:架构设计上便于横向扩展,以应对大规模监控场景。
  11. 丰富的生态:拥有众多官方和社区维护的Exporter,可用于采集各种中间件、数据库及应用自身的指标。

1.2、Prometheus监控原理

Prometheus的监控流程遵循典型的拉取(Pull)模型,其核心工作原理如下图所示:

Prometheus架构图

具体流程如下:

  • 数据采集:Prometheus Server根据服务发现或静态配置,定期从配置好的监控目标(Target)上拉取(Scrape)指标数据。这些目标上运行着对应的Exporter,用于暴露标准格式的指标。
  • 数据存储与告警:采集到的指标数据通过TSDB存储到本地硬盘。用户可以通过PromQL查询数据,并配置报警规则。触发的告警会发送至独立的Alertmanager组件进行处理。
  • 推送网关:对于生命周期短暂的作业(如批处理任务),由于其存活时间不足以被Server抓取,可以采用推送(Push)模式,先将指标数据推送到Pushgateway,再由Prometheus Server从Pushgateway抓取。
  • 告警通知与可视化:Alertmanager负责对告警进行去重、分组、静默,并通过配置的接收方(如邮件、钉钉、企业微信)发送告警通知。同时,Grafana等可视化工具可以接入Prometheus作为数据源,将监控数据图形化展示。

二、Prometheus二进制部署实战

以下是通过二进制包在Linux系统上部署Prometheus Server的详细步骤,这是一种在物理机或虚拟机环境中常见的运维部署方式。

2.1 下载安装包

访问Prometheus官方GitHub仓库,下载对应系统架构的二进制压缩包。以下以amd64架构的v2.47.0版本为例:

wget https://github.com/prometheus/prometheus/releases/download/v2.47.0/prometheus-2.47.0-rc.0.linux-amd64.tar.gz

2.2 解压与重命名

将下载的压缩包解压,并为其创建一个简洁的目录名以便管理。

tar xf prometheus-2.47.0-rc.0.linux-amd64.tar.gz
mv prometheus-2.47.0-rc.0.linux-amd64 /data/prometheus

解压目录

2.3 创建Systemd服务文件

为了方便管理服务的启动、停止和状态查看,我们将其配置为Systemd服务。请注意根据你的实际安装路径修改 ExecStart 中的相关路径。

cat <<-"EOF" > /etc/systemd/system/prometheus.service
[Unit]
Description="prometheus"
Documentation=https://prometheus.io/
After=network.target

[Service]
Type=simple
ExecStart=/data/prometheus/prometheus \
  --config.file=/data/prometheus/prometheus.yml \
  --storage.tsdb.path=/data/prometheus/data \
  --web.enable-lifecycle
Restart=on-failure
RestartSecs=5s
SuccessExitStatus=0
LimitNOFILE=655360
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=prometheus

[Install]
WantedBy=multi-user.target
EOF

2.4 启动并验证服务

创建好服务文件后,重载Systemd配置并启动Prometheus服务。

# 重新加载systemd配置,使新的服务文件生效
systemctl daemon-reload
# 启动Prometheus服务
systemctl start prometheus.service
# 设置开机自启(可选)
systemctl enable prometheus.service
# 检查服务运行状态
systemctl status prometheus.service

服务状态

2.5 访问Web界面

服务启动成功后,默认会监听9090端口。在浏览器中访问 http://<服务器IP>:9090,如果能看到Prometheus的原生Web UI界面(包含Graph、Status等菜单),则说明Server部署成功。

Prometheus Web UI

至此,一个基础的Prometheus监控服务器已经部署完成。接下来,你可以开始配置prometheus.yml文件,添加需要监控的目标,并探索其强大的Go语言生态所提供的各类Exporter,以构建完整的监控体系。




上一篇:UI、交互、UX设计师岗位区别与职责详解:2024职业发展指南
下一篇:嵌入式系统轻量级CLI调试工具:基于C/FreeRTOS实现内存读写与任务监控
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2025-12-17 19:40 , Processed in 0.109764 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2025 云栈社区.

快速回复 返回顶部 返回列表