throttling, abuse-protection & logging/monitoring pass
This commit is contained in:
30
README.md
30
README.md
@@ -25,6 +25,36 @@ python manage.py runserver
|
||||
در پروداکشن، `DJANGO_DEBUG` رو ست نکنید (یا `0` بذارید) و حتماً
|
||||
`DJANGO_SECRET_KEY` و `DJANGO_ALLOWED_HOSTS` (کاما-جدا) رو هم از env بدید.
|
||||
|
||||
## اجرا با Docker (اپ + استکِ لاگِ متمرکز)
|
||||
|
||||
برای اجرای محلی، در کنارِ Django یک استکِ لاگِ متمرکز هم فراهم شده:
|
||||
`Loki` (ذخیرهسازیِ لاگ) + `Grafana Alloy` (جمعآوریِ لاگ از فایلِ اپ) +
|
||||
`Grafana` (جستجو/فیلترِ لاگها). این فقط برای dev/local هست، نه یک
|
||||
تنظیمِ پروداکشن (مثلاً هنوز از `runserver` استفاده میشه، نه gunicorn).
|
||||
|
||||
```bash
|
||||
# اختیاری: تنظیماتِ خودتون رو ست کنید (وگرنه دیفالتهای dev استفاده میشن)
|
||||
cp .env.example .env
|
||||
|
||||
docker compose up --build
|
||||
```
|
||||
|
||||
- اپ Django: `http://localhost:8000`
|
||||
- Grafana: `http://localhost:3000` (بدونِ نیاز به لاگین، anonymous admin فعاله؛ فقط برای محیطِ محلی)
|
||||
|
||||
داشبوردِ «Tadrisino Django Logs» بهصورتِ خودکار در Grafana لود میشه و
|
||||
امکانِ فیلتر بر اساسِ سطحِ لاگ (`level`) و جستجوی متنی رو میده.
|
||||
|
||||
**جریانِ لاگ:** Django همون خطوطِ JSON موجود رو (بدونِ تغییرِ پیامها یا
|
||||
محافظتهای حساسیتی) هم روی stdout و هم در `/var/log/django/app.log`
|
||||
(یک ولومِ Docker) مینویسه ← Grafana Alloy این فایل رو میخونه ← به Loki
|
||||
push میکنه ← Grafana از Loki میخونه. جزئیاتِ بیشتر در کامنتهای بالای
|
||||
`docker-compose.yml`، `docker/alloy/config.alloy` و `config/settings.py`
|
||||
(بخشِ `LOG_DIR`).
|
||||
|
||||
اجرای بدونِ Docker (روش قبلی، بالای همین فایل) دقیقاً همونطور که بود
|
||||
کار میکنه — `LOG_DIR` فقط داخلِ Docker ست میشه.
|
||||
|
||||
## مستندات API
|
||||
|
||||
| | |
|
||||
|
||||
Reference in New Issue
Block a user