# 环境监测组件接入说明

## 当前已接入能力

- `blackbox_exporter`
  - 负责 HTTP / TCP 探测
- `Spring Boot Actuator`
  - 负责 Java 应用健康状态
- `JMX Exporter`
  - 负责 JVM 指标
- `Vector`
  - 负责日志采集并推送到平台

## 多机多节点约定

- `service_key`
  - 一个逻辑服务一份，例如 `java-demo-app`
- `nodeKey`
  - 一个具体节点一份，例如 `java-demo-app-node-1`
- `host`
  - 具体机器名或 IP
- `clusterName`
  - 可选，用于标识集群

平台会按 `service_key + nodeKey` 聚合日志和监测结果。

## 本地示例服务

示例工程目录：

- `examples/java-demo-app`

默认端口：

- 应用：`18080`
- JMX Exporter：`19404`

关键接口：

- `http://localhost:18080/actuator/health`
- `http://localhost:18080/demo/hello`
- `http://localhost:18080/demo/error?message=test`
- `http://localhost:19404/metrics`

## 启动方式

启动 Java 示例服务：

```powershell
powershell -ExecutionPolicy Bypass -File .\scripts\start-java-demo.ps1
```

启动 Vector：

```powershell
powershell -ExecutionPolicy Bypass -File .\scripts\start-vector-java-demo.ps1
```

## Vector 到平台

Vector 配置文件：

- `examples/java-demo-app/vector.yaml`

日志接收接口：

- `POST /api/monitoring/logs/ingest`

鉴权头：

- `x-monitoring-ingest-token`

默认令牌：

- `sentai-monitor-ingest`

## 监测目标配置示例

Java hybrid 示例：

```json
{
  "nodeKey": "java-demo-app-node-1",
  "host": "localhost",
  "javaCollectionMode": "hybrid",
  "javaHealthPath": "/actuator/health",
  "javaMetricsPath": "/actuator/metrics",
  "jmxExporterUrl": "http://localhost:19404",
  "jmxMetricsPath": "/metrics",
  "javaRequireHealthCheck": true
}
```

HTTP blackbox 示例：

```json
{
  "collectionMode": "blackbox",
  "blackboxBaseUrl": "http://localhost:9115",
  "blackboxModule": "http_2xx",
  "blackboxTarget": "http://localhost:3001/health"
}
```
