Prometheus 安装实战指南:从零搭建到生产环境避坑

1次阅读
没有评论

共计 1748 个字符,预计需要花费 5 分钟才能阅读完成。

image.webp

1. 背景介绍

Prometheus 是一款开源的系统监控和警报工具,最初由 SoundCloud 开发,现在是 CNCF 的毕业项目。它通过主动抓取(pull)方式收集指标数据,支持多维度数据模型和强大的查询语言 PromQL,是现代云原生监控体系的核心组件。

Prometheus 安装实战指南:从零搭建到生产环境避坑

  • 核心功能
  • 多维度数据采集与存储
  • 灵活的查询语言 PromQL
  • 可视化(结合 Grafana)
  • 警报管理

  • 重要性

  • Kubernetes 生态的默认监控方案
  • 支持服务发现,适合动态环境
  • 社区生态丰富(exporters 覆盖主流中间件)

2. 安装准备

系统要求

  • Linux/Unix 系统(生产环境推荐 CentOS/RHEL 7+ 或 Ubuntu 18.04+)
  • 最低配置:1 核 CPU/1GB 内存(生产环境建议 4 核 +/8GB+)
  • 磁盘空间:至少 50GB(根据指标保留时长调整)

依赖检查

# 检查系统版本
cat /etc/os-release

# 检查时间同步(Prometheus 对时间敏感)timedatectl status

# 检查防火墙(需开放 9090 端口)sudo firewall-cmd --list-ports

3. 分步安装指南

二进制安装(推荐测试环境)

  1. 下载最新稳定版:

    wget https://github.com/prometheus/prometheus/releases/download/v2.30.3/prometheus-2.30.3.linux-amd64.tar.gz

  2. 解压并运行:

    tar xvfz prometheus-*.tar.gz
    cd prometheus-*
    ./prometheus --config.file=prometheus.yml

  3. 验证:访问 http:// 服务器 IP:9090

容器化部署(推荐生产环境)

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

4. 配置详解

prometheus.yml 核心配置

global:
  scrape_interval: 15s  # 抓取间隔
  evaluation_interval: 15s  # 规则评估间隔

scrape_configs:
  - job_name: 'prometheus'  # 监控 Prometheus 自身
    static_configs:
      - targets: ['localhost:9090']

  - job_name: 'node'  # 监控 Linux 主机
    static_configs:
      - targets: ['node-exporter:9100']

5. 性能优化

  • 内存优化
  • 调整 --storage.tsdb.retention.time(默认 15 天)
  • 使用 --storage.tsdb.no-lockfile 减少内存占用

  • 存储优化

  • SSD 磁盘优先
  • 考虑远程存储(如 Thanos)

  • 抓取优化

  • 合理设置 scrape_interval(不同 job 可差异化)
  • 使用 scrape_timeout 避免慢目标阻塞

6. 安全实践

  • 基础认证 (示例):

    basic_auth_users:
      [username: "$2y$..."]  # bcrypt 哈希密码 

  • 网络隔离

  • 通过 Kubernetes NetworkPolicy 限制访问
  • 使用反向代理(Nginx)添加 TLS

  • 最小权限

  • 专用系统用户运行 Prometheus
  • 配置文件权限设置为 640

7. 避坑指南

  1. 时间不同步 :导致指标时间戳混乱
  2. 解决方案:部署 NTP 服务

  3. OOM 崩溃 :默认内存限制较低

  4. 解决方案:增加 --storage.tsdb.retention.size 限制

  5. 抓取目标不可达 :网络策略未放行

  6. 解决方案:检查防火墙和 DNS 解析

  7. 配置热加载失效 :未发送 SIGHUP 信号

  8. 解决方案:kill -HUP <pid>

  9. 磁盘空间耗尽 :未设置保留策略

  10. 解决方案:配置 --storage.tsdb.retention.time=30d

结语

现在您已经掌握了 Prometheus 的核心部署技能,建议从监控一台测试服务器开始实践。可以尝试:

  1. 部署 node-exporter 采集主机指标
  2. 编写第一条 PromQL 查询 CPU 使用率
  3. 配置简单的告警规则(如内存 >90%)

遇到问题时,欢迎查阅 Prometheus 官方文档或社区论坛。监控系统的价值在于持续迭代,祝您构建出高效的监控体系!

正文完
 0
评论(没有评论)