# Ours RP Prometheus / Grafana Monitor 本目录提供本地开发监控栈,用于采集 `rpki_artifact_metrics` 暴露的 ours RP soak 指标。 ## 前置条件 1. Docker + Docker Compose v2; 2. 宿主机已启动 `rpki_artifact_metrics`,并监听 Docker 网桥可访问的地址,例如 `0.0.0.0:9556`; 3. Prometheus 容器通过 `host.docker.internal:9556` 访问宿主 sidecar。 Linux Docker 下 compose 已配置: ```yaml extra_hosts: - host.docker.internal:host-gateway ``` ## 启动 ```bash cd rpki_2/rpki/monitor docker compose up -d ``` 默认镜像使用官方 Docker Hub 镜像: ```text prom/prometheus:v2.55.1 grafana/grafana:11.3.1 ``` 如需切到其它镜像源: ```bash PROMETHEUS_IMAGE=/prom/prometheus:v2.55.1 \ GRAFANA_IMAGE=/grafana/grafana:11.3.1 \ docker compose up -d ``` 默认端口: - Prometheus: - Grafana: - Grafana 默认账号密码:`admin` / `admin` 如端口冲突: ```bash PROMETHEUS_PORT=19090 GRAFANA_PORT=13000 docker compose up -d ``` ## 停止 ```bash cd rpki_2/rpki/monitor docker compose down ``` 保留数据 volume。若要清理数据: ```bash docker compose down -v ``` ## 典型本地联调命令 先启动 APNIC soak 和 metrics sidecar,例如: ```bash # soak .env 关键配置 MAX_RUNS=-1 RIRS=apnic RETAIN_RUNS=5 INTERVAL_SECS=0 # metrics sidecar rpki_artifact_metrics \ --run-root /path/to/portable-soak \ --listen 0.0.0.0:9556 \ --poll-secs 5 \ --instance local-apnic-continuous ``` 再启动监控栈: ```bash cd rpki_2/rpki/monitor docker compose up -d ``` ## 验证 Prometheus target: ```bash curl -s 'http://localhost:9090/api/v1/targets' | python3 -m json.tool ``` Prometheus query: ```bash curl -G 'http://localhost:9090/api/v1/query' \ --data-urlencode 'query=up{job="ours-rp-artifact-metrics"}' curl -G 'http://localhost:9090/api/v1/query' \ --data-urlencode 'query=ours_rp_run_completed_total{status="success"}' ``` Grafana health: ```bash curl -s http://localhost:3000/api/health | python3 -m json.tool ``` Grafana dashboard: - 打开 ## 主要指标 - `ours_rp_metrics_service_up` - `ours_rp_run_completed_total` - `ours_rp_run_duration_seconds` - `ours_rp_run_max_rss_bytes` - `ours_rp_vrps` - `ours_rp_vaps` - `ours_rp_publication_points` - `ours_rp_repo_sync_phase_count` - `ours_rp_large_publication_points{object_count_gt="10|50|100|..."}` - `ours_rp_cir_objects` - `ours_rp_ccr_state_items`