# Grafana 构建配置

基于 `grafana/grafana:11.1.0` 构建的自定义镜像，主要做了用户 ID 适配和配置自动化。

## 快速开始

```bash
# 构建镜像
docker build -t argus-metric-grafana:1.0.0 .

# 启动容器（主机网络模式）
docker run -d \
  --name grafana \
  --network=host \
  -v /private/argus:/private/argus \
  argus-metric-grafana:1.0.0
```

访问：`http://localhost:3001/private/argus/metric/grafana/`  
默认账号：`admin` / `admin`

## 用户 ID 配置

镜像默认使用特殊的用户 ID 以适配主机权限：
- `GRAFANA_UID=2133`
- `GRAFANA_GID=2015`

如果需要修改，构建时传入参数：

```bash
docker build \
  --build-arg GRAFANA_UID=1000 \
  --build-arg GRAFANA_GID=1000 \
  -t argus-metric-grafana:1.0.0 .
```

## 配置说明

### 数据源配置

修改 `datasources/datasources.yml` 中的 Prometheus 地址：

```yaml
datasources:
  - name: Prometheus
    type: prometheus
    url: http://10.211.55.5:9090  # 改成你的 Prometheus 地址
    isDefault: true
```

**注意**：确保 Grafana 容器能访问到 Prometheus 服务，网络要通。

### Dashboard 导入

配置好数据源后，手动导入默认 dashboard：

1. 登录 Grafana
2. 左侧菜单 → Dashboards → Import
3. 上传 `dashboards/default_dashboard.json`
4. 选择 Prometheus 数据源
5. Import

或者直接把 dashboard 放到持久化目录：

```bash
cp dashboards/default_dashboard.json /private/argus/metric/grafana/provisioning/dashboards/
```

重启容器会自动加载（因为 `dashboards.yml` 配置了自动扫描该目录）。

## 目录结构

持久化目录都在 `/private/argus` 下：

```
/private/argus/
├── etc/
│   └── grafana.metric.argus.com       # 容器 IP 记录
└── metric/grafana/
    ├── config/
    │   └── grafana.ini                 # 主配置文件
    ├── data/                           # 数据库、会话等
    ├── logs/                           # 日志
    ├── plugins/                        # 插件
    └── provisioning/
        ├── datasources/
        │   └── datasources.yml         # 数据源配置
        └── dashboards/
            ├── dashboards.yml          # dashboard 配置
            └── *.json                  # dashboard JSON 文件
```

## 启动流程

容器启动时 `start-grafana-supervised.sh` 会：

1. 记录容器 IP 到 `/private/argus/etc/grafana.metric.argus.com`
2. 创建必要的目录
3. 从 `/tmp/` 复制配置文件到持久化目录（首次启动或配置不存在时）
4. 用 `grafana:grafana` (UID:GID=2133:2015) 启动 Grafana 服务