尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
基于Prometheus的企业网站自动化监控方案
1. 项目概述在企业IT运维工作中网站可用性监控是保障业务连续性的基础环节。传统的人工巡检方式效率低下而市面上的SaaS监控服务又往往存在价格昂贵、数据隐私等问题。本文将分享一套基于开源工具Prometheus的网站监控方案实现从探测到告警的全自动化流程特别适合中小型技术团队使用。这套方案的核心价值在于完全自主可控所有组件均可部署在内网环境支持同时监控数百个网站/API接口告警信息直接推送到企业微信群确保及时响应提供从部署到维护的完整工具链2. 架构设计解析2.1 技术选型理由选择Prometheus生态链主要基于以下考量Blackbox Exporter专为黑盒监控设计的探针支持HTTP/HTTPS/TCP等多种协议内置丰富的指标采集能力。相比自写爬虫脚本它具有以下优势内置重试机制和超时控制自动记录SSL证书信息提供响应时间直方图数据Alertmanager作为告警中枢支持多级告警路由区分严重/普通事件告警聚合与抑制多种通知渠道集成企业微信机器人选择企业微信而非其他IM工具的原因是国内访问稳定可靠支持Markdown格式消息可特定成员或全体人员2.2 数据流向说明整个监控流程的数据流转如下图所示[网站集群] │ ↓ (HTTP探测) [Blackbox Exporter] → 生成指标(probe_success, probe_duration等) │ ↓ (抓取) [Prometheus] → 评估告警规则 │ ↓ (推送告警) [Alertmanager] → 渲染消息模板 │ ↓ (Webhook) [企业微信机器人]3. 环境部署详解3.1 目录结构规划建议采用以下目录规范便于后期维护website-monitoring/ ├── bin/ # 二进制文件 ├── config/ # 配置文件 │ ├── alert_rules.yml │ ├── alertmanager.yml │ ├── blackbox.yml │ └── prometheus.yml ├── data/ # 数据存储 ├── logs/ # 日志文件 ├── templates/ # 消息模板 └── scripts/ # 维护脚本3.2 组件安装指南获取最新稳定版组件的推荐方法# 使用GitHub API获取最新版本号 get_latest_release() { curl -s https://api.github.com/repos/$1/releases/latest | grep tag_name: | sed -E s/.*([^]).*/\1/ } BLACKBOX_VER$(get_latest_release prometheus/blackbox_exporter) PROM_VER$(get_latest_release prometheus/prometheus) ALERT_VER$(get_latest_release prometheus/alertmanager) # 下载并解压到bin目录 wget -qO- https://github.com/prometheus/blackbox_exporter/releases/download/${BLACKBOX_VER}/blackbox_exporter-${BLACKBOX_VER:1}.linux-amd64.tar.gz | tar xz -C bin --strip-components1 --wildcards */blackbox_exporter注意生产环境建议固定版本号而非使用latest避免自动升级导致兼容性问题4. 配置深度解析4.1 Blackbox高级配置在blackbox.yml中我们可以针对不同网站类型设置差异化探测参数modules: ecommerce_healthcheck: prober: http timeout: 15s http: method: POST headers: Content-Type: application/json body: {action: healthcheck} fail_if_body_not_matches_regexp: - status:ok tls_config: insecure_skip_verify: false server_name: shop.example.com api_endpoint: prober: http http: valid_status_codes: [200, 401] # 允许未授权状态 fail_if_ssl: false # 允许HTTP协议关键参数说明fail_if_body_not_matches_regexp验证响应内容server_name指定TLS SNIfail_if_ssl强制HTTPS检查4.2 Prometheus告警规则优化精细化告警规则示例- alert: APISLAViolation expr: | ( avg_over_time(probe_duration_seconds{jobwebsite_availability}[5m]) 1.5 and rate(probe_failed_due_to_regex{jobwebsite_availability}[5m]) 0 ) or ( probe_http_status_code{jobwebsite_availability} 500 and probe_success 1 ) for: 5m labels: severity: warning annotations: impact: API响应时间超过SLA阈值或出现5xx错误这个规则实现了5分钟内平均响应时间1.5秒且无正则匹配失败或服务器返回5xx状态码但探测本身成功5. 企业微信集成实战5.1 机器人创建步骤在企业微信PC端右键点击目标群 → 选择「添加群机器人」设置机器人名称如「网站监控助手」记录生成的Webhook URL建议创建两个机器人常规告警用于性能劣化等普通事件关键告警配置all通知仅用于完全不可用场景5.2 消息模板进阶技巧改进后的消息模板wechat.tmpl{{ define wechat.message }} {{ range .Alerts }} {{ if eq .Status firing }} [{{ .Labels.severity | upper }}] {{ .Annotations.summary }} {{ .StartsAt.Format 15:04:05 }} 触发 {{ if eq .Labels.severity critical }}all{{ end }} {{ if .Annotations.description }} {{ .Annotations.description }}{{ end }} {{ if .Annotations.runbook }} 应急手册: {{ .Annotations.runbook }}{{ end }} ━━━━━━━━━━━━ {{ else }} ✅ [恢复] {{ .Annotations.summary }} ⏱ 故障时长: {{ humanizeDuration .Duration }} {{ .EndsAt.Format 15:04:05 }} 恢复 ━━━━━━━━━━━━ {{ end }} {{ end }} {{ end }}特色功能根据严重程度自动相关人员支持关联应急手册链接精简显示格式提高移动端可读性6. 运维管理脚本集6.1 网站批量管理工具扩展add-website.sh支持CSV文件批量导入#!/bin/bash # 单网站添加模式 if [ $# -eq 1 ]; then URL$1 # ...原有逻辑... elif [ -f $1 ]; then # CSV批量导入模式 CSV_FILE$1 TOTAL0 SUCCESS0 while IFS, read -r url module; do if grep -q $url $CONFIG; then echo 跳过已存在: $url continue fi # 在对应job下添加target sed -i /job_name: $module/,/- targets:/s/- targets:.*/\n - $url/ $CONFIG ((SUCCESS)) ((TOTAL)) done (tail -n 2 $CSV_FILE) # 跳过CSV头行 echo 批量导入完成: $SUCCESS/$TOTAL curl -X POST http://localhost:9090/-/reload fiCSV格式示例url,module https://api1.example.com,website_availability https://shop.example.com,ecommerce_healthcheck7. 性能调优指南7.1 大规模部署建议当监控目标超过100个时建议分片部署Blackbox# prometheus.yml - job_name: blackbox_asia static_configs: - targets: [blackbox-asia:9115] - job_name: blackbox_eu static_configs: - targets: [blackbox-eu:9115]调整Prometheus参数# 启动参数 --storage.tsdb.retention.time7d \ --query.max-concurrency20 \ --web.max-connections50优化抓取配置scrape_configs: - job_name: high_freq scrape_interval: 15s scrape_timeout: 10s static_configs: [...] - job_name: low_freq scrape_interval: 60s static_configs: [...]8. 故障排查手册8.1 常见问题诊断表现象检查步骤解决方案所有网站显示不可达1. 检查Blackbox日志2. 测试curl localhost:9115/metrics3. 验证网络连通性1. 重启Blackbox2. 检查防火墙规则3. 验证DNS配置告警重复发送1. 检查Alertmanager日志2. 验证group_interval设置3. 查看告警历史1. 调整repeat_interval2. 配置抑制规则企业微信消息格式错乱1. 检查模板语法2. 测试简单消息3. 验证Markdown格式1. 转义特殊字符2. 简化模板内容8.2 日志分析技巧通过PromQL快速定位问题# 查找响应最慢的10个网站 topk(10, avg_over_time(probe_duration_seconds[1h]) ) # 统计各状态码出现次数 count by (probe_http_status_code) ( probe_http_status_code{jobwebsite_availability} ) # 检测证书过期情况 (probe_ssl_earliest_cert_expiry - time()) / 86400 309. 方案扩展方向9.1 与Grafana集成推荐仪表盘配置全局状态看板各区域可用率地图响应时间热力图最近告警事件流单站详情页可用性趋势图状态码分布饼图证书有效期倒计时9.2 多维度监控增强前端性能指标modules: web_perf: prober: http http: preferred_ip_protocol: ip4 fail_if_body_not_matches_regexp: - window.performance.timing.loadEventEndAPI功能测试modules: payment_api: prober: http http: method: POST headers: Authorization: Bearer ${API_KEY} body: {amount: 1, currency: CNY} valid_status_codes: [200] fail_if_not_matches_regexp: - status:success这套监控方案经过多个生产环境验证在日均百万级探测请求下仍能稳定运行。关键在于根据实际业务需求灵活调整配置并建立完善的告警分级机制。对于需要更高可用性的场景可以考虑部署Prometheus高可用集群和Alertmanager集群模式。
RELATED

