保姆级教程:在CentOS 7上部署Prometheus 2.25.0与Grafana 7.4.3,并监控你的第一台Linux服务器
2026/6/5 7:06:01 网站建设 项目流程

CentOS 7环境下搭建企业级监控系统:从零开始掌握Prometheus与Grafana

在当今的运维工作中,监控系统已经成为保障业务稳定性的关键基础设施。对于使用CentOS 7系统的团队来说,如何在这个相对老旧的平台上搭建一套现代化的监控解决方案?本文将带你从零开始,在CentOS 7上部署Prometheus 2.25.0和Grafana 7.4.3,并实现对Linux服务器的全面监控。

1. 环境准备与基础配置

在开始安装之前,我们需要确保系统环境满足基本要求。CentOS 7虽然稳定,但某些默认配置可能需要调整。

首先更新系统并安装必要依赖:

sudo yum update -y sudo yum install -y wget tar curl vim

对于生产环境,建议创建一个专用用户来运行监控服务:

sudo useradd --no-create-home --shell /bin/false prometheus sudo useradd --no-create-home --shell /bin/false grafana

常见问题排查

  • 如果遇到依赖缺失错误,可以尝试添加EPEL仓库:
    sudo yum install -y epel-release
  • 对于无法解析域名的情况,检查DNS配置:
    cat /etc/resolv.conf

2. Prometheus 2.25.0安装与配置

2.1 下载与安装

Prometheus的安装过程相对简单,但需要注意版本兼容性问题:

wget https://github.com/prometheus/prometheus/releases/download/v2.25.0/prometheus-2.25.0.linux-amd64.tar.gz tar xvf prometheus-2.25.0.linux-amd64.tar.gz sudo mv prometheus-2.25.0.linux-amd64 /usr/local/prometheus

验证安装是否成功:

/usr/local/prometheus/prometheus --version

2.2 配置文件详解

Prometheus的核心是它的配置文件prometheus.yml,下面是一个针对单节点监控的优化配置:

global: scrape_interval: 15s evaluation_interval: 15s scrape_configs: - job_name: 'prometheus' static_configs: - targets: ['localhost:9090'] metrics_path: '/metrics' scheme: 'http'

关键参数说明

参数默认值推荐值说明
scrape_interval1m15s数据采集间隔
evaluation_interval1m15s告警规则评估间隔
scrape_timeout10s10s采集超时时间

2.3 系统服务配置

为了确保Prometheus能够随系统启动,我们需要创建systemd服务:

sudo vim /etc/systemd/system/prometheus.service

服务文件内容:

[Unit] Description=Prometheus Monitoring System After=network.target [Service] User=prometheus Group=prometheus ExecStart=/usr/local/prometheus/prometheus \ --config.file=/usr/local/prometheus/prometheus.yml \ --storage.tsdb.path=/var/lib/prometheus/data \ --web.listen-address=0.0.0.0:9090 Restart=on-failure [Install] WantedBy=multi-user.target

启动并验证服务:

sudo systemctl daemon-reload sudo systemctl start prometheus sudo systemctl enable prometheus sudo systemctl status prometheus

3. Node Exporter部署与集成

3.1 安装Node Exporter

Node Exporter是采集系统指标的必备组件:

wget https://github.com/prometheus/node_exporter/releases/download/v1.1.2/node_exporter-1.1.2.linux-amd64.tar.gz tar xvf node_exporter-1.1.2.linux-amd64.tar.gz sudo mv node_exporter-1.1.2.linux-amd64/node_exporter /usr/local/bin/

3.2 配置为系统服务

创建node_exporter的systemd服务:

sudo vim /etc/systemd/system/node_exporter.service

服务文件内容:

[Unit] Description=Node Exporter After=network.target [Service] User=prometheus Group=prometheus ExecStart=/usr/local/bin/node_exporter \ --collector.systemd \ --collector.systemd.unit-whitelist=(sshd|nginx|postgresql).service Restart=on-failure [Install] WantedBy=multi-user.target

启动服务:

sudo systemctl daemon-reload sudo systemctl start node_exporter sudo systemctl enable node_exporter

3.3 集成到Prometheus

修改Prometheus配置,添加新的job:

- job_name: 'node' static_configs: - targets: ['localhost:9100'] labels: instance: 'local-server'

重新加载配置:

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

4. Grafana 7.4.3安装与配置

4.1 安装Grafana

Grafana提供了RPM包,安装过程简单:

wget https://dl.grafana.com/oss/release/grafana-7.4.3-1.x86_64.rpm sudo yum install -y grafana-7.4.3-1.x86_64.rpm

4.2 基础配置

Grafana的主要配置文件位于/etc/grafana/grafana.ini,对于基础使用可以保持默认,但有几个关键参数建议修改:

[server] http_port = 3000 domain = your-domain.com root_url = %(protocol)s://%(domain)s:%(http_port)s/

启动服务:

sudo systemctl start grafana-server sudo systemctl enable grafana-server

4.3 添加数据源

  1. 访问http://your-server-ip:3000
  2. 使用默认账号admin/admin登录
  3. 进入Configuration > Data Sources
  4. 选择Prometheus,填写URL为http://localhost:9090

4.4 导入Dashboard

Grafana社区提供了丰富的Dashboard模板,对于系统监控,推荐使用以下模板:

  1. Node Exporter Full: ID 1860
  2. Prometheus 2.0 Overview: ID 3662
  3. Linux Hosts Metrics: ID 10180

导入方法:

  • 进入Create > Import
  • 输入模板ID
  • 选择之前创建的Prometheus数据源

5. 监控指标解读与告警设置

5.1 关键监控指标

