ابرووا
شروع رایگان
☰ فهرست مستندات · کلید سرور و مسیرهای سرور

کلید سرور و routeهای سرور

دو اعتبارنامه‌ی پروژه‌ی ابرووا، کاری که تنظیم «server routeها به server secret نیاز دارند» انجام می‌دهد، و این‌که چطور log agent، check-inهای cron و نشانگرهای deploy را به کلید سرور منتقل کنید.

به‌روزرسانی: ۵ آبان ۱۴۰۵

هر پروژه‌ی ابرووا دو اعتبارنامه دارد. این صفحه توضیح می‌دهد هر کدام کجا به کار می‌رود، و چطور routeهایی را که فقط سرورهای شما استفاده می‌کنند طوری تنظیم کنید که فقط کلید سرور را بپذیرند.

دو اعتبارنامه#

اعتبارنامهشکل آنجای آن
کلید اپab_live_...داخل اپ‌های موبایل و وب شما. همراه اپ منتشر می‌شود، پس هر کسی اپ را داشته باشد می‌تواند آن را استخراج کند.
کلید سرورab_srv_...فقط روی سرورهای شما: log agent، cron jobها، اسکریپت‌های deploy و SDKهای بک‌اند. هرگز آن را داخل اپ یا کدی که در مرورگر اجرا می‌شود نگذارید.

هر دو در کنسول ابرووا در تنظیمات پروژه ← کلیدها هستند. کلید سرور فقط یک بار نمایش داده می‌شود، وقتی آن را می‌سازید یا عوض می‌کنید؛ آن را در secret manager یا محیط سرور خود نگه دارید.

این تنظیم چه می‌کند#

server routeها به server secret نیاز دارند یک سوییچ برای هر پروژه است که در کنسول ابرووا در تنظیمات پروژه ← محصولات ← ابرووا تریس قرار دارد. به‌طور پیش‌فرض خاموش است.

وقتی روشن باشد، routeهایی که فقط سرورها و agentها صدا می‌زنند فقط کلید سرور را می‌پذیرند. درخواستی که فقط کلید اپ را دارد آنجا با 401 رد می‌شود:

Routeاستفاده‌کنندهبا روشن بودن تنظیم
اتصال log agentAbrova Trace Agentکلید سرور لازم است
ثبت کانتینر و وضعیت آنAbrova Trace Agentکلید سرور لازم است
POST /api/cron-monitors/check-incron jobهای شماکلید سرور لازم است
POST /api/logs/deploysاسکریپت‌های deploy شماکلید سرور لازم است
POST /api/logs/ingest و /api/logs/ingest/batchاپ‌ها، سرورها و agentبی‌تأثیر؛ کلید اپ همچنان کار می‌کند
خطاها، پیام‌ها و داده‌های عملکرداپ‌ها و SDKهای شمابی‌تأثیر؛ کلید اپ همچنان کار می‌کند

برای اپ‌های شما چیزی تغییر نمی‌کند: خطاها، پیام‌ها، داده‌های عملکرد و لاگ‌هایی که با کلید اپ فرستاده می‌شوند، چه این تنظیم روشن باشد چه خاموش، کار می‌کنند.

چرا روشنش کنیم#

کلید اپ ذاتاً عمومی است. بدون این تنظیم، کسی که آن را از اپ شما استخراج کرده می‌تواند:

  • یک check-in جعلی cron با پیام «کار موفق بود» بفرستد و کاری را که شکست می‌خورد یا اجرا نمی‌شود پنهان کند،
  • نشانگرهای deploy جعلی بنویسد،
  • به‌عنوان یک log agent جعلی وصل شود.

با روشن بودن این تنظیم، کلید اپ برای هیچ‌کدام از این کارها کافی نیست.

وقتی روشنش کنید که log agent اجرا می‌کنید، از مانیتورینگ cron استفاده می‌کنید یا نشانگر deploy می‌فرستید. پروژه‌ای که فقط از SDKهای موبایل و وب استفاده می‌کند به آن نیازی ندارد.

کلید سرور را به سرورهایتان بدهید#

دو راه برای فرستادن کلید سرور روی HTTP وجود دارد. هر دو روی همه‌ی routeهای جدول بالا کار می‌کنند:

  • کلید سرور را به‌جای کلید بفرستید: x-api-key: ab_srv_...
  • کلید اپ را در x-api-key نگه دارید و کلید سرور را در هدر دوم بفرستید: x-server-secret: ab_srv_...

Log agent

agent یک اعتبارنامه می‌گیرد، در ABROVA_TRACE_API_KEY. آن را روی کلید سرور بگذارید و agent را دوباره deploy کنید:

bash
docker run -d \
  --name abrova-trace-agent \
  --restart=always \
  -v /var/run/docker.sock:/var/run/docker.sock:ro \
  -e ABROVA_TRACE_API_KEY=ab_srv_your_server_secret \
  ghcr.io/abrova-co/abrova-trace-agent:latest

