### prometheus 部署

- 部署网络和持久化存储卷

```bash
docker network create monitoring
docker volume create prometheus-data
```

- 初始配置文件，prometheus.yml

``` yaml
global:
  scrape_interval: 15s

scrape_configs:
  - job_name: 'prometheus'
    static_configs:
      - targets: ['localhost:9090']
      
```

- 启动prometheus

```bash
docker run -itd \
  --name prometheus \
  --network internal \
  -v /mnt/sdb3/Configs/prometheus/data:/prometheus \
  -v /mnt/sdb3/Configs/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml \
  prom/prometheus:v2.45.1 \
  --web.enable-lifecycle \
  --config.file=/etc/prometheus/prometheus.yml \
  --web.external-url=/prometheus/
```



### grafana 部署

- 持久化存储

```bash
docker volume create grafana-data
```

- 启动容器

```bash
docker run -d \
  --name grafana \
  --network internal \
  -v /mnt/sdb3/Configs/grafana/data:/var/lib/grafana \
  -v /mnt/sdb3/Configs/grafana/grafana.ini:/etc/grafana/grafana.ini \
  grafana/grafana
```

### Nginx 子路径 Grafana

- 配置grafana.ini

```bash
root_url = https://home.heysq.com:8443/grafana/

# Serve Grafana from subpath specified in `root_url` setting. By default it is set to `false` for compatibility reasons.
serve_from_sub_path = true
```

- 添加nginx配置

```nginx
location /grafana/ {
    proxy_set_header Host $http_host;
    proxy_pass http://grafana;
}

# Proxy Grafana Live WebSocket connections.
location /grafana/api/live/ {
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection $connection_upgrade;
    proxy_set_header Host $http_host;
    proxy_pass http://grafana;
}
```


### Nginx 监控

- nginx 开启stub_status

```nginx
server {
    listen 8444;
    keepalive_timeout 0;

    access_log off;

    allow 0.0.0.0/0;
    deny all;

    location /stub_status {
        stub_status on;
    }
}
```

- docker 部署nginx_exporter

```bash
docker run -itd -p 9113:9113 \
--name=nginx_exporter \
--network=monitoring \
nginx/nginx-prometheus-exporter:0.11 \
-nginx.scrape-uri=http://192.168.0.3:8444/stub_satus
```

### IKuai监控

```bash
docker run -itd \
-p 8001:8001 \
--name ikuai-aio \
--restart always \
-e HTTP_INSECURE_SKIP_VERIFY=false \
-e HTTP_TIMEOUT=30s \
-e TZ=Asia/Shanghai \
-e IKUAI_ADDR=http://192.168.0.1 \
-e IKUAI_USERNAME=admin \
-e IKUAI_PASSWORD=Sunqi0220. \
-e IKUAI_CRON_SKIP_START=false \
-e IKUAI_EXPORTER_LISTEN_ADDR=0.0.0.0:8001 \
ghcr.io/nervebing/ikuai-aio:latest
```

- grafana 面板 https://grafana.com/grafana/dashboards/19247-ikuai/

### openwrt 配置 nginx

```bash
docker run -itd \
--name nginx \
--network=internal \
--restart=always \
-p 8443:8443 \
-v /mnt/sdb3/Configs/nginx/conf.d:/etc/nginx/conf.d \
-v /mnt/sdb3/Configs/nginx/ssl/:/etc/nginx/ssl \
-v /mnt/sdb3/Configs/nginx/logs:/var/log/nginx/ \
-v /mnt/sdb3/Configs/nginx/nginx.conf:/etc/nginx/nginx.conf \
-v /mnt/sdb3/Configs/nginx/htpasswd_file:/etc/nginx/htpasswd_file \
nginx:1.22
```

### cAdvisor 部署

```bash
docker run \
  --volume=/:/rootfs:ro \
  --volume=/var/run:/var/run:ro \
  --volume=/sys:/sys:ro \
  --volume=/mnt/sdb3/:/var/lib/docker:ro \
  --network=internal \
  --detach=true \
  --name=cadvisor \
  --privileged \
  --device=/dev/kmsg \
  google/cadvisor:latest
```