相关推荐

电商履约系统架构设计与高并发优化实践

电商履约系统架构设计与高并发优化实践

1. 项目概述 在电商行业摸爬滚打多年,我深刻体会到履约系统才是真正考验技术团队功力的战场。商品从下单到交付用户手中,看似简单的流程背后隐藏着数十个关键环节和上百个技术决策点。今天我就以一线开发者的视角,带大家完整拆解这个"黑…

📅 2026/11/6 7:58:39
提升管理水平必看的员工管理书籍推荐

提升管理水平必看的员工管理书籍推荐

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

📅 2026/11/6 7:53:38
电商高并发必备:Redis 缓存穿透、击穿、雪崩防御方案

电商高并发必备:Redis 缓存穿透、击穿、雪崩防御方案

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

📅 2026/11/6 7:53:38
MORE NEWS

更多资讯

📰

ticket-purchase 零基础上手:大麦自动抢票从选城市场次到提交订单的完整链路

ticket-purchase 零基础上手:大麦自动抢票从选城市场次到提交订单的完整链路 【免费下载链接】ticket-purchase 大麦自动抢票,支持人员、城市、日期场次、价格选择 项目地址: https://gitcode.com/GitHub_Trending/ti/ticket-purchase ticket-pur…

📰

Folia 全屏歌词播放器怎么安装?新手一次装对,从下载到首次播放

