首页/新闻资讯/正文详情

ZrLog高可用架构的Prometheus+Grafana监控部署指南

发布时间:2026/11/5 4:30:40 来源:云帆数科 栏目:资讯中心
ZrLog高可用架构的Prometheus+Grafana监控部署指南
1. 项目概述在当今互联网服务架构中监控系统的重要性不言而喻。作为一位有着多年运维经验的工程师我深知一个完善的监控体系对于保障业务稳定运行的关键作用。本文将详细介绍如何为ZrLog高可用架构部署基于PrometheusGrafana的监控系统这套方案已经在我们的生产环境中稳定运行超过两年成功帮助我们提前发现并解决了数十次潜在故障。ZrLog作为一款轻量级的Java博客系统在高可用架构下通常由多个组件构成应用服务器、数据库、负载均衡器等。要确保整个系统的稳定运行我们需要对这些组件的运行状态进行全方位监控。Prometheus作为当前最流行的开源监控解决方案配合Grafana强大的可视化能力能够完美满足我们对监控系统的各项需求。2. 环境准备与架构设计2.1 系统环境要求在开始部署前我们需要确保所有服务器满足以下基本条件操作系统RHEL 9.3本文示例环境网络配置所有节点间网络互通权限要求root或具有sudo权限的用户资源要求监控服务器至少2核CPU4GB内存被监控节点无特殊要求node_exporter资源消耗极低2.2 整体架构设计我们的监控架构采用经典的Prometheus拉取模式配合Grafana进行可视化展示。具体组件分布如下角色IP部署内容监控服务器172.25.254.30Prometheus Grafana数据库服务器172.25.254.99MariaDB应用服务器1172.25.254.100ZrLog JDK11应用服务器2172.25.254.200ZrLog JDK11HAProxy Master1172.25.254.10HAProxy KeepalivedHAProxy Master2172.25.254.20HAProxy Keepalived2.3 前置准备工作在所有服务器上执行以下基础配置# 1. 关闭防火墙生产环境建议按需放行端口 systemctl stop firewalld systemctl disable firewalld # 2. 关闭SELinux永久关闭需重启生效 sed -i s/^SELINUX.*/SELINUXdisabled/ /etc/selinux/config setenforce 0 # 3. 安装基础依赖 dnf install -y wget net-tools tar grep # 4. 检查关键端口是否被占用 netstat -tulpn | grep -E 9090|3000|9100注意在生产环境中如果无法关闭防火墙需要确保以下端口开放Prometheus: 9090Grafana: 3000node_exporter: 9100mysqld_exporter: 91043. Prometheus部署与配置3.1 Prometheus安装步骤在监控服务器(172.25.254.30)上执行以下操作# 1. 下载Prometheus请根据实际架构选择对应版本 cd /root wget https://github.com/prometheus/prometheus/releases/download/v2.51.2/prometheus-2.51.2.linux-amd64.tar.gz # 2. 解压安装包 tar -xzf prometheus-2.51.2.linux-amd64.tar.gz # 3. 创建数据目录并设置权限 mkdir -p /root/prometheus/data chmod 755 /root/prometheus -R3.2 Prometheus配置文件详解创建Prometheus的主配置文件/root/prometheus/prometheus.yml内容如下global: scrape_interval: 15s evaluation_interval: 15s scrape_configs: - job_name: prometheus static_configs: - targets: [localhost:9090] - job_name: 172.25.254.10 static_configs: - targets: [172.25.254.10:9100] labels: instance: HAProxy1 - job_name: 172.25.254.100 static_configs: - targets: [172.25.254.100:9100] labels: instance: ZrLog1 - job_name: 172.25.254.99 static_configs: - targets: [172.25.254.99:9104] labels: instance: MariaDB - job_name: mysql-172.25.254.99 static_configs: - targets: [172.25.254.99:9104] labels: instance: MariaDB-MySQL - job_name: 172.25.254.20 static_configs: - targets: [172.25.254.20:9100] labels: instance: HAProxy2 - job_name: 172.25.254.200 static_configs: - targets: [172.25.254.200:9100] labels: instance: ZrLog2重要说明YAML文件对缩进非常敏感建议使用空格而非Tab键进行缩进。每个层级使用2个空格缩进。3.3 启动Prometheus服务# 1. 验证配置文件语法 /root/prometheus-2.51.2.linux-amd64/promtool check config /root/prometheus/prometheus.yml # 2. 启动Prometheus后台运行 cd /root/prometheus-2.51.2.linux-amd64 nohup ./prometheus \ --config.file/root/prometheus/prometheus.yml \ --storage.tsdb.path/root/prometheus/data \ --web.enable-admin-api \ --web.enable-lifecycle \ --web.listen-address0.0.0.0:9090 /root/prometheus.log 21 # 3. 验证服务状态 sleep 5 ps -ef | grep prometheus | grep -v grep netstat -tulpn | grep 9090 tail -10 /root/prometheus.log3.4 Prometheus服务管理如果需要重启Prometheus服务可以执行以下命令pkill prometheus cd /root/prometheus-2.51.2.linux-amd64 nohup ./prometheus \ --config.file/root/prometheus/prometheus.yml \ --storage.tsdb.path/root/prometheus/data \ --web.enable-admin-api \ --web.enable-lifecycle \ --web.listen-address0.0.0.0:9090 /root/prometheus.log 21 4. Grafana部署与配置4.1 Grafana安装步骤在监控服务器(172.25.254.30)上执行以下操作# 1. 添加Grafana官方源使用清华镜像加速 cat /etc/yum.repos.d/grafana.repo EOF [grafana] namegrafana baseurlhttps://mirrors.tuna.tsinghua.edu.cn/grafana/yum/rpm/ enabled1 gpgcheck0 EOF # 2. 安装Grafana dnf install -y grafana # 3. 启动并设置开机自启 systemctl start grafana-server systemctl enable grafana-server # 4. 验证服务状态 systemctl status grafana-server netstat -tulpn | grep 30004.2 Grafana初始配置浏览器访问http://172.25.254.30:3000使用默认账号登录用户名admin密码admin首次登录会强制要求修改密码建议设置一个强密码并妥善保存4.3 添加Prometheus数据源左侧菜单 → Configuration → Data Sources点击 Add data source选择 Prometheus核心配置URL: http://172.25.254.30:9090Scrape Interval: 15s与Prometheus配置一致点击 Save Test确认显示Data source is working常见问题如果连接失败请检查Prometheus服务是否正常运行9090端口是否监听防火墙/SELinux是否已关闭或放行端口5. 被监控节点配置5.1 node_exporter部署所有被监控节点在每个需要监控的服务器上执行以下操作# 1. 下载node_exporter cd /root wget https://github.com/prometheus/node_exporter/releases/download/v1.8.0/node_exporter-1.8.0.linux-amd64.tar.gz # 2. 解压安装包 tar -xzf node_exporter-1.8.0.linux-amd64.tar.gz # 3. 启动node_exporter nohup ./node_exporter-1.8.0.linux-amd64/node_exporter \ --web.listen-address0.0.0.0:9100 /root/node_exporter.log 21 # 4. 验证服务状态 sleep 3 ps -ef | grep node_exporter | grep -v grep netstat -tulpn | grep 9100 tail -5 /root/node_exporter.log5.2 mysqld_exporter部署仅数据库服务器在数据库服务器(172.25.254.99)上执行以下操作# 1. 下载并解压mysqld_exporter cd /root wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.15.1/mysqld_exporter-0.15.1.linux-amd64.tar.gz tar -xzf mysqld_exporter-0.15.1.linux-amd64.tar.gz # 2. 创建MySQL认证配置文件 cat /root/.my.cnf EOF [client] userzrlog passwordzrlog123456 hostlocalhost EOF # 3. 启动mysqld_exporter nohup ./mysqld_exporter-0.15.1.linux-amd64/mysqld_exporter \ --config.my-cnf/root/.my.cnf \ --web.listen-address0.0.0.0:9104 /root/mysqld_exporter.log 21 # 4. 验证服务状态 ps -ef | grep mysqld_exporter | grep -v grep netstat -tulpn | grep 9104安全提示.my.cnf文件包含数据库凭证应设置适当权限chmod 600 /root/.my.cnf6. Grafana监控面板配置6.1 导入预定义仪表盘Grafana社区提供了大量优质的预定义仪表盘我们可以直接导入使用左侧菜单 → Dashboards → Import输入以下推荐的仪表盘ID1860: Node Exporter Full系统全维度监控15869: Prometheus Blackbox Exporter网络探测10856: HAProxy MetricsHAProxy专属监控选择我们之前添加的Prometheus数据源点击Import对于无法联网的环境可以手动下载JSON文件后通过Upload JSON file方式导入。6.2 自定义监控面板虽然预定义仪表盘很方便但根据实际需求创建自定义面板往往更加实用。下面是一个标准服务器监控大盘的布局建议面板位置指标PromQL查询语句可视化类型左上CPU使用率100 - (avg by (instance) (irate(node_cpu_seconds_total{modeidle}[5m])) * 100)Time series右上内存使用率100 - (node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes * 100)Time series左中磁盘使用率100 - (node_filesystem_avail_bytes{mountpoint/} / node_filesystem_size_bytes{mountpoint/} * 100)Time series右中网络流量(MB/s)irate(node_network_receive_bytes_total[5m])/1024/1024Time series左下MySQL连接数mysql_global_status_threads_connectedStat右下MySQL QPSirate(mysql_global_status_queries[5m])Time series创建自定义面板的步骤左侧菜单 → Dashboards → New Dashboard点击 Add → Visualization选择Prometheus数据源在查询框中输入对应的PromQL语句设置适当的可视化类型和面板标题点击Apply生成图表最后保存仪表盘6.3 面板优化技巧为了使监控面板更加专业和易读建议进行以下优化拆分面板原则一个面板只监控一个维度的指标如CPU、内存、磁盘等避免将不同单位的指标放在同一面板如CPU%和连接数图表样式优化修改时间范围为最近30分钟初期数据积累后再调整为24小时在图例中只显示实例名称{{instance}}为每个指标设置正确的单位如百分比、MB/s等告警阈值设置CPU使用率警告70%严重90%内存使用率警告80%严重95%磁盘使用率警告85%严重95%7. 监控验证与日常使用7.1 验证监控状态检查Prometheus Targets访问http://172.25.254.30:9090/targets确认所有Target状态为UP验证监控指标在Prometheus的Graph页面输入以下指标验证数据node_cpu_seconds_totalnode_memory_MemTotal_bytesmysql_global_status_threads_connected7.2 模拟业务负载测试为了验证监控系统的有效性我们可以模拟业务负载# 安装ab工具Apache Benchmark dnf install -y httpd-tools # 对ZrLog进行压力测试 ab -n 10000 -c 100 http://172.25.254.101/在压测过程中观察Grafana面板上的以下指标变化应用服务器CPU、内存使用率HAProxy连接数MySQL连接数和QPS7.3 日常监控巡检要点作为运维人员日常巡检时应重点关注以下指标系统层面CPU使用率持续超过80%需要关注内存使用率持续超过90%可能导致OOM磁盘使用率超过85%应考虑清理或扩容服务层面MySQL连接数突增可能表示连接泄漏MySQL QPS异常飙升可能表示攻击或低效查询网络流量异常波动可能表示网络问题或攻击业务层面应用响应时间HTTP错误率关键业务流程指标8. 故障排查与维护8.1 常见问题排查Prometheus启动失败现象Prometheus无法启动或端口未监听排查步骤检查端口是否被占用netstat -tulpn | grep 9090验证配置文件语法promtool check config /path/to/prometheus.yml查看日志定位错误tail -20 /root/prometheus.logGrafana无法访问现象无法访问3000端口或页面加载异常排查步骤检查服务状态systemctl status grafana-server验证端口监听netstat -tulpn | grep 3000查看日志journalctl -u grafana-server -fnode_exporter Target显示DOWN现象Prometheus targets页面显示DOWN排查步骤检查目标节点服务是否运行ps -ef | grep node_exporter验证端口是否监听netstat -tulpn | grep 9100测试网络连通性telnet 目标IP 91008.2 维护建议Prometheus数据保留策略默认情况下Prometheus会保留15天的数据如需调整可以在启动参数中添加--storage.tsdb.retention.time30dGrafana定期备份备份仪表盘配置定期导出JSON文件备份数据库如果使用数据库存储配置监控系统自身监控为Prometheus和Grafana本身设置监控监控监控系统的资源使用情况9. 架构优化与扩展9.1 高可用改进当前架构中Prometheus和Grafana都是单点部署可以考虑以下优化Prometheus高可用部署多个Prometheus实例配置相同的抓取任务使用Grafana聚合多个数据源Grafana高可用部署多个Grafana实例共享同一个数据库使用负载均衡器分发请求长期存储集成VictoriaMetrics或Thanos实现长期存储配置对象存储(S3兼容)作为后端9.2 监控范围扩展除了基础的系统监控还可以扩展以下监控维度应用性能监控(APM)集成Jaeger或SkyWalking追踪ZrLog应用性能监控JVM指标如堆内存、GC情况日志监控部署Loki收集和分析日志设置关键错误日志告警合成监控使用Blackbox Exporter监控网站可用性设置定时探测关键业务接口10. 经验总结与最佳实践在多年的监控系统建设和维护过程中我总结了以下经验教训监控指标选择遵循少而精原则只监控真正关键的指标避免指标爆炸导致重要信号被淹没告警策略优化设置合理的告警阈值避免告警疲劳实现分级告警警告、严重、灾难文档与知识共享为每个监控指标添加说明文档建立监控指标与故障处理方案的映射关系定期评审与优化每季度评审监控指标的有效性根据业务变化调整监控策略容量规划监控监控系统自身的资源使用情况提前规划存储空间和计算资源这套基于PrometheusGrafana的监控方案已经在我们多个生产环境中稳定运行不仅帮助我们发现和解决了许多潜在问题还为容量规划和性能优化提供了数据支持。希望本文的详细指南能够帮助您顺利部署自己的监控系统。

