refactor: config/apps 目录重组、文档重构、架构图收窄

- 中央:config/(prometheus,alertmanager,grafana)、apps/(tile-cache,topology-editor)
- 边缘:config/(vmagent,blackbox,targets)、apps/(onvif-exporter)
- env: TRAEFIK_PROVIDER、prometheus/env.example 详细说明
- 文档:README/doc 重构,EDGE_CACHE 合并到 EDGE_AGENT_CONFIG
- targets.csv 更新流程说明,ARCHITECTURE 图收窄

Made-with: Cursor
This commit is contained in:
2026-02-28 22:05:43 -05:00
parent 650e5145f1
commit ab1515dffb
48 changed files with 2071 additions and 509 deletions

View File

@@ -6,7 +6,7 @@
## 告警规则alert_rules.yml
中央已内置 `central-server/alert_rules.yml`,主要包含:
中央已内置 `central-server/config/prometheus/alert_rules.yml`,主要包含:
| 规则 | 条件 | 说明 |
|------|------|------|
@@ -16,13 +16,13 @@
**为何显示 Inactive**:规则依赖边缘推送的指标。需先部署边缘、配置 Ping/ONVIF 目标,数据经 remote_write 到 VictoriaMetrics 后,规则才会评估;无数据时保持 inactive。
**激活步骤**:完成 [README.md#第二步](README.md) 边缘部署 → 在 Grafana 选 VictoriaMetrics 数据源确认有 `probe_success{job="network-ping"}` 等 → Prometheus 会从 VictoriaMetrics 取数并评估规则。
**激活步骤**:完成边缘部署(见 [README](README.md)、[DEPLOYMENT_GUIDE](DEPLOYMENT_GUIDE.md)→ 在 Grafana 选 VictoriaMetrics 数据源确认有 `probe_success{job="network-ping"}` 等 → Prometheus 会从 VictoriaMetrics 取数并评估规则。
---
## Alertmanager 配置alertmanager.yml
路径:`central-server/alertmanager/alertmanager.yml`
路径:`central-server/config/alertmanager/alertmanager.yml`
- **route**分组group_by、等待时间group_wait、重复间隔repeat_interval、默认接收器receiver
- **receivers**:当前示例为 webhook `http://127.0.0.1:5001/`
@@ -37,7 +37,7 @@
## 自定义告警规则
`alert_rules.yml` 中追加或修改规则,例如:
`config/prometheus/alert_rules.yml` 中追加或修改规则,例如:
```yaml
- alert: ExampleAlert

View File

@@ -3,78 +3,22 @@
## 容器关系图
```
┌─────────────────────────────────────────────────────────────────┐
边缘节点 (Edge Agents)
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ Edge Node 1 │ Edge Node 2 │ Edge Node N │ │
│ │ │ │ │ │ │ │
│ │ Prometheus │ │ Prometheus │ │ Prometheus │ │
│ Edge │ │ Edge │ │ Edge │
│ │ │
│ ONVIF │ │ ONVIF │ ONVIF
│ Exporter │ │ Exporter │ │ Exporter │
│ │ │ │ │
│ Blackbox │ │ Blackbox │ │ Blackbox
│ │ Exporter │ │ Exporter │ │ Exporter │ │
└──────┬───────┘ └──────┬───────┘ └──────┬───────┘
│ │ │ │ │
└──────────────────┼──────────────────┘ │
│ │ │
│ remote_write │
│ (HTTP POST) │
└────────────────────────────┼────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────┐
│ 中央服务器 (Central Server) │
│ │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ VictoriaMetrics (8428) │ │
│ │ ┌────────────────────────────────────────────────────┐ │ │
│ │ │ 远程写入接收器 │ │ │
│ │ │ - 接收边缘节点推送的指标数据 │ │ │
│ │ │ - 存储时序数据 │ │ │
│ │ │ - 提供查询接口 │ │ │
│ │ └────────────────────────────────────────────────────┘ │ │
│ └────────────────────┬───────────────────────────────────────┘ │
│ │ │
│ │ 数据查询 │
│ │ │
│ ┌────────────────────▼───────────────────────────────────────┐ │
│ │ Prometheus Central (9091) │ │
│ │ ┌────────────────────────────────────────────────────┐ │ │
│ │ │ 指标收集和查询引擎 │ │ │
│ │ │ - 从 VictoriaMetrics 读取数据 │ │ │
│ │ │ - 抓取本地服务指标 (自身、Grafana、Alertmanager) │ │ │
│ │ │ - 评估告警规则 │ │ │
│ │ │ - 提供 PromQL 查询接口 │ │ │
│ │ └────────────────────────────────────────────────────┘ │ │
│ └────────────┬───────────────────────────┬───────────────────┘ │
│ │ │ │
│ │ 告警触发 │ 数据查询 │
│ │ │ │
│ ┌────────────▼──────────┐ ┌─────────────▼──────────────┐ │
│ │ Alertmanager (9093) │ │ Grafana (3000) │ │
│ │ ┌──────────────────┐ │ │ ┌──────────────────────┐ │ │
│ │ │ 告警管理 │ │ │ │ 可视化仪表板 │ │ │
│ │ │ - 接收告警 │ │ │ │ - 从 Prometheus 查询 │ │ │
│ │ │ - 告警分组 │ │ │ │ - 创建图表和仪表板 │ │ │
│ │ │ - 发送通知 │ │ │ │ - 多用户管理 │ │ │
│ │ │ - 告警抑制 │ │ │ │ - 中文界面 │ │ │
│ │ └──────────────────┘ │ │ └──────────────────────┘ │ │
│ └───────────────────────┘ │ └──────────────────────────┘ │
│ │ │
└──────────────────────────────┼──────────────────────────────────┘
│ HTTP 访问
┌───────────────┼───────────────┐
│ │ │
▼ ▼ ▼
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ 管理员 │ │ 用户组A │ │ 用户组B │
│ (Admin) │ │ (Org A) │ │ (Org B) │
└─────────────┘ └─────────────┘ └─────────────┘
┌─ 边缘节点 (Edge Node 1/2/…/N) ─────────────────┐
vmagent | ONVIF Exporter | Blackbox Exporter
──────────────────────────────────────────────┘
│ remote_write (HTTP POST)
┌─ 中央服务器 ───────────────────────────────────┐
VictoriaMetrics (8428) 接收边缘推送、存储
│ │ 数据查询
Prometheus (9091) 抓取本地、告警评估
├── 告警 ──> Alertmanager (9093)
└── 查询 ──> Grafana (3000)
└──────────────────┬─────────────────────────────┘
HTTP 访问
管理员 / 用户组A / 用户组B
```
## 数据流向
@@ -173,19 +117,11 @@ Alertmanager 处理告警
## 网络关系
```
monitoring_net (Docker Bridge Network)
├─ prometheus-central:9090 (内部)
│ └─> 映射到宿主机:9091
├─ grafana:3000 (内部)
│ └─> 映射到宿主机:3000
├─ alertmanager:9093 (内部)
│ └─> 映射到宿主机:9093
└─ victoria-metrics:8428 (内部)
└─> 映射到宿主机:8428
monitoring_net (Docker Bridge)
├─ prometheus-central:9090 -> 宿主机 9091
├─ grafana:3000 -> 宿主机 3000
├─ alertmanager:9093 -> 宿主机 9093
└─ victoria-metrics:8428 -> 宿主机 8428
```
## 端口映射
@@ -199,25 +135,19 @@ monitoring_net (Docker Bridge Network)
## 数据存储
所有数据存储在 `/storage` 分区:
```
/storage/
central-server/data/
├── prometheus-data/ # Prometheus 时序数据
├── grafana-data/ # Grafana 配置仪表板
── victoria-metrics-data/ # VictoriaMetrics 时序数据
└── docker/ # Docker 数据
├── grafana-data/ # Grafana 配置仪表板
── victoria-metrics-data/ # VictoriaMetrics 时序数据
```
## 依赖关系
```
VictoriaMetrics
↑ (数据查询)
Prometheus
├─> (告警触发) ──> Alertmanager
└─> (数据查询) ──> Grafana
VictoriaMetrics <── Prometheus
├─ 告警 ──> Alertmanager
└─ 查询 ──> Grafana
```
**启动顺序**

View File

@@ -164,11 +164,8 @@ firewall-cmd --reload
```bash
# 备份所有配置文件
tar -czf config-backup-$(date +%Y%m%d).tar.gz \
central-server/*.yml \
central-server/alertmanager/*.yml \
central-server/grafana/provisioning/ \
edge-agent/*.yml \
edge-agent/prometheus-edge/*.yml
central-server/config/ \
edge-agent/config/
```
#### 数据备份

View File

@@ -6,13 +6,14 @@
central-server/
├── docker-compose.yml # 服务编排
├── deploy.sh # 部署脚本
├── prometheus.yml # Prometheus 主配置
├── alert_rules.yml # 告警规则
├── alertmanager/alertmanager.yml
└── grafana/
├── setup-users.sh
├── provisioning/datasources/ # prometheus.yml, victoriametrics.yml
└── dashboards/
├── config/ # 配置目录
│ ├── prometheus/ # Prometheus 配置prometheus.yml、alert_rules.yml
├── alertmanager/ # Alertmanager 配置
└── grafana/ # Grafana 配置provisioning、dashboards
├── apps/ # 自建应用源码
├── tile-cache/ # 天地图瓦片缓存
└── topology-editor/ # GPS 标注助手
└── data/ # 运行时数据gitignore
```
## 主要服务与端口
@@ -26,16 +27,16 @@ central-server/
## 关键配置摘要
- **prometheus.yml**`remote_write` 指向 VictoriaMetrics`rule_files: alert_rules.yml`抓取自身、VM、Alertmanager、Grafana。
- **config/prometheus/prometheus.yml**`remote_write` 指向 VictoriaMetrics`rule_files: alert_rules.yml`抓取自身、VM、Alertmanager、Grafana。
- **告警规则与通知**:见 [ALERTING.md](ALERTING.md)。
- **Grafana 数据源**Provisioning 下配置 Prometheus、VictoriaMetrics查边缘指标请选 **VictoriaMetrics**
- **Grafana Geomap 使用天地图缓存**:在 Geomap 面板中将 Base layer 选为 **XYZ Tile layer**,底图 URL 填 `http://<central>:4090/tiles/vec/{z}/{x}/{y}`,再添加一层 XYZ 填 `http://<central>:4090/tiles/cva/{z}/{x}/{y}`中文注记。key 仅需在 central 配置 `TIANDITU_TK`,无需在 Grafana 中填写。详见 [TIANDITU_CONFIG.md](TIANDITU_CONFIG.md)。
- **多用户**`grafana/setup-users.sh`,见 [USER_MANAGEMENT.md](USER_MANAGEMENT.md)。
- **多用户**`config/grafana/setup-users.sh`,见 [USER_MANAGEMENT.md](USER_MANAGEMENT.md)。
## 修改与重载
- Prometheus`prometheus.yml``alert_rules.yml``docker compose restart prometheus-central`,或 `curl -X POST http://localhost:9091/-/reload`(若启用 lifecycle
- Alertmanager`alertmanager/alertmanager.yml``docker compose restart alertmanager`
- Prometheus`config/prometheus/prometheus.yml``config/prometheus/alert_rules.yml``docker compose restart prometheus-central`,或 `curl -X POST http://localhost:9091/-/reload`(若启用 lifecycle
- Alertmanager`config/alertmanager/alertmanager.yml``docker compose restart alertmanager`
- Grafana改 provisioning 后重启;或通过 Web UI 修改(持久化到库)。
## 相关文档

View File

@@ -1,21 +1,23 @@
# 部署指南
部署顺序**[doc/README.md](README.md)#部署顺序**:中央 → 边缘 → 多用户/告警(可选)。本文为各步操作与验证要点
部署顺序:中央 → 边缘 → 多用户/告警(可选)。详见 [README](README.md)。
---
## 第一步:部署中央服务器
**前置**Docker、Docker Compose端口 3000、9091、8428、9093、4090 未被占用;磁盘充足。
**前置**Docker、Docker Compose端口 3000、9091、8428、9093 未被占用;磁盘充足。
```bash
cd central-server
cp env.example .env # 可选
cp env.example .env # 可选按需改端口、Traefik 等
bash deploy.sh
```
**验证**Grafana http://localhost:3000admin/admin123、Prometheus http://localhost:9091、VictoriaMetrics http://localhost:8428。
**详细**[CENTRAL_SERVER_CONFIG](CENTRAL_SERVER_CONFIG.md)、[central-server/CONFIGURATION.md](../central-server/CONFIGURATION.md)。
---
## 第二步:部署边缘节点
@@ -23,29 +25,31 @@ bash deploy.sh
**前提**中央已运行VictoriaMetrics 8428 可访问。
- **本机同机**`cd edge-agent && bash deploy.sh --local`(中央地址设为 host.docker.internal:8428
- **边缘在另一台机器**
- 在 edge-agent 下 `cp env.example .env`,编辑 `CENTRAL_SERVER_HOST``CENTRAL_SERVER_PORT=8428`
- `bash deploy.sh`(会自动调用 update-configs
- **边缘跨机**`cd edge-agent` → 编辑 `.env``CENTRAL_SERVER_HOST=中央IP``bash deploy.sh`
**验证**:边缘 Prometheus http://localhost:9092(或边缘机 IP:9092;中央 Grafana 选数据源 **VictoriaMetrics**,查询 `probe_success{job="network-ping"}` 可见边缘数据。
**验证**:边缘 http://localhost:9092中央 Grafana 选数据源 **VictoriaMetrics**,查询 `probe_success{job="network-ping"}` 可见边缘数据。
**targets.csv**:部署时自动生成 target-*.json修改 targets.csv 后需手动 `cd config && ./update-configs.sh`vmagent 每 5 分钟自动重载。
**常见问题**
- 看不到边缘数据:确认 `.env` 中为中央 IP host.docker.internal,除非本机同机);从边缘 `curl -s -o /dev/null -w "%{http_code}" http://<中央IP>:8428/health` 应为 200。
- 端口冲突:边缘 Prometheus 已映射 9092避免与中央 9091 冲突
- 看不到边缘数据:确认 `.env` 中为中央 IP跨机不能用 host.docker.internal`curl -s -o /dev/null -w "%{http_code}" http://<中央IP>:8428/health` 应为 200。
- 端口冲突:边缘已映射 9092与中央 9091 区分
**详细**[EDGE_AGENT_CONFIG](EDGE_AGENT_CONFIG.md)、[TARGETS_AND_MONITORING](TARGETS_AND_MONITORING.md)。
---
## 第三步(可选):多用户与告警
- **Grafana 多用户**`cd central-server/grafana && bash setup-users.sh`见 [USER_MANAGEMENT.md](USER_MANAGEMENT.md)。
- **告警**:规则见 [ALERTING.md](ALERTING.md);通知渠道编辑 `central-server/alertmanager/alertmanager.yml`
- **Grafana 多用户**`cd central-server/config/grafana && bash setup-users.sh`,见 [USER_MANAGEMENT](USER_MANAGEMENT.md)。
- **告警**:规则见 [ALERTING](ALERTING.md);通知渠道编辑 `central-server/config/alertmanager/alertmanager.yml`
---
## 部署后检查清单
- **中央**`docker compose ps` 中相关服务 UpGrafana Prometheus 数据源可查 `up`
- **边缘**prometheus-edge、blackbox-exporter UpGrafana 选 VictoriaMetrics 可查 `probe_success{job="network-ping"}` 等。
- **磁盘/端口**端口冲突用 `ss -tulpn` 查;空间不足时清理或扩容数据目录
- **中央**`docker compose ps` 中相关服务 UpGrafana Prometheus 数据源可查 `up`
- **边缘**prometheus-edge、blackbox-exporter UpGrafana 选 VictoriaMetrics 可查 `probe_success{job="network-ping"}`
- **磁盘/端口**`ss -tulpn`端口;空间不足时清理或扩容。
详见 [TROUBLESHOOTING.md](TROUBLESHOOTING.md)、[README.md](README.md)
详见 [TROUBLESHOOTING](TROUBLESHOOTING.md)。

View File

@@ -26,25 +26,27 @@
- **config/targets.csv**统一监控目标ping/onvif/topology格式与脚本见 [TARGETS_AND_MONITORING.md](TARGETS_AND_MONITORING.md)。
- **config/update-configs.sh**:从 targets.csv 生成 `target-onvif.json``target-ping.json``target-topology.geojson`
- **prometheus-edge (vmagent)**:使用 `vmagent-scrape.yml.template` 抓取;`CENTRAL_SERVER_HOST`/`PORT` 来自 `.env`;磁盘缓存卷 `vmagent-cache-data`
- **prometheus-edge (vmagent)**:使用 `config/vmagent/vmagent-scrape.yml.template` 抓取;`CENTRAL_SERVER_HOST`/`PORT` 来自 `.env`;磁盘缓存卷 `vmagent-cache-data`
- **.env**`CENTRAL_SERVER_HOST``CENTRAL_SERVER_PORT=8428``EDGE_NODE_ID`。本机同机用 `./deploy.sh --local`;跨机配 `.env``./deploy.sh`
## 常用操作
- 改监控目标:编辑 `config/targets.csv``cd config && ./update-configs.sh`,必要时重启 prometheus-edge
- 改监控目标:编辑 `config/targets.csv``cd config && ./update-configs.sh`vmagent 每 5 分钟自动重载 JSON无需重启
- 改中央地址:编辑 `.env``docker compose restart prometheus-edge`
## 中心宕机 / 断网时的缓存
`docker-compose.yaml` 使用 vmagent 统一实现:
`docker-compose.yaml` 使用 vmagent 实现:
- **短时内存缓存**:中心短暂不可达时在内存中缓冲
- **长时磁盘缓存**:长时间离线时写入磁盘队列(默认 512MB恢复后自动补传
- **冗余重试**:失败自动重试,边缘重启后从磁盘恢复未上传数据
| 层级 | 机制 | 说明 |
|------|------|------|
| **短时内存缓存** | 内存队列 | 中心短暂不可达时在内存中缓冲(约 30 分钟量级) |
| **长时磁盘缓存** | 持久化队列 | 长时间离线写入磁盘(默认 512MB恢复后自动补传 |
| **冗余重试** | 失败重试 | 边缘重启后从磁盘恢复未上传数据 |
详见 [EDGE_CACHE.md](EDGE_CACHE.md)
**参数**(修改 prometheus-edge 的 `command` 可调):`-remoteWrite.maxDiskUsagePerURL=512MB``-remoteWrite.tmpDataPath=/cache/remotewrite``-memory.allowedPercent=80`。监控指标:`vmagent_remotewrite_pending_bytes``vmagent_remotewrite_packets_dropped_total`
## 相关文档
- [EDGE_CACHE.md](EDGE_CACHE.md) | [DEPLOYMENT_GUIDE.md](DEPLOYMENT_GUIDE.md) | [TARGETS_AND_MONITORING.md](TARGETS_AND_MONITORING.md) | [ONVIF_ALTERNATIVES.md](ONVIF_ALTERNATIVES.md) | [ARCHITECTURE.md](ARCHITECTURE.md)
- [DEPLOYMENT_GUIDE](DEPLOYMENT_GUIDE.md) | [TARGETS_AND_MONITORING](TARGETS_AND_MONITORING.md) | [ONVIF_ALTERNATIVES](ONVIF_ALTERNATIVES.md) | [ARCHITECTURE](ARCHITECTURE.md)

View File

@@ -1,34 +0,0 @@
# 边缘节点缓存
## 架构
`docker-compose.yaml` 使用 **vmagent** 统一实现:
| 层级 | 机制 | 说明 |
|------|------|------|
| **短时内存缓存** | 内存队列 | 中心短暂不可达时在内存中缓冲(~30 分钟量级) |
| **长时磁盘缓存** | 持久化队列 | 长时间离线时写入磁盘(默认 512MB恢复后自动补传 |
| **冗余重试** | 失败重试 | 自动重试,边缘重启后从磁盘恢复未上传数据 |
## 部署
```bash
cd edge-agent
bash deploy.sh
# 本机同机: bash deploy.sh --local
```
## 配置
| 参数 | 默认值 | 说明 |
|------|--------|------|
| `-remoteWrite.maxDiskUsagePerURL` | 512MB | 每 URL 最大磁盘缓存 |
| `-remoteWrite.tmpDataPath` | /cache/remotewrite | 磁盘队列路径 |
| `-memory.allowedPercent` | 80 | 内存队列可用比例 |
修改 `docker-compose.yaml``prometheus-edge``command` 可调整上述参数。
## 监控
- `vmagent_remotewrite_pending_bytes`:待发送字节数
- `vmagent_remotewrite_packets_dropped_total`:丢包数

View File

@@ -11,7 +11,7 @@
| **SNMP Exporter** | 摄像头/设备支持 SNMP | 用官方 `prom/snmp_exporter`,按设备 MIB 配置 OID无 ONVIF 协议 |
| **Frigate** | 已用或可部署 Frigate NVR | Frigate 暴露 `/api/metrics`Prometheus 直接抓取或通过 frigate-exporter |
| **UniFi Protect Exporter** | UniFi 摄像头/Protect | 使用专有 exporter非 ONVIF 通用方案 |
| **ONVIF 自建** | 必须用 ONVIF 协议 | **本项目已提供**:见 **edge-agent/onvif-exporter/**Go + use-go/onvif读取 `onvif-targets.json`GetDeviceInformation 探测,暴露 `onvif_device_up``onvif_probe_duration_seconds``docker compose --profile onvif up -d --build` 即可。 |
| **ONVIF 自建** | 必须用 ONVIF 协议 | **本项目已提供**:见 **edge-agent/apps/onvif-exporter/**Go + use-go/onvif读取 `target-onvif.json`GetDeviceInformation 探测,暴露 `onvif_device_up``onvif_probe_duration_seconds``docker compose --profile onvif up -d --build` 即可。 |
| **仅 Ping/HTTP 探测** | 只关心在线与可达性 | 用 Blackbox Exporter 对摄像头 IP 做 ICMP/HTTP 探测,不解析 ONVIF |
---
@@ -63,19 +63,19 @@
## 4. ONVIF 自建 Exporter必须走 ONVIF 时)
**本项目已在 edge-agent/onvif-exporter/ 提供自建容器**,无需再找第三方镜像。
**本项目已在 edge-agent/apps/onvif-exporter/ 提供自建容器**,无需再找第三方镜像。
- **实现**Go + [use-go/onvif](https://github.com/use-go/onvif),读取 `config/target-onvif.json`(与 `targets.csv` 中 onvif 行一致),轮询 ONVIF `GetDeviceInformation`,暴露 Prometheus 指标 `onvif_device_up`、`onvif_probe_duration_seconds`。
- **启用**:在边缘节点执行 `docker compose --profile onvif up -d --build`,会构建并启动 ONVIF exporter无需设置 `ONVIF_EXPORTER_IMAGE`。
- **配置**:在 `config/targets.csv` 中增加 onvif 行ip、device_type、model、location、username、password、onvif_port运行 `config/update-configs.sh` 生成 `target-onvif.json`。
- 若需自行修改或扩展,见 **edge-agent/onvif-exporter/README.md**。
- 若需自行修改或扩展,见 **edge-agent/apps/onvif-exporter/README.md**。
---
## 在本项目中的建议
- **边缘默认部署**:不依赖不存在的 ONVIF 镜像;默认只跑 **prometheus-edge** + **blackbox-exporter**Ping/探测),可选用 **snmp-exporter** 或 Frigate 抓取。
- **若需要 ONVIF**:使用本项目自建的 **edge-agent/onvif-exporter**,执行 `docker compose --profile onvif up -d --build` 即可构建并启动;无需再设 `ONVIF_EXPORTER_IMAGE`。
- **若需要 ONVIF**:使用本项目自建的 **edge-agent/apps/onvif-exporter**,执行 `docker compose --profile onvif up -d --build` 即可构建并启动;无需再设 `ONVIF_EXPORTER_IMAGE`。
- **摄像头支持 SNMP 时**:优先考虑 **SNMP Exporter** 作为“Prometheus 监控摄像头”的替代方案,再根据需要补充 Frigate 或 Blackbox。
具体边缘配置与 compose 变更见 **[EDGE_AGENT_CONFIG.md](EDGE_AGENT_CONFIG.md)** 及 `edge-agent/docker-compose.yaml`。

View File

@@ -1,112 +1,63 @@
# Distributed-Prometheus 文档
# 文档索引
本目录为项目文档入口。**先按部署顺序做完第一步、第二步,再按需查阅其他文档。**
本目录为项目文档入口。**首次部署**按「部署顺序」先中央、后边缘;**修改配置**按需查阅对应文档。
---
## 部署顺序(必读)
## 部署顺序
整体顺序:**先中央,后边缘**。边缘向中央主动上报数据,中央必须先就绪。
| 步骤 | 操作 | 验证 |
|------|------|------|
| **1. 中央** | `cd central-server && cp env.example .env && bash deploy.sh` | Grafana http://localhost:3000、Prometheus http://localhost:9091 |
| **2. 边缘** | `cd edge-agent && bash deploy.sh`(本机同机加 `--local` | 边缘 http://localhost:9092Grafana 选 VictoriaMetrics 可见 `probe_success{job="network-ping"}` |
| **3. 可选** | 多用户、告警通知 | [USER_MANAGEMENT](USER_MANAGEMENT.md)、[ALERTING](ALERTING.md) |
| 步骤 | 部署 / 操作对象 | 做什么 | 验证 |
|------|------------------|--------|------|
| **第一步** | 中央服务器 | 部署 Prometheus、Grafana、VictoriaMetrics、Alertmanager | Grafana http://localhost:3000、Prometheus http://localhost:9091 |
| **第二步** | 边缘节点(可选,可多台) | 配置中央地址与监控目标,部署边缘 Prometheus + Exporter | 边缘 UI http://localhost:9092Grafana 选 VictoriaMetrics 数据源可见边缘数据 |
| **第三步** | 多用户 / 告警(可选) | 配置 Grafana 组织与用户、Alertmanager 通知 | 按 [USER_MANAGEMENT.md](USER_MANAGEMENT.md)、[ALERTING.md](ALERTING.md) 验证 |
**边缘跨机**:编辑 `edge-agent/.env``CENTRAL_SERVER_HOST` 为中央 IP`bash deploy.sh`
**targets.csv**:部署时自动从 targets.csv 生成 target-onvif.json、target-ping.json修改 targets.csv 后需手动 `cd config && ./update-configs.sh`vmagent 每 5 分钟自动重载。
---
### 第一步:部署中央服务器
**必须先做**。中央提供 VictoriaMetrics接收边缘数据、Prometheus、Grafana、Alertmanager。
```bash
cd central-server
cp env.example .env # 可选按需改端口、Traefik、网络等
bash deploy.sh
```
- **前置**:已安装 Docker、Docker Compose端口 3000、9091、8428、9093 未被占用。
- **验证**:访问 http://localhost:3000Grafanaadmin/admin123、http://localhost:9091Prometheus
- **详细**[DEPLOYMENT_GUIDE.md](DEPLOYMENT_GUIDE.md)、[CENTRAL_SERVER_CONFIG.md](CENTRAL_SERVER_CONFIG.md)、[central-server/CONFIGURATION.md](../central-server/CONFIGURATION.md)。
---
### 第二步:部署边缘节点
**在中央已运行后**进行。边缘将指标推送到中央 VictoriaMetrics端口 8428
边缘必选:**remote_write**prometheus-edge、**Blackbox** 容器可选ONVIF/SNMP 等容器(见 [EDGE_AGENT_CONFIG.md](EDGE_AGENT_CONFIG.md))。
- **本机同机**(中央与边缘在同一台机器):
```bash
cd edge-agent
bash deploy.sh --local
```
脚本会设置中央地址为 `host.docker.internal:8428` 并执行部署。
- **边缘在另一台机器**
```bash
cd edge-agent
cp env.example .env
# 编辑 .envCENTRAL_SERVER_HOST=中央服务器IPCENTRAL_SERVER_PORT=8428
cd config && ./update-configs.sh && cd .. # 从 targets.csv 生成 JSON
bash deploy.sh
```
- **验证**:边缘 Prometheus UI http://localhost:9092端口 9092 避免与中央 9091 冲突)。在中央 Grafana 中**选择数据源「VictoriaMetrics」**,查询如 `up{job="network-ping"}` 可见边缘数据中央自身指标在数据源「Prometheus」。
- **摄像头/ONVIF**:默认不拉取 ONVIF 镜像(公共镜像不存在)。监控摄像头可选:**SNMP Exporter**、**Frigate**、**Blackbox 探测** 或自建 ONVIF 镜像,见 **[ONVIF_ALTERNATIVES.md](ONVIF_ALTERNATIVES.md)**。
- **监控目标**:编辑 `edge-agent/config/targets.csv`Ping / ONVIF / 拓扑),详见 [TARGETS_AND_MONITORING.md](TARGETS_AND_MONITORING.md)。
- **详细**[EDGE_AGENT_CONFIG.md](EDGE_AGENT_CONFIG.md)、[DEPLOYMENT_GUIDE.md](DEPLOYMENT_GUIDE.md)。
---
### 第三步(可选):多用户与告警
- **Grafana 多用户**`cd central-server/grafana && bash setup-users.sh`,然后按 [USER_MANAGEMENT.md](USER_MANAGEMENT.md) 配置组织与数据源。
- **告警通知**:编辑 `central-server/alertmanager/alertmanager.yml` 配置接收端;告警规则与说明见 [ALERTING.md](ALERTING.md)。
---
## 文档列表(按用途)
## 文档列表
### 架构与数据流
| 文档 | 说明 |
|------|------|
| [ARCHITECTURE.md](ARCHITECTURE.md) | 系统架构、容器关系、数据流向、端口与依赖 |
| [ARCHITECTURE](ARCHITECTURE.md) | 容器关系、数据流向、端口与依赖 |
### 配置说明
### 中央节点
| 文档 | 说明 |
|------|------|
| [CENTRAL_SERVER_CONFIG.md](CENTRAL_SERVER_CONFIG.md) | 中央服务器配置文件说明 |
| [../central-server/CONFIGURATION.md](../central-server/CONFIGURATION.md) | 中央服务器环境变量(.env说明 |
| [EDGE_AGENT_CONFIG.md](EDGE_AGENT_CONFIG.md) | 边缘节点配置文件说明 |
| [TARGETS_AND_MONITORING.md](TARGETS_AND_MONITORING.md) | 监控目标与 targets.csv格式、脚本、数据流 |
| [TIANDITU_CONFIG.md](TIANDITU_CONFIG.md) | 天地图配置(底图 vec_w、标识图 cva_w、WMTS 地址) |
| [ONVIF_ALTERNATIVES.md](ONVIF_ALTERNATIVES.md) | **摄像头/ONVIF 监控替代方案**SNMP、Frigate、Blackbox、自建 |
| [CENTRAL_SERVER_CONFIG](CENTRAL_SERVER_CONFIG.md) | 中央目录结构、服务端口、关键配置 |
| [../central-server/CONFIGURATION.md](../central-server/CONFIGURATION.md) | 中央环境变量(.env说明 |
### 用户与告警
### 边缘节点
| 文档 | 说明 |
|------|------|
| [USER_MANAGEMENT.md](USER_MANAGEMENT.md) | Grafana 多用户、组织与数据隔离 |
| [ALERTING.md](ALERTING.md) | 告警规则、Alertmanager 配置与通知渠道 |
| [EDGE_AGENT_CONFIG](EDGE_AGENT_CONFIG.md) | 边缘目录结构、vmagent、blackbox、缓存机制 |
| [TARGETS_AND_MONITORING](TARGETS_AND_MONITORING.md) | targets.csv 格式、update-configs.sh、监控类型 |
### 部署与运维
### 告警与多用户
| 文档 | 说明 |
|------|------|
| [DEPLOYMENT_GUIDE.md](DEPLOYMENT_GUIDE.md) | 完整部署步骤、检查清单、验证与常见问题 |
| [TROUBLESHOOTING.md](TROUBLESHOOTING.md) | 故障排查 |
| [BEST_PRACTICES.md](BEST_PRACTICES.md) | 最佳实践与生产环境建议 |
| [ALERTING](ALERTING.md) | 告警规则、Alertmanager 配置、通知渠道 |
| [USER_MANAGEMENT](USER_MANAGEMENT.md) | Grafana 多用户、组织与数据隔离 |
---
### 扩展功能
## 快速导航
| 文档 | 说明 |
|------|------|
| [ONVIF_ALTERNATIVES](ONVIF_ALTERNATIVES.md) | ONVIF 摄像头监控方案SNMP、Frigate、Blackbox、自建 |
| [TIANDITU_CONFIG](TIANDITU_CONFIG.md) | 天地图底图、Grafana Geomap、tile-cache |
- **第一次部署**:按上面「部署顺序」先做第一步,再做第二步。
- **只改中央配置**:看 [CENTRAL_SERVER_CONFIG.md](CENTRAL_SERVER_CONFIG.md)、[CONFIGURATION.md](../central-server/CONFIGURATION.md)。
- **只改边缘 / 监控目标**:看 [EDGE_AGENT_CONFIG.md](EDGE_AGENT_CONFIG.md)、[TARGETS_AND_MONITORING.md](TARGETS_AND_MONITORING.md)。
- **多用户 / 告警**:看 [USER_MANAGEMENT.md](USER_MANAGEMENT.md)、[ALERTING.md](ALERTING.md)。
- **出问题**:看 [TROUBLESHOOTING.md](TROUBLESHOOTING.md)、[DEPLOYMENT_GUIDE.md](DEPLOYMENT_GUIDE.md)
### 运维
| 文档 | 说明 |
|------|------|
| [DEPLOYMENT_GUIDE](DEPLOYMENT_GUIDE.md) | 完整部署步骤、检查清单、常见问题 |
| [TROUBLESHOOTING](TROUBLESHOOTING.md) | 故障排查 |
| [BEST_PRACTICES](BEST_PRACTICES.md) | 最佳实践与生产建议 |

View File

@@ -2,6 +2,8 @@
边缘监控目标统一由 `edge-agent/config/targets.csv` 配置,经 `update-configs.sh` 生成 `target-onvif.json``target-ping.json``target-topology.geojson`
**更新流程**:部署时 deploy.sh 自动从 targets.csv 生成 target-*.json修改 targets.csv 后需手动执行 `cd edge-agent/config && ./update-configs.sh`vmagent 每 5 分钟自动重载 JSON无需重启。
---
## targets.csv 格式

View File

@@ -116,10 +116,10 @@ docker compose logs prometheus-edge
# 查询: probe_success{job="network-ping"}
# 2. 检查告警规则文件
cat central-server/alert_rules.yml
cat central-server/config/prometheus/alert_rules.yml
# 3. 检查 Prometheus 配置
cat central-server/prometheus.yml
cat central-server/config/prometheus/prometheus.yml
```
**常见原因**
@@ -130,7 +130,7 @@ cat central-server/prometheus.yml
**解决方案**
- 部署边缘节点并配置监控目标
- 检查告警规则表达式
- 确认 `prometheus.yml` 中引用了 `alert_rules.yml`
- 确认 `config/prometheus/prometheus.yml` 中引用了 `alert_rules.yml`
- 重启 Prometheus 容器
---
@@ -374,7 +374,7 @@ ls -lh /storage/prometheus-data
ls -lh /storage/victoria-metrics-data
# 检查数据保留配置
grep retention prometheus.yml
grep retention config/prometheus/prometheus.yml
```
**解决**