Prometheus无需安装,解压二进制包并运行./prometheus --config.file=prometheus.yml即可启动;访问:9090且Targets状态为UP即验证成功,常见失败原因包括端口占用、YAML缩进错误或文件权限不足。

Prometheus 不需要“安装”,只需要解压二进制包 + 启动服务即可运行;它不依赖系统包管理器、不写注册表、不改全局路径,所谓“部署”本质是配置好 prometheus.yml 并确保进程能稳定拉起。
怎么快速验证 Prometheus 能不能跑起来
别急着配 systemd 或改权限,先用最简方式确认核心功能可用:
- 下载最新版(比如
v2.47.2):用wget https://github.com/prometheus/prometheus/releases/download/v2.47.2/prometheus-2.47.2.linux-amd64.tar.gz(amd64 架构) - 解压后直接进目录:
tar -xzf prometheus-*.tar.gz && cd prometheus-*/ - 默认配置文件
prometheus.yml已自带本地监控示例,无需修改 - 前台启动:
./prometheus --config.file=prometheus.yml --web.listen-address=":9090" - 浏览器打开
http://:9090,看到 Status → Targets 页面且状态为 UP,就说明拉取成功
这一步卡住,90% 是端口被占用(netstat -tunlp | grep :9090)、配置文件缩进错误(YAML 对空格敏感)、或当前用户没权限读 prometheus.yml。
为什么用 systemd 管理时总报 permission denied
常见于把 prometheus 二进制或 prometheus.yml 放在 /root/ 或普通用户家目录下,但 systemd 服务里指定了非 root 用户(如 User=prometheus)——它根本读不到那些路径。
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 必须把所有运行所需文件统一放在系统级路径,例如
/usr/local/prometheus/ -
prometheus.yml和data/目录都要chown -R prometheus:prometheus /usr/local/prometheus - 检查
ExecStart=中的路径是否完整,比如写成/usr/local/prometheus/prometheus,不能只写prometheus - 如果用了
--storage.tsdb.path,这个路径也必须属于prometheus用户,否则首次写入 TSDB 就会失败并静默退出
scrape_configs 里 targets 写 localhost:9100 为什么抓不到数据
这是新手最常踩的坑:Prometheus 默认以服务端本机视角解析 localhost。如果你在 A 机器上运行 Prometheus,又想采集 B 机器上的 node_exporter,那么 targets: ['localhost:9100'] 实际去连的是 A 自己的 9100 端口,而不是 B 的。
- 正确写法是填目标机器真实 IP,例如
targets: ['192.168.1.26:9100'] - 确保目标机器防火墙放行 9100 端口(
ufw allow 9100或firewall-cmd --add-port=9100/tcp --permanent) - 在目标机器上手动 curl 一下:
curl http://localhost:9100/metrics看是否返回文本指标;再从 Prometheus 所在机器 curl:curl http://192.168.1.26:9100/metrics,不通就不是 Prometheus 配置问题,而是网络或 exporter 本身问题 - 注意
scrape_interval默认是 1m,改小(如15s)后需重启 Prometheus 才生效
TSDB 数据目录增长太快,怎么控制保留时间
Prometheus 默认永久保存数据,磁盘爆满是迟早的事。关键控制项不在配置文件里,而在启动参数中:
- 加
--storage.tsdb.retention.time=30d(支持d/w/y单位),这是最常用、最安全的方式 - 不要用已废弃的
--storage.local.retention(v2.0+ 已移除) - 如果启用了 WAL(Write-Ahead Log),它的大小由内存和写入压力决定,无法直接配置上限;但只要 retention 设置合理,WAL 文件会被自动清理
- 执行
prometheus --version确认版本,不同大版本的 retention 参数名和行为有差异(比如 v3.x 开始支持--storage.tsdb.retention.size限制磁盘用量)
真正容易被忽略的是:retention 时间一到,Prometheus 不会立刻删数据,而是等下一个 compaction 周期(默认 2h)才清理。所以看到磁盘没马上降下来,不一定是配置没生效。

















