Prometheus与Grafana监控系统部署全流程解析

一、环境准备与安全隔离

1.1 创建专用运行账户

监控系统应采用独立用户运行以增强安全性,建议创建无登录权限的系统账户:

  1. # 创建非交互式用户并设置目录权限
  2. sudo useradd --no-create-home --system --shell /sbin/nologin prometheus
  3. sudo mkdir -p /etc/prometheus/{config,rules} /var/lib/prometheus/{data,wal}
  4. sudo chown -R prometheus:prometheus /etc/prometheus /var/lib/prometheus

关键设计说明:

  • /etc/prometheus/config:主配置文件目录
  • /etc/prometheus/rules:告警规则存储
  • /var/lib/prometheus/wal:预写日志目录
  • /var/lib/prometheus/data:时序数据存储

1.2 依赖环境检查

确认系统满足以下基础条件:

  • Linux内核版本 ≥ 3.10
  • 可用磁盘空间 ≥ 50GB(生产环境建议)
  • 内存配置 ≥ 4GB(根据监控目标数量调整)
  • 网络防火墙开放端口:9090(Prometheus)、3000(Grafana)

二、核心组件安装部署

2.1 Prometheus二进制安装

采用官方预编译包进行安装:

  1. # 下载并解压安装包
  2. cd /opt
  3. export VERSION=3.5.0
  4. wget https://dl.cdn.example.com/prometheus-${VERSION}.linux-amd64.tar.gz
  5. tar -xzf prometheus-*.tar.gz
  6. mv prometheus-${VERSION}.linux-amd64 prometheus
  7. # 安装核心组件
  8. sudo cp prometheus/prometheus prometheus/promtool /usr/local/bin/
  9. sudo cp -r prometheus/console_libraries prometheus/consoles /etc/prometheus/

版本管理建议:

  • 使用环境变量管理版本号
  • 保留原始压缩包作为备份
  • 创建符号链接便于升级:ln -s /opt/prometheus /usr/local/prometheus

2.2 Grafana安装配置

通过包管理器安装最新稳定版:

  1. # Ubuntu/Debian系统
  2. sudo apt-get install -y adduser libfontconfig1
  3. wget https://dl.grafana.com/oss/release/grafana_12.0.0_amd64.deb
  4. sudo dpkg -i grafana_*.deb
  5. # CentOS/RHEL系统
  6. sudo yum install -y initscripts fontconfig
  7. wget https://dl.grafana.com/oss/release/grafana-12.0.0-1.x86_64.rpm
  8. sudo rpm -ivh grafana-*.rpm

存储配置优化:

  • 修改/etc/grafana/grafana.ini中的[paths]段:
    1. [paths]
    2. data = /var/lib/grafana
    3. logs = /var/log/grafana
    4. plugins = /var/lib/grafana/plugins
    5. provisioning = /etc/grafana/provisioning

三、服务管理配置

3.1 Systemd服务单元

创建Prometheus服务文件/etc/systemd/system/prometheus.service

  1. [Unit]
  2. Description=Prometheus Time Series Database
  3. After=network.target
  4. [Service]
  5. User=prometheus
  6. Group=prometheus
  7. Type=simple
  8. ExecStart=/usr/local/bin/prometheus \
  9. --config.file=/etc/prometheus/prometheus.yml \
  10. --storage.tsdb.path=/var/lib/prometheus/data \
  11. --storage.tsdb.retention.time=30d \
  12. --web.console.templates=/etc/prometheus/consoles \
  13. --web.console.libraries=/etc/prometheus/console_libraries
  14. Restart=on-failure
  15. RestartSec=5s
  16. [Install]
  17. WantedBy=multi-user.target

Grafana服务配置/etc/systemd/system/grafana-server.service

  1. [Unit]
  2. Description=Grafana instance
  3. After=network.target
  4. [Service]
  5. User=grafana
  6. Group=grafana
  7. Type=notify
  8. ExecStart=/usr/sbin/grafana-server --config=/etc/grafana/grafana.ini --pidfile=/var/run/grafana/grafana-server.pid
  9. Restart=on-failure
  10. RestartSec=5s
  11. [Install]
  12. WantedBy=multi-user.target

3.2 日志管理方案

推荐使用journald进行日志集中管理:

  1. # 修改服务文件添加日志配置
  2. systemctl edit prometheus.service
  3. # 添加以下内容:
  4. [Service]
  5. StandardOutput=syslog
  6. StandardError=syslog
  7. SyslogIdentifier=prometheus
  8. # 配置日志轮转
  9. cat > /etc/logrotate.d/prometheus <<EOF
  10. /var/log/prometheus/*.log {
  11. weekly
  12. missingok
  13. rotate 4
  14. compress
  15. delaycompress
  16. notifempty
  17. create 640 prometheus adm
  18. }
  19. EOF

四、初始配置与验证

4.1 Prometheus基础配置

编辑/etc/prometheus/prometheus.yml

  1. global:
  2. scrape_interval: 15s
  3. evaluation_interval: 15s
  4. scrape_configs:
  5. - job_name: 'prometheus'
  6. static_configs:
  7. - targets: ['localhost:9090']
  8. - job_name: 'node'
  9. static_configs:
  10. - targets: ['localhost:9100']

验证配置语法:

  1. promtool check config /etc/prometheus/prometheus.yml

4.2 Grafana初始化

启动服务后执行初始设置:

  1. # 启动服务
  2. sudo systemctl daemon-reload
  3. sudo systemctl start prometheus grafana-server
  4. sudo systemctl enable prometheus grafana-server
  5. # 获取初始密码(根据实际安装方式调整)
  6. sudo grafana-cli admin reset-admin-password --homepath "/usr/share/grafana" newpassword

访问管理界面:

  • 地址:http://<服务器IP>:3000
  • 默认凭证:admin/newpassword(建议立即修改)

五、生产环境优化建议

5.1 高可用架构

  • 部署联邦集群:使用--cluster.*参数配置
  • 对象存储集成:配置--storage.tsdb.path指向分布式存储
  • 告警多副本:配置多个Alertmanager实例

5.2 安全加固

  • 启用TLS加密:修改web.config部分
  • 配置基本认证:使用Nginx反向代理
  • 定期更新:设置自动更新脚本

5.3 性能调优

关键参数调整示例:

  1. # prometetheus.yml片段
  2. global:
  3. scrape_timeout: 10s
  4. # 命令行参数
  5. --storage.tsdb.retention.size=512MB # 磁盘使用限制
  6. --web.max-connections=1024 # 并发连接数
  7. --query.max-samples=50000000 # 查询样本限制

六、常见问题处理

6.1 启动失败排查

  1. 检查服务状态:systemctl status prometheus
  2. 查看日志:journalctl -u prometheus -f
  3. 验证配置文件:promtool check config

6.2 数据持久化问题

  • 确保/var/lib/prometheus有足够空间
  • 检查文件系统权限:ls -ld /var/lib/prometheus
  • 验证WAL目录完整性:ls /var/lib/prometheus/wal/

6.3 Grafana面板不显示数据

  1. 检查数据源配置
  2. 验证查询语句语法
  3. 确认时间范围选择正确

通过以上步骤,读者可以完成从基础安装到生产环境优化的完整监控系统部署。建议根据实际业务需求调整配置参数,并定期进行健康检查和性能监控。