لماذا تستبدل Datadog أو New Relic بـ SigNoz؟
SigNoz منصة مراقبة مفتوحة المصدر (رخصة Apache 2.0) تعتمد على ClickHouse للتخزين عالي الأداء، وبروتوكول OpenTelemetry لإضافة التتبع. بياناتك تبقى على بنيتك التحتية، وتتحكم في مدة الاحتفاظ، ولا تدفع سوى تكلفة VPS الذي يشغّل المنظومة.
ما الذي يمنحك إياه SigNoz
- Traces موزعة: تصوُّر كامل لمسار طلب HTTP عبر خدماتك المصغرة.
- مقاييس متوافقة مع Prometheus: استورد لوحات التحكم الموجودة أو أنشئ لوحات جديدة.
- سجلات مركزية: جمع سجلات منظّمة من جميع تطبيقاتك في واجهة موحدة.
- تنبيهات قابلة للضبط: حدد حدوداً لأي مقياس وتلقَّ إشعارات عبر Slack أو PagerDuty أو webhook.
- لوحات تحكم مخصصة: أنشئ عروضاً تقنية في بضع نقرات دون الحاجة لمعرفة LoQL أو PromQL.
- واجهة مستخدم حديثة: واجهة React سريعة الاستجابة بدون تكوين.
المتطلبات الأساسية
يعتمد SigNoz على ClickHouse، محرك قاعدة بيانات عمودية يستهلك ذاكرة كبيرة. الحد الأدنى الموصى به هو 4 جيجابايت ذاكرة عشوائية — أقل من ذلك يؤدي إلى قتل ClickHouse بواسطة OOM killer قبل أن تُحمَّل الواجهة.
قائمة المتطلبات:
- خادم VPS يعمل بـUbuntu 22.04 أو Debian 12.
- Docker Engine ≥ 24 وDocker Compose V2.
- المنفذ 8080 مفتوح (واجهة SigNoz).
- المنافذ 4317 (OTLP/gRPC) و4318 (OTLP/HTTP) مفتوحة.
- 20 جيجابايت مساحة قرص كحد أدنى.
تثبيت SigNoz عبر Foundry CLI
الخطوة 1 — تثبيت Docker على VPS
curl -fsSL https://get.docker.com | sh
systemctl enable --now docker
docker compose versionالخطوة 2 — تثبيت Foundry CLI (foundryctl)
منذ الإصدار v0.112.0، يعتمد SigNoz على Foundry CLI كطريقة النشر الرسمية.
curl -L https://get.foundry.so/foundryctl/latest | bash
export PATH="$HOME/.foundry/bin:$PATH"
foundryctl --versionالخطوة 3 — تشغيل النشر
cd /opt/signoz
foundryctl cast -f casting.yamlيسحب Foundry CLI صور Docker ويشغّل الحاويات بالترتيب الصحيح. يستغرق التشغيل الكامل نحو 2-3 دقائق.
الخطوة 4 — التحقق من تشغيل SigNoz
docker compose -f /opt/signoz/docker-compose.yaml psافتح المتصفح على http://<IP_VPS>:8080. ملاحظة: المنفذ القديم 3301 المذكور في دروس قديمة أصبح غير صالح — المنفذ الحالي هو 8080.
الخطوة 5 — التحقق من تشغيل SigNoz
انتظر حتى تكون جميع الحاويات في حالة healthy:
docker compose -f /opt/signoz/docker-compose.yaml psاعتمد على الواجهة عبر http://IP_VPS:8080. يمكنك تسجيل الدخول مع بريد إلكتروني وكلمة مرور عند أول فتح.
الخطوة 6 — تأمين الوصول بـ Nginx
لا تُعرّض المنفذ 8080 مباشرةً. استخدم Nginx كـreverse proxy مع TLS:
ufw deny 8080server {
listen 443 ssl;
server_name signoz.نطاقك.com;
location / { proxy_pass http://127.0.0.1:8080; }
}إضافة التتبع لتطبيقك باستخدام OpenTelemetry SDK
يستقبل SigNoz التتبعات عبر بروتوكول OTLP. Node.js:
npm install @opentelemetry/sdk-node @opentelemetry/auto-instrumentations-nodeOTEL_EXPORTER_OTLP_ENDPOINT="http://<IP_VPS>:4318" \
OTEL_SERVICE_NAME="my-api" \
node -r ./tracing.js app.jsPython:
pip install opentelemetry-distro opentelemetry-exporter-otlp
opentelemetry-bootstrap -a install
OTEL_EXPORTER_OTLP_ENDPOINT="http://<IP_VPS>:4318" \
OTEL_SERVICE_NAME="my-python-service" \
opentelemetry-instrument uvicorn main:appإنشاء لوحات التحكم والتنبيهات
بمجرد إضافة التتبع لتطبيقاتك، يملأ SigNoz تلقائياً عرض الخدمات بزمن الاستجابة P50/P99 ومعدل الأخطاء والإنتاجية لكل خدمة.
إنشاء لوحة تحكم مخصصة: اذهب إلى لوحات التحكم → لوحة تحكم جديدة، أضف لوحة من نوع Time Series واختر مقياس Prometheus.
ضبط تنبيه على زمن الاستجابة P99: اذهب إلى التنبيهات → قاعدة تنبيه جديدة، اختر تنبيه يستند إلى مقياس، وحدد الشرط واختر قناة الإشعار.
احذر من قتل ClickHouse بسبب نقص الذاكرة
على VPS بأقل من 4 جيجابايت ذاكرة متاحة، قد يقتل kernel لينكس عملية ClickHouse بـ exit code 137.
التشخيص:
dmesg | grep -i oomستجد سطراً مثل Out of memory: Killed process XXXX (clickhouse-serv).
SigNoz مقابل Datadog وGrafana Cloud
| المعيار | SigNoz (استضافة ذاتية) | Datadog | Grafana Cloud |
|---|---|---|---|
| التكلفة الشهرية (5 خدمات) | تكلفة VPS فقط (~10-20€) | ~75-150$ + مقاييس مخصصة | مجاني حتى 10k سلسلة، ثم ~8$/1k |
| Traces موزعة | نعم (OpenTelemetry أصيل) | نعم (عميل احتكاري) | نعم (Tempo، عبر OTLP) |
| سيادة البيانات | كاملة — بياناتك على VPS | بيانات عند Datadog (US/EU) | بيانات عند Grafana Labs |
| التعقيد التشغيلي | متوسط (Docker، خادم واحد) | لا شيء (SaaS) | منخفض (SaaS) |
| المقاييس | نعم (متوافقة مع Prometheus) | نعم (احتكارية + Prometheus) | نعم (Mimir، متوافقة مع Prometheus) |
| السجلات | نعم (مدمجة) | نعم (تكلفة إضافية) | نعم (Loki، تكلفة إضافية) |
| التحديثات | يدوية (foundryctl) | تلقائية | تلقائية |
| الدعم | مجتمع + خطة مدفوعة | مدفوع (مضمّن) | مجتمع + خطة مدفوعة |
حل المشكلات الشائعة
الواجهة لا تُحمَّل على المنفذ 8080: تحقق من أن حاوية signoz-frontend تعمل وأن جدار الحماية يسمح بالمنفذ.
التتبعات لا تظهر في الواجهة: تحقق من إمكانية الوصول إلى المنفذ 4318 من تطبيقك: curl -v http://<IP_VPS>:4318.
حاوية ClickHouse تعيد التشغيل باستمرار: هذا على الأرجح قتل OOM. أكّد بـ dmesg | grep -i oom.
خطط لفترة الاحتفاظ ببيانات ClickHouse
يحتفظ SigNoz افتراضياً بالتتبعات لمدة 3 أيام والمقاييس لـ30 يوماً. اضبط فترة الاحتفاظ في واجهة SigNoz تحت الإعدادات → فترة الاحتفاظ. بالنسبة لوكالة تدير مشاريع متعددة، 7 أيام للتتبعات و90 يوماً للمقاييس يُقدّم توازناً جيداً.