了解这些核心指标对于有效监控至关重要:

CPU相关

  • node_cpu_seconds_total:CPU时间统计
  • rate(node_cpu_seconds_total{mode="idle"}[1m]):CPU空闲率

内存相关

  • node_memory_MemTotal_bytes:总内存
  • node_memory_MemAvailable_bytes:可用内存

磁盘相关

  • node_filesystem_avail_bytes:文件系统可用空间
  • node_disk_io_time_seconds_total:磁盘IO时间

5.2 基础告警规则配置

在Prometheus中创建告警规则文件:

groups: - name: host-alerts rules: - alert: HighCPUUsage expr: 100 - (avg by(instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 80 for: 10m labels: severity: warning annotations: summary: "High CPU usage on {{ $labels.instance }}" description: "CPU usage is {{ $value }}%" - alert: LowMemory expr: (node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes) * 100 < 20 for: 10m labels: severity: warning annotations: summary: "Low memory on {{ $labels.instance }}" description: "Available memory is only {{ $value }}%"

在prometheus.yml中引用这个规则文件:

rule_files: - '/etc/prometheus/rules/*.rules'

6. 性能优化与维护

6.1 Prometheus存储优化

对于长期运行的Prometheus实例,存储优化很重要:

# 调整数据保留时间为30天 --storage.tsdb.retention.time=30d # 启用压缩 --storage.tsdb.retention.size=500GB

6.2 Grafana性能调优

修改Grafana配置提升性能:

[database] max_idle_conn = 10 max_open_conn = 100 [analytics] reporting_enabled = false

6.3 定期维护任务

建议设置以下维护计划:

  1. 每周
    • 检查磁盘空间使用情况
    • 验证备份完整性
  2. 每月
    • 审查告警规则有效性
    • 更新Dashboard模板
  3. 每季度
    • 评估监控覆盖范围
    • 进行容量规划

7. 安全加固措施

7.1 网络访问控制

使用防火墙限制访问:

sudo firewall-cmd --permanent --add-port=9090/tcp sudo firewall-cmd --permanent --add-port=3000/tcp sudo firewall-cmd --reload

7.2 认证配置

为Grafana启用基础认证:

[auth.basic] enabled = true

为Prometheus配置简单的认证:

basic_auth_users: [<username>:<password>]

7.3 数据加密

考虑为敏感数据传输启用TLS:

# 生成自签名证书 openssl req -new -newkey rsa:4096 -days 365 -nodes -x509 \ -subj "/C=US/ST=Denial/L=Springfield/O=Dis/CN=example.com" \ -keyout grafana.key -out grafana.crt

8. 高级监控场景扩展

8.1 监控容器环境

对于Docker环境,可以添加cAdvisor:

docker run \ --volume=/:/rootfs:ro \ --volume=/var/run:/var/run:ro \ --volume=/sys:/sys:ro \ --volume=/var/lib/docker/:/var/lib/docker:ro \ --publish=8080:8080 \ --detach=true \ --name=cadvisor \ google/cadvisor:latest

然后在Prometheus中添加配置:

- job_name: 'cadvisor' static_configs: - targets: ['localhost:8080']

8.2 自定义指标采集

通过Pushgateway收集批处理作业指标:

wget https://github.com/prometheus/pushgateway/releases/download/v1.4.1/pushgateway-1.4.1.linux-amd64.tar.gz tar xvf pushgateway-1.4.1.linux-amd64.tar.gz sudo mv pushgateway-1.4.1.linux-amd64/pushgateway /usr/local/bin/

创建systemd服务并启动,然后在Prometheus中添加配置:

- job_name: 'pushgateway' honor_labels: true static_configs: - targets: ['localhost:9091']

8.3 分布式监控架构

对于大规模环境,考虑以下架构:

  1. 分层采集
    • 边缘节点运行Node Exporter
    • 中间层运行Prometheus实例
    • 中心层运行联邦Prometheus
  2. 长期存储
    • 集成VictoriaMetrics或Thanos
  3. 高可用
    • 运行多个Prometheus实例
    • 使用Alertmanager集群

9. 常见问题解决方案

在实际部署过程中,可能会遇到各种问题。以下是几个典型场景的解决方法:

问题1:Prometheus启动时报"error opening storage"

解决方案

# 检查数据目录权限 sudo chown -R prometheus:prometheus /var/lib/prometheus # 或者指定新的数据目录 --storage.tsdb.path=/new/data/path

问题2:Grafana无法连接Prometheus数据源

排查步骤

  1. 验证网络连通性:
    curl http://prometheus-server:9090
  2. 检查防火墙规则
  3. 验证Prometheus服务状态

问题3:Node Exporter指标不全

可能原因及解决

  • 缺少collector:通过--collector.参数启用
  • 权限不足:确保运行用户有足够权限
  • 内核版本不支持:某些指标需要较新内核

10. 监控系统演进路线

随着业务发展,监控系统也需要不断进化。以下是一个典型的演进路径:

  1. 初级阶段(0-10节点):

    • 单机Prometheus
    • 基础Node Exporter监控
    • 简单告警
  2. 中级阶段(10-100节点):

    • 联邦Prometheus
    • 服务发现集成
    • 告警分级管理
  3. 高级阶段(100+节点):

    • 分布式监控架构
    • 多维度告警分析
    • 监控即代码实践
  4. 专家阶段

    • 预测性监控
    • 自动化修复
    • 与CI/CD深度集成

在实际项目中,我们发现最容易被忽视的是监控系统的维护成本。定期审查指标有效性、优化存储策略、简化告警规则,这些日常维护工作往往决定了监控系统的长期价值。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询