# monitor-service **Repository Path**: ddzx-tech/monitor-service ## Basic Information - **Project Name**: monitor-service - **Description**: 大道服务监控平台 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-08-11 - **Last Updated**: 2026-08-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 大道监控服务 (monitor-service) 大道数仓 & ERP 全链路监控栈的**配置即代码**仓库。用于备份、版本管理和**一键迁移**——万一监控服务器丢失,可在任意新服务器几分钟内重建。 当前部署位置:综合应用服务器 `149`,目录 `/opt/monitoring`,域名 `monitor.dadaoyinqing.com`。 ## 组件 | 组件 | 端口 | 作用 | |------|------|------| | Grafana | 38001 | 告警面板 + 邮件/飞书通知 | | Prometheus | 38002 | 指标采集与告警评估 | | blackbox-exporter | 38003 | HTTP/TCP 存活探测 | | node-exporter | 38004 | 各服务器 CPU/内存/磁盘 | | feishu-bridge | 38007 | Grafana Webhook → 飞书卡片(Python 常驻) | ## 告警分流策略 - **服务探测失败**(HTTP/TCP 不可达)→ **邮件**(`for: 1m`,及时) - **CPU / 内存 / 磁盘超阈值** → **飞书**(`for: 5m/20m`,避免频繁打扰) 分流由 Grafana 通知策略按标签 `channel="email"` / `channel="feishu"` 完成。 ## 目录结构 ``` . ├── docker-compose.yml # 监控栈(相对路径挂载,clone 即可用) ├── deploy.sh # 一键部署脚本 ├── prometheus.yml # 采集目标(各服务器 IP、探测 URL) ├── alert-rules.yml # Prometheus 告警规则(CPU/内存/磁盘/服务) ├── blackbox.yml # 探测模块定义 ├── feishu-bridge.py # 飞书转发脚本 ├── feishu-bridge.service # systemd 单元模板(deploy.sh 会按实际路径重写) ├── email-templates/ │ └── ng_alert_notification.html # 自定义邮件 HTML 模板 └── grafana-provisioning/ # Grafana 配置即代码(全新环境自动加载) ├── datasources/datasource.yaml # Prometheus 数据源(uid 固定,与告警规则匹配) └── alerting/ ├── rules.yaml # 告警规则 ├── contactpoints.yaml # 联络点(邮箱列表 + 飞书 webhook) └── policies.yaml # 通知策略(邮件/飞书分流) ``` ## 一键迁移到新服务器 ```bash # 1. 克隆仓库 git clone git@gitee.com:ddzx-tech/monitor-service.git cd monitor-service # 2. 按需修改配置(见下方「迁移前必改」) # 3. 一键部署 bash deploy.sh ``` `deploy.sh` 会:启动 docker compose → 安装并启动 feishu-bridge systemd 服务(路径自动指向克隆位置)。 Grafana 首次启动时通过 `grafana-provisioning` 自动导入**数据源 + 告警规则 + 联络点 + 通知策略**,无需手工在界面配置。 ## 迁移前必改 | 文件 | 需检查/修改项 | |------|--------------| | `prometheus.yml` | 采集目标 IP(各服务器 node-exporter、探测 URL)。`localhost:38004` 指新监控机自身 | | `docker-compose.yml` | `GF_SECURITY_ADMIN_PASSWORD`(Grafana 管理员密码);`GF_SMTP_*`(QQ 邮箱账号 + 授权码) | | `grafana-provisioning/alerting/contactpoints.yaml` | 邮件收件人列表 `addresses`;飞书 webhook 走 `http://localhost:38007`(本机桥接,通常无需改) | | `feishu-bridge.py` | `FEISHU_WEBHOOK` 飞书机器人地址 | | `grafana-provisioning/datasources/datasource.yaml` | `url` 指向 Prometheus(默认 `http://localhost:38002`) | > `datasource.yaml` 的 `uid: afs97ce7d2rcwa` 与 `alerting/rules.yaml` 中的 `datasourceUid` 一致,**不要改动 uid**,否则告警规则找不到数据源。 ## Nginx 反代(可选,域名访问) `monitor.dadaoyinqing.com` 由 Nginx(190) 反代到监控机 38001。迁移后在 Nginx 上把 upstream 指向新监控机 IP:38001,并配置 SSL 证书。 ## 敏感信息说明 本仓库为内部私有仓库,含 QQ 邮箱授权码、飞书 webhook、Grafana 密码等。**禁止公开**。轮换凭证时同步更新对应文件并重新部署。 ## 邮件模板改动 `email-templates/ng_alert_notification.html` 覆盖 Grafana 默认模板,采用**单文件挂载**(不能挂整个目录,否则会遮蔽 Grafana 其它默认模板导致邮件发送失败)。改动后 `docker compose restart grafana` 生效。