Folia 全屏歌词播放器怎么安装?新手一次装对,从下载到首次播放 【免费下载链接】folia-major 专注于绚丽的歌词动画效果的本地音乐/navidrome/第三方多平台在线音乐播放器 A multi-platform music player for local files, Navidrome, and online stream…

📰

懂个锤子Vue VueRouter路由深入浅出

VueRouter路由深入浅出 VueRouter 介绍: Vue Router 是 Vue.js官方的路由管理器: 极大地简化了在 单页面应用程序 SPA-Single Page Application: 中构建导航和页面切换的复杂性; 单页面应用程序 SPA 单页面应用程序SPA&#…

📰

三步装完并跑通你的第一个 AI Agent:Hugging Face Agents Course 完整安装指南

三步装完并跑通你的第一个 AI Agent:Hugging Face Agents Course 完整安装指南 【免费下载链接】agents-course This repository contains the Hugging Face Agents Course. 项目地址: https://gitcode.com/GitHub_Trending/ag/agents-course Hugging Face …

📰

如何给 macOS 应用接入自动更新:Sparkle 完整集成与避坑指南

如何给 macOS 应用接入自动更新:Sparkle 完整集成与避坑指南 【免费下载链接】Sparkle A software update framework for macOS 项目地址: https://gitcode.com/gh_mirrors/sp/Sparkle Sparkle 是 macOS 平台广泛使用的开源自动更新框架:负责检查…

📰

技术写作的伦理边界与内容安全准则

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

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