相关推荐

Word中pt单位的本质:从铅字到屏幕的物理尺寸标尺
Word中pt单位的本质:从铅字到屏幕的物理尺寸标尺

1. 为什么“pt”这个单位在Word里总让人摸不着头脑?你是不是也遇到过这种情况:辛辛苦苦调好一段标题的字号,打印出来却发现和屏幕上看到的完全不一样;或者把文档发给同事,对方说“这行距太挤了”,你打开一看… · 2026/11/5 4:30:40

工业机器人遥操作示教技术解析与应用实践
工业机器人遥操作示教技术解析与应用实践

1. 项目概述:当机器人需要"手把手教学"在工业自动化领域,我们经常遇到这样的困境:想让机械臂学会一个新动作,要么需要工程师一行行敲代码,要么就得忍受传统示教器那反人类的按键操作。去年给汽车厂部署焊接机… · 2026/11/5 4:30:40

自动驾驶多圆拟合碰撞检测优化实践
自动驾驶多圆拟合碰撞检测优化实践

1. 项目背景与核心价值在自动驾驶运动规划领域,精确的车辆碰撞检测是实现安全导航的基础前提。传统方法通常采用单一圆形或矩形包络来近似车辆轮廓,但在复杂场景下这种简化会导致明显的安全裕度损失或计算冗余。AL-iLQR(Augmented Lagrangian… · 2026/11/5 4:30:40

如何用AI新闻雷达Horizon打造你的专属信息过滤系统
如何用AI新闻雷达Horizon打造你的专属信息过滤系统

如何用AI新闻雷达Horizon打造你的专属信息过滤系统 【免费下载链接】Horizon 📡 Your own AI-powered news radar. Generates daily briefings in English & Chinese. | 用 AI 构建你专属的新闻雷达 项目地址: https://gitcode.com/GitHub_Trending/horizon39… · 2026/11/5 8:41:27

SuperSplat 新手排错指南:3D Gaussian Splat 编辑器常见 5 类坑一次讲清
SuperSplat 新手排错指南:3D Gaussian Splat 编辑器常见 5 类坑一次讲清

SuperSplat 新手排错指南:3D Gaussian Splat 编辑器常见 5 类坑一次讲清 【免费下载链接】super-splat 3D Gaussian Splat Editor 项目地址: https://gitcode.com/gh_mirrors/su/super-splat 第一次把 SuperSplat 跑起来就卡住了?先别急着怀疑人生… · 2026/11/5 8:41:27

Windows 多出一块虚拟屏:Virtual-Display-Driver 安装与配置实用清单
Windows 多出一块虚拟屏:Virtual-Display-Driver 安装与配置实用清单

Windows 多出一块虚拟屏:Virtual-Display-Driver 安装与配置实用清单 【免费下载链接】Virtual-Display-Driver Add virtual monitors to your windows 10/11 device! Works with VR, OBS, Sunshine, and/or any desktop sharing software. 项目地址: https://git… · 2026/11/5 8:41:27

【亲测免费】 探索PySceneDetect:高效视频剪辑与分割工具
【亲测免费】 探索PySceneDetect:高效视频剪辑与分割工具

探索PySceneDetect:高效视频剪辑与分割工具 【免费下载链接】PySceneDetect :movie_camera: Python and OpenCV-based scene cut/transition detection program & library. 项目地址: https://gitcode.com/GitHub_Trending/py/PySceneDetect 是一个开源的… · 2026/11/5 8:41:27

3分钟给Windows加块虚拟显示器:Virtual-Display-Driver完整上手指南
3分钟给Windows加块虚拟显示器:Virtual-Display-Driver完整上手指南

3分钟给Windows加块虚拟显示器:Virtual-Display-Driver完整上手指南 【免费下载链接】Virtual-Display-Driver Add virtual monitors to your windows 10/11 device! Works with VR, OBS, Sunshine, and/or any desktop sharing software. 项目地址: https://gitc… · 2026/11/5 8:41:27

ADS122U04IPWR+STM32L4R9AI工业温度采集系统实战设计
ADS122U04IPWR+STM32L4R9AI工业温度采集系统实战设计

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 8:40:21

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 3:16:49

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 6:59:29

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 7:02:38

多智能体协作系统架构设计与实践优化
多智能体协作系统架构设计与实践优化

1. 多智能体协作系统的时代背景2017年Transformer架构的诞生彻底改变了人工智能的发展轨迹。当行业还沉浸在单一大模型带来的性能突破时,Anthropic的研究团队已经将目光投向了更前沿的领域——如何让多个智能体通过协作产生超越单体能力的系统智能。这就像交响乐团中… · 2026/11/5 0:00:39

大模型系统性入门实战指南:从原理到部署微调的全链路路线
大模型系统性入门实战指南:从原理到部署微调的全链路路线

提到大模型的系统性入门,我先说个结论:这事真不难,难的是资料太散、路线太多,今天这个框架明天那个工具,新人很容易在“收藏夹吃灰”和“教程看到一半放弃”之间反复横跳。市面上关于大模型的内容少说有几十万篇&#… · 2026/11/5 0:00:39

鸿蒙文件系统沙箱机制解析与开发实践
鸿蒙文件系统沙箱机制解析与开发实践

1. 鸿蒙文件系统沙箱机制深度解析作为一名从Android转向鸿蒙开发的工程师,我深刻体会到文件系统访问是迁移过程中最先遇到的"拦路虎"。在Android上运行良好的文件读写代码,在鸿蒙真机环境却频频出现文件写入后神秘消失或直接抛出权限拒绝错误的… · 2026/11/5 0:00:39

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 3:16:49

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 6:59:29

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 7:02:38

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码