Ubuntu 22.04 下使用 Prometheus 和 Grafana 实现多服务器集群监控

张开发
2026/4/7 17:52:17 15 分钟阅读

分享文章

Ubuntu 22.04 下使用 Prometheus 和 Grafana 实现多服务器集群监控
1. 为什么需要多服务器集群监控家里或公司有多台服务器时最头疼的就是管理问题。每台机器的CPU、内存、磁盘使用情况都不一样靠手动登录每台机器查看根本不现实。我之前用/etc/hosts记录IP和主机名结果机器一多就乱套了。试过一些商业监控工具要么太贵要么功能单一最后发现PrometheusGrafana这套开源组合才是真香。Prometheus负责采集数据Grafana负责漂亮的可视化配合起来就像给服务器集群装上了仪表盘。我在实际项目中用这套方案监控过50节点的集群稳定运行两年多没出过问题。下面就把我的配置经验完整分享出来从零开始带你在Ubuntu 22.04上搭建这套系统。2. 环境准备与规划2.1 硬件配置建议监控系统本身不需要太高的配置我用一台2核4G的虚拟机就能轻松监控20台服务器。但要注意两点一是监控机要有足够的存储空间建议100GB以上因为Prometheus会持续存储监控数据二是所有机器要在同一个内网避免因网络延迟影响数据采集。这是我的测试环境配置表主机名IP地址角色操作系统monitor01192.168.1.10PrometheusGrafanaUbuntu 22.04 LTSnode01192.168.1.11被监控节点Ubuntu 22.04 LTSnode02192.168.1.12被监控节点Ubuntu 22.04 LTS2.2 网络与防火墙设置首先确保所有机器之间能互相ping通。如果开了防火墙需要放行这些端口Prometheus: 9090node_exporter: 9100Grafana: 3000在Ubuntu上可以用这个命令放行端口sudo ufw allow 9090/tcp sudo ufw allow 9100/tcp sudo ufw allow 3000/tcp3. 安装与配置Prometheus3.1 一键安装PrometheusUbuntu 22.04的官方源已经包含Prometheus安装超级简单sudo apt update sudo apt install -y prometheus安装完成后检查服务状态systemctl status prometheus看到active (running)就说明启动成功了。3.2 配置文件详解Prometheus的核心配置文件是/etc/prometheus/prometheus.yml默认配置只能监控本机我们需要修改它来监控其他节点。关键配置项说明global: scrape_interval: 15s # 每15秒采集一次数据 evaluation_interval: 15s # 每15秒评估一次告警规则 scrape_configs: - job_name: prometheus # 监控Prometheus自身 static_configs: - targets: [localhost:9090] - job_name: node # 监控所有Linux节点 static_configs: - targets: - 192.168.1.10:9100 # 监控机自身 - 192.168.1.11:9100 # node01 - 192.168.1.12:9100 # node02 labels: group: production # 给这组机器打标签修改完配置后记得重启服务sudo systemctl restart prometheus4. 部署node_exporter采集数据4.1 在所有被监控节点安装每台需要监控的Linux机器都要安装node_exportersudo apt install -y prometheus-node-exporter检查服务是否正常运行systemctl status prometheus-node-exporter4.2 安全加固建议node_exporter默认会暴露大量系统指标建议做这些安全设置限制访问IPsudo ufw allow from 192.168.1.10 to any port 9100修改服务启动参数禁用危险模块sudo vim /etc/default/prometheus-node-exporter添加ARGS--no-collector.arp --no-collector.bcache5. Grafana安装与配置5.1 安装GrafanaGrafana需要添加官方仓库sudo apt-get install -y apt-transport-https sudo wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add - echo deb https://packages.grafana.com/oss/deb stable main | sudo tee /etc/apt/sources.list.d/grafana.list sudo apt-get update sudo apt-get install -y grafana启动并设置开机自启sudo systemctl start grafana-server sudo systemctl enable grafana-server5.2 连接Prometheus数据源浏览器访问http://服务器IP:3000首次登录使用admin/admin会要求修改密码左侧菜单选择Configuration Data Sources添加Prometheus数据源URL填http://localhost:90905.3 导入炫酷的仪表盘Grafana社区有大量现成的仪表盘模板我推荐这两个Node Exporter Full: ID 1860Linux主机监控: ID 8919导入方法在Grafana首页点击 Import输入仪表盘ID选择Prometheus数据源点击Import完成6. 高级配置技巧6.1 按业务分组监控当服务器数量多时可以按业务分组。修改prometheus.yml- job_name: web-servers static_configs: - targets: [192.168.1.11:9100, 192.168.1.12:9100] labels: group: frontend - job_name: db-servers static_configs: - targets: [192.168.2.11:9100] labels: group: database6.2 设置告警规则在/etc/prometheus/rules.yml添加groups: - name: host_stats rules: - alert: HighCPUUsage expr: 100 - (avg by(instance)(irate(node_cpu_seconds_total{modeidle}[5m])) * 100) 80 for: 5m labels: severity: warning annotations: summary: 高CPU使用率 (instance {{ $labels.instance }}) description: CPU使用率超过80%当前值: {{ $value }}%然后在prometheus.yml中引用这个规则文件rule_files: - rules.yml7. 常见问题排查7.1 Prometheus无法采集数据先检查target状态访问http:// :9090/targets查看各target的State是否为UP如果是DOWN检查node_exporter是否运行防火墙是否放行9100端口网络是否连通7.2 Grafana显示无数据检查数据源配置中的URL是否正确在Grafana的Explore界面尝试查询node_memory_MemFree_bytes查看Prometheus自身是否有数据curl http://localhost:9090/api/v1/query?querynode_memory_MemFree_bytes7.3 性能优化建议当监控大量节点时可以调整这些参数global: scrape_interval: 30s # 降低采集频率 evaluation_interval: 30s storage: tsdb: retention: 15d # 缩短数据保留时间这套监控方案我已经在生产环境用了三年最让我满意的是它的稳定性和扩展性。记得第一次配置时被yaml语法折腾了半天但熟悉后发现这种声明式配置其实非常灵活。现在我的团队每天上班第一件事就是看Grafana仪表盘所有服务器状态一目了然。

更多文章