در چیدمان چندسروری فقط collector اعتبارنامه را نگه می‌دارد؛ agentهای راه دور به تغییری نیاز ندارند. اپ دسکتاپ ابرووا (به‌زودی) هم agent را deploy خواهد کرد و همین کلید را از شما می‌خواهد. Abrova Trace Agent را ببینید.

check-inهای cron

bash
curl -X POST https://trace.abrova.ir/api/cron-monitors/check-in \
  -H "X-API-Key: ab_srv_your_server_secret" \
  -H "Content-Type: application/json" \
  -d '{"monitor_slug": "daily-backup", "status": "ok"}'

مانیتورینگ cron را ببینید.

نشانگرهای deploy

نشانگر deploy به ابرووا تریس می‌گوید «همین الان یک deploy انجام شد»، تا صفحه‌ی لاگ‌ها بتواند نشان دهد از آخرین deploy چه چیزی جدید است. آن را در انتهای اسکریپت deploy صدا بزنید. همه‌ی فیلدها اختیاری‌اند:

bash
curl -X POST https://trace.abrova.ir/api/logs/deploys \
  -H "x-api-key: ab_srv_your_server_secret" \
  -H "Content-Type: application/json" \
  -d '{
    "version": "1.4.2",
    "environment": "production",
    "source": "api-server",
    "description": "Checkout fixes"
  }'
گزینهنوعاجباریتوضیح
versionstringخیرنسخه یا commitی که deploy کرده‌اید
environmentstringخیرمحیط (پیش‌فرض: production)
sourcestringخیرچه چیزی deploy شده، مثلاً نام سرویس
descriptionstringخیرمتن آزاد
deployedAtstringخیرزمان به قالب ISO 8601 (پیش‌فرض: همین الان)

پاسخ (201): {"success": true, "deploy": { ... }}

لاگ‌هایی که از سرورها فرستاده می‌شوند

Logs REST API هیچ‌وقت به‌خاطر این تنظیم رد نمی‌شود، اما سرور بهتر است همچنان با کلید سرور احراز هویت کند، نه با کلید اپ. SDKهای Node.js و Laravel همین حالا کلید سروری را که با آن پیکربندی‌شان کرده‌اید می‌فرستند.

مطمئن شوید چیزی هنوز از کلید اپ استفاده نمی‌کند#

در کنسول ابرووا، تنظیمات پروژه ← محصولات ← ابرووا تریس را باز کنید. خط زیر سوییچ نشان می‌دهد درخواست‌های اخیر روی routeهای سرور (در ۳۰ روز گذشته) چطور احراز هویت شده‌اند:

  • «در ۳۰ روز گذشته، N درخواست در server routeها از کلید برنامه استفاده کرده‌اند.»: چیزی هنوز کلید اپ را می‌فرستد. اول آن را پیدا کنید و به کلید سرور منتقل کنید.
  • «آماده: در ۳۰ روز گذشته همهٔ درخواست‌های server routeها از server secret استفاده کرده‌اند.»: روشن کردن امن است.
  • «در ۳۰ روز گذشته هیچ درخواستی در server routeها نبوده است.»: هنوز چیزی از این routeها استفاده نمی‌کند؛ روشن کردن روی کسی اثر ندارد.

روشن کردن#

server routeها به server secret نیاز دارند را روشن کنید و ذخیره کنید. از آن به بعد، درخواستی روی route سرور که کلید سرور ندارد این پاسخ را می‌گیرد:

json
{
  "error": "Server credential required",
  "code": "server_credential_required"
}

درخواستی که x-server-secret اشتباه بفرستد 401 با "code": "server_credential_invalid" می‌گیرد.

هر وقت بخواهید می‌توانید این تنظیم را دوباره خاموش کنید؛ در این صورت کلید اپ مثل قبل روی این routeها پذیرفته می‌شود.

عیب‌یابی#

بعد از روشن کردن، check-inهای cron یا نشانگرهای deploy خطای 401 می‌دهند

کار هنوز کلید اپ را می‌فرستد. در هدر X-API-Key آن را با کلید سرور (ab_srv_...) عوض کنید، یا هدر x-server-secret را اضافه کنید. تا آن موقع مانیتور کار را اجرانشده نشان می‌دهد.

بعد از روشن کردن، کانتینرها به‌روز نمی‌شوند یا قابل کنترل نیستند

agent هنوز با کلید اپ اجرا می‌شود. خطوط لاگ همچنان می‌رسند، اما agent دیگر نمی‌تواند کانتینرها را ثبت کند، وضعیتشان را بفرستد یا دستور بگیرد. آن را با مقدار کلید سرور در ABROVA_TRACE_API_KEY دوباره deploy کنید.

کلید سرور را عوض کردم

آن را همه‌جا به‌روز کنید: agent، cron jobها، اسکریپت‌های deploy و پیکربندی SDK بک‌اند. کلید قدیمی همان لحظه‌ی عوض کردن از کار می‌افتد.

این صفحه مفید بود؟
گزارش مشکل