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.conf2. 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 --version2.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] DescriptionPrometheus Monitoring System Afternetwork.target [Service] Userprometheus Groupprometheus ExecStart/usr/local/prometheus/prometheus \ --config.file/usr/local/prometheus/prometheus.yml \ --storage.tsdb.path/var/lib/prometheus/data \ --web.listen-address0.0.0.0:9090 Restarton-failure [Install] WantedBymulti-user.target启动并验证服务sudo systemctl daemon-reload sudo systemctl start prometheus sudo systemctl enable prometheus sudo systemctl status prometheus3. Node Exporter部署与集成3.1 安装Node ExporterNode 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] DescriptionNode Exporter Afternetwork.target [Service] Userprometheus Groupprometheus ExecStart/usr/local/bin/node_exporter \ --collector.systemd \ --collector.systemd.unit-whitelist(sshd|nginx|postgresql).service Restarton-failure [Install] WantedBymulti-user.target启动服务sudo systemctl daemon-reload sudo systemctl start node_exporter sudo systemctl enable node_exporter3.3 集成到Prometheus修改Prometheus配置添加新的job- job_name: node static_configs: - targets: [localhost:9100] labels: instance: local-server重新加载配置curl -X POST http://localhost:9090/-/reload4. Grafana 7.4.3安装与配置4.1 安装GrafanaGrafana提供了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.rpm4.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-server4.3 添加数据源访问http://your-server-ip:3000使用默认账号admin/admin登录进入Configuration Data Sources选择Prometheus填写URL为http://localhost:90904.4 导入DashboardGrafana社区提供了丰富的Dashboard模板对于系统监控推荐使用以下模板Node Exporter Full: ID 1860Prometheus 2.0 Overview: ID 3662Linux Hosts Metrics: ID 10180导入方法进入Create Import输入模板ID选择之前创建的Prometheus数据源5. 监控指标解读与告警设置5.1 关键监控指标了解这些核心指标对于有效监控至关重要CPU相关node_cpu_seconds_totalCPU时间统计rate(node_cpu_seconds_total{modeidle}[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{modeidle}[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/*.rules6. 性能优化与维护6.1 Prometheus存储优化对于长期运行的Prometheus实例存储优化很重要# 调整数据保留时间为30天 --storage.tsdb.retention.time30d # 启用压缩 --storage.tsdb.retention.size500GB6.2 Grafana性能调优修改Grafana配置提升性能[database] max_idle_conn 10 max_open_conn 100 [analytics] reporting_enabled false6.3 定期维护任务建议设置以下维护计划每周检查磁盘空间使用情况验证备份完整性每月审查告警规则有效性更新Dashboard模板每季度评估监控覆盖范围进行容量规划7. 安全加固措施7.1 网络访问控制使用防火墙限制访问sudo firewall-cmd --permanent --add-port9090/tcp sudo firewall-cmd --permanent --add-port3000/tcp sudo firewall-cmd --reload7.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 /CUS/STDenial/LSpringfield/ODis/CNexample.com \ -keyout grafana.key -out grafana.crt8. 高级监控场景扩展8.1 监控容器环境对于Docker环境可以添加cAdvisordocker run \ --volume/:/rootfs:ro \ --volume/var/run:/var/run:ro \ --volume/sys:/sys:ro \ --volume/var/lib/docker/:/var/lib/docker:ro \ --publish8080:8080 \ --detachtrue \ --namecadvisor \ 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 分布式监控架构对于大规模环境考虑以下架构分层采集边缘节点运行Node Exporter中间层运行Prometheus实例中心层运行联邦Prometheus长期存储集成VictoriaMetrics或Thanos高可用运行多个Prometheus实例使用Alertmanager集群9. 常见问题解决方案在实际部署过程中可能会遇到各种问题。以下是几个典型场景的解决方法问题1Prometheus启动时报error opening storage解决方案# 检查数据目录权限 sudo chown -R prometheus:prometheus /var/lib/prometheus # 或者指定新的数据目录 --storage.tsdb.path/new/data/path问题2Grafana无法连接Prometheus数据源排查步骤验证网络连通性curl http://prometheus-server:9090检查防火墙规则验证Prometheus服务状态问题3Node Exporter指标不全可能原因及解决缺少collector通过--collector.参数启用权限不足确保运行用户有足够权限内核版本不支持某些指标需要较新内核10. 监控系统演进路线随着业务发展监控系统也需要不断进化。以下是一个典型的演进路径初级阶段0-10节点单机Prometheus基础Node Exporter监控简单告警中级阶段10-100节点联邦Prometheus服务发现集成告警分级管理高级阶段100节点分布式监控架构多维度告警分析监控即代码实践专家阶段预测性监控自动化修复与CI/CD深度集成在实际项目中我们发现最容易被忽视的是监控系统的维护成本。定期审查指标有效性、优化存储策略、简化告警规则这些日常维护工作往往决定了监控系统的长期价值。
保姆级教程:在CentOS 7上部署Prometheus 2.25.0与Grafana 7.4.3,并监控你的第一台Linux服务器
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.conf2. 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 --version2.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] DescriptionPrometheus Monitoring System Afternetwork.target [Service] Userprometheus Groupprometheus ExecStart/usr/local/prometheus/prometheus \ --config.file/usr/local/prometheus/prometheus.yml \ --storage.tsdb.path/var/lib/prometheus/data \ --web.listen-address0.0.0.0:9090 Restarton-failure [Install] WantedBymulti-user.target启动并验证服务sudo systemctl daemon-reload sudo systemctl start prometheus sudo systemctl enable prometheus sudo systemctl status prometheus3. Node Exporter部署与集成3.1 安装Node ExporterNode 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] DescriptionNode Exporter Afternetwork.target [Service] Userprometheus Groupprometheus ExecStart/usr/local/bin/node_exporter \ --collector.systemd \ --collector.systemd.unit-whitelist(sshd|nginx|postgresql).service Restarton-failure [Install] WantedBymulti-user.target启动服务sudo systemctl daemon-reload sudo systemctl start node_exporter sudo systemctl enable node_exporter3.3 集成到Prometheus修改Prometheus配置添加新的job- job_name: node static_configs: - targets: [localhost:9100] labels: instance: local-server重新加载配置curl -X POST http://localhost:9090/-/reload4. Grafana 7.4.3安装与配置4.1 安装GrafanaGrafana提供了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.rpm4.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-server4.3 添加数据源访问http://your-server-ip:3000使用默认账号admin/admin登录进入Configuration Data Sources选择Prometheus填写URL为http://localhost:90904.4 导入DashboardGrafana社区提供了丰富的Dashboard模板对于系统监控推荐使用以下模板Node Exporter Full: ID 1860Prometheus 2.0 Overview: ID 3662Linux Hosts Metrics: ID 10180导入方法进入Create Import输入模板ID选择之前创建的Prometheus数据源5. 监控指标解读与告警设置5.1 关键监控指标了解这些核心指标对于有效监控至关重要CPU相关node_cpu_seconds_totalCPU时间统计rate(node_cpu_seconds_total{modeidle}[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{modeidle}[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/*.rules6. 性能优化与维护6.1 Prometheus存储优化对于长期运行的Prometheus实例存储优化很重要# 调整数据保留时间为30天 --storage.tsdb.retention.time30d # 启用压缩 --storage.tsdb.retention.size500GB6.2 Grafana性能调优修改Grafana配置提升性能[database] max_idle_conn 10 max_open_conn 100 [analytics] reporting_enabled false6.3 定期维护任务建议设置以下维护计划每周检查磁盘空间使用情况验证备份完整性每月审查告警规则有效性更新Dashboard模板每季度评估监控覆盖范围进行容量规划7. 安全加固措施7.1 网络访问控制使用防火墙限制访问sudo firewall-cmd --permanent --add-port9090/tcp sudo firewall-cmd --permanent --add-port3000/tcp sudo firewall-cmd --reload7.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 /CUS/STDenial/LSpringfield/ODis/CNexample.com \ -keyout grafana.key -out grafana.crt8. 高级监控场景扩展8.1 监控容器环境对于Docker环境可以添加cAdvisordocker run \ --volume/:/rootfs:ro \ --volume/var/run:/var/run:ro \ --volume/sys:/sys:ro \ --volume/var/lib/docker/:/var/lib/docker:ro \ --publish8080:8080 \ --detachtrue \ --namecadvisor \ 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 分布式监控架构对于大规模环境考虑以下架构分层采集边缘节点运行Node Exporter中间层运行Prometheus实例中心层运行联邦Prometheus长期存储集成VictoriaMetrics或Thanos高可用运行多个Prometheus实例使用Alertmanager集群9. 常见问题解决方案在实际部署过程中可能会遇到各种问题。以下是几个典型场景的解决方法问题1Prometheus启动时报error opening storage解决方案# 检查数据目录权限 sudo chown -R prometheus:prometheus /var/lib/prometheus # 或者指定新的数据目录 --storage.tsdb.path/new/data/path问题2Grafana无法连接Prometheus数据源排查步骤验证网络连通性curl http://prometheus-server:9090检查防火墙规则验证Prometheus服务状态问题3Node Exporter指标不全可能原因及解决缺少collector通过--collector.参数启用权限不足确保运行用户有足够权限内核版本不支持某些指标需要较新内核10. 监控系统演进路线随着业务发展监控系统也需要不断进化。以下是一个典型的演进路径初级阶段0-10节点单机Prometheus基础Node Exporter监控简单告警中级阶段10-100节点联邦Prometheus服务发现集成告警分级管理高级阶段100节点分布式监控架构多维度告警分析监控即代码实践专家阶段预测性监控自动化修复与CI/CD深度集成在实际项目中我们发现最容易被忽视的是监控系统的维护成本。定期审查指标有效性、优化存储策略、简化告警规则这些日常维护工作往往决定了监控系统的长期价值。