fix(infra): harden grafana permissions and document recovery
- Why: - students hit permission denied after pull and grafana restart-loop with readonly db - What: - run grafana as default non-root user - mount provisioning directory as read-only - add troubleshooting for git permission issues and grafana volume reset - normalize file modes for data jsonl and docs/DE-task.md to 100644 - Check: - docker compose config - docker compose up -d grafana - curl -u admin:admin http://localhost:3000/api/health
This commit is contained in:
Executable → Regular
Executable → Regular
Executable → Regular
Executable → Regular
+1
-2
@@ -193,14 +193,13 @@ services:
|
||||
|
||||
grafana:
|
||||
image: grafana/grafana:11.5.2-ubuntu
|
||||
user: root
|
||||
depends_on:
|
||||
- prometheus
|
||||
ports:
|
||||
- 3000:3000
|
||||
volumes:
|
||||
- grafana_lib:/var/lib/grafana
|
||||
- ./configs/grafana/provisioning/:/etc/grafana/provisioning/
|
||||
- ./configs/grafana/provisioning/:/etc/grafana/provisioning/:ro
|
||||
# container_name: grafana
|
||||
# hostname: grafana
|
||||
restart: unless-stopped
|
||||
|
||||
Executable → Regular
@@ -258,5 +258,30 @@ curl -s -X POST -u admin:admin http://localhost:3000/api/admin/provisioning/aler
|
||||
## Troubleshooting
|
||||
|
||||
- `etl_pipeline` падает с ошибкой схемы: сначала запустить `ddl_init`.
|
||||
- `git pull` падает с `Permission denied` на `data/*` или `configs/grafana/provisioning/*`:
|
||||
- Причина: локально есть файлы/каталоги не вашего пользователя (часто после запуска контейнеров с root-пользователем).
|
||||
- Диагностика:
|
||||
```bash
|
||||
ls -ld data configs/grafana/provisioning
|
||||
ls -l data | head -n 20
|
||||
```
|
||||
- Быстрое восстановление:
|
||||
```bash
|
||||
# Владелец и права для рабочей копии репозитория
|
||||
sudo chown -R "$USER:$USER" .
|
||||
find . -type d -exec chmod u+rwx {} \;
|
||||
find . -type f -exec chmod u+rw {} \;
|
||||
```
|
||||
- После восстановления повторить `git pull --ff-only`.
|
||||
- Не запускать `git` через `sudo`.
|
||||
- `grafana` перезапускается с ошибкой `attempt to write a readonly database`:
|
||||
- Причина: старый `grafana_lib` содержит `grafana.db`, созданный root-пользователем.
|
||||
- Простой recovery (сбросить только volume Grafana):
|
||||
```bash
|
||||
docker compose stop grafana
|
||||
docker volume ls | grep grafana_lib
|
||||
docker volume rm <project>_grafana_lib
|
||||
docker compose up -d grafana
|
||||
```
|
||||
- После `docker compose down -v` нужно повторно прогнать: `ddl_init` -> `kafka_load` -> `etl_pipeline`.
|
||||
- Для демо по умолчанию использовать малый срез данных; полный прогон делать осознанно.
|
||||
|
||||
Reference in New Issue
Block a user