عندما يقرر الفريق أن يشتري منصة مراقبة Observability جاهزة بدل أن يشغل Prometheus وLoki بنفسه، يبدأ غالباً من صفحة الأسعار، فيرى 15 دولاراً للسيرفر في Datadog أو 100 GB مجانية كل شهر في New Relic، ويضرب الرقم في عدد السيرفرات ويظن أنه عرف التكلفة. ثم تأتي الفاتورة الأولى أكبر بعدة أضعاف، والسبب أن السعر المعلن هو سعر وحدة واحدة من وحدات كثيرة، وأن البند الأكبر في الفاتورة غالباً ليس السيرفر وإنما السجلات المفهرسة، أو عدد المستخدمين، أو ذاكرة السيرفر، بحسب المنصة التي اخترتها.
وقد شرحنا في مفاهيم المراقبة Observability الإشارات الثلاث: المقاييس Metrics والسجلات Logs والتتبع Traces، ثم شغلنا الأدوات المفتوحة بأنفسنا وقارنا أدوات السجلات المركزية بالأرقام. وفي هذا المقال ننظر إلى الجهة الأخرى: كم تدفع لو اشتريت الخدمة جاهزة، وكم تدفع لو شغلت مثلها على سيرفرك:
دليلSigNoz: بديل Datadog مفتوح المصدر Open Source على سيرفرككيف تشغل SigNoz وترسل إليه التتبع والسجلات والمقاييس عبر OpenTelemetry، وما الذي يقدمه فعلاً مقابل Datadog وبكم من الذاكرة.
دليلأي أداة لسجلاتك المركزية؟ مقارنة بالأرقام على البيانات نفسهاأدخلنا 500 ألف حدث في Loki وGraylog وSeq وOpenSearch، وقارنا التخزين والذاكرة والبحث بالعربية والتكلفة ومن يناسبه كل منها.
دليلجمع السجلات Logs مركزياً مع Grafana Lokiكيف تشغل Grafana Loki مع Alloy وGrafana، وتختار التسميات Labels التي لا توقف الإدخال، ثم تبحث وتنبه وتحذف بلغة LogQL.
دليلالسجلات المركزية Logs مع Graylog وOpenSearchكيف تثبت Graylog فوق OpenSearch، وتوجه الرسائل بال Streams وتخفي بياناتها بال Pipelines وتنبه منها، وما الذي لا يجده بحثه العربي.
دليلسجلات منظمة Structured Logs تبحث فيها بالخصائص مع Seqكيف تشغل Seq وترسل إليه السجلات من .NET وأي لغة أخرى، وتبحث فيها بالخصائص، وتضبط الاحتفاظ والتنبيهات، مع ما يسمح به الترخيص المجاني.في هذا المقال سوف نتناول:
- ماذا تبيع Datadog وNew Relic وDynatrace وGrafana Cloud، وما وحدة القياس Billing Unit التي تحاسب عليها كل منصة.
- شركة نموذجية بعشرين سيرفراً، وسكربت Python صغير يحسب فاتورتها الشهرية من أسعار القوائم List Prices، تستطيع أن تغير افتراضاته وتعيد تشغيله.
- تكلفة تشغيل SigNoz أو مجموعة Grafana على سيرفرك، مع وقت المهندس، وعدد الساعات الذي تتساوى عنده الكفتان.
- فخاخ الفاتورة المعروفة: تعدد قيم الوسوم Cardinality، وفهرسة السجلات Log Indexing، وسيرفرات APM مع التوسع التلقائي Autoscaling، ورسوم خروج البيانات Egress.
- أين تحفظ كل منصة بياناتك، وما يقوله التنظيم في المملكة عن ذلك.
ماذا تبيع منصات المراقبة Observability التجارية؟
كل هذه المنصات تبيع الشيء نفسه في جوهره: وكيلاً Agent أو SDK يجمع الإشارات من سيرفراتك وتطبيقاتك، ومخزناً مستضافاً لها، ولوحات Dashboards وتنبيهات Alerts فوقها، والأهم أنها تبيعك عدم الحاجة إلى تشغيل كل ذلك بنفسك. والاختلاف بينها في طريقة تقسيم المنتج وفي ما تعده لتحاسبك عليه، كما يبين الجدول التالي:
| المنصة | ما تبيعه | ما تعده في الفاتورة |
|---|---|---|
| Datadog | منتجات منفصلة لكل منها سعر: مراقبة البنية Infrastructure، وتتبع الأداء APM، وإدارة السجلات Log Management، ومراقبة تجربة المستخدم RUM، وتتبع الأخطاء Error Tracking وغيرها | السيرفر Host، وكل GB مدخل، وكل مليون سجل مفهرس، وكل 100 مقياس مخصص Custom Metrics |
| New Relic | منصة واحدة بكل القدرات، وتختلف الصلاحيات بنوع المستخدم | كل GB مدخل بعد أول 100 GB، وكل مستخدم بحسب نوعه، أو قدرة حوسبة Compute بدل المستخدمين |
| Dynatrace | مراقبة كاملة Full-Stack للتطبيق والبنية مع تحليل السبب الجذري Root Cause Analysis، باشتراك سنوي يستهلك منه | ساعة الذاكرة GiB-hour للسيرفر، وكل GiB يدخل أو يخزن أو يقرأ |
| Grafana Cloud | Grafana مع مخزن مستضاف للمقاييس، ومخزن سجلات مبني على Loki، ومخزن تتبع | رسوم منصة ثابتة، وكل ألف سلسلة نشطة Active Series، وكل GB، وكل مستخدم نشط |
| SigNoz Cloud | النسخة المستضافة من SigNoz المفتوح المصدر، نضعها هنا للمقارنة | كل GB من السجلات والتتبع، وكل مليون عينة Sample من المقاييس، ولا شيء غير ذلك |
ولاحظ أن جميعها تبيع الإشارات الثلاث، لذلك لا تقارن بينها بقائمة الميزات وحدها، وإنما بالسؤال: ما الذي يكبر في نظامي مع الوقت؟ فإذا كان عدد السيرفرات ثابتاً والسجلات تتضاعف فالمنصة التي تحاسب على السيرفر تختلف عن التي تحاسب على كل GB، وإذا كان الفريق يكبر فالمنصة التي تحاسب على المستخدم هي الأغلى عليك.
كيف تحسب كل منصة فاتورتها؟
الشكل التالي يلخص وحدات القياس عند كل منصة، ويظلل بالأحمر البند الأكبر في فاتورة الشركة النموذجية التي سوف نحسبها بعد قليل:

Datadog: لكل منتج عداد مستقل
في Datadog تشتري كل منتج على حدة، ولكل منتج وحدته، والأرقام التالية من قائمة الأسعار، والرقم الأول للدفع السنوي والثاني للدفع عند الطلب On-demand:
- مراقبة البنية Infrastructure: خطة Pro بـ 15 أو 18 دولاراً للسيرفر شهرياً، وEnterprise بـ 23 أو 27 دولاراً.
- تتبع الأداء APM: 31 أو 36 دولاراً لكل سيرفر يعمل عليه تطبيق متتبع، ويشمل كل سيرفر 150 GB من ال Spans المدخلة ومليون Span مفهرس بحفظ 15 يوماً، مجموعة على كل السيرفرات كما تقول صفحة الأسعار، وما زاد عن ذلك بـ 0.10 دولار لكل GB و1.70 دولار لكل مليون Span مفهرس.
- المقاييس المخصصة Custom Metrics: كل سيرفر في خطة Pro يأتي بـ 100 مقياس مخصص، وفي Enterprise بـ 200، وما زاد بـ 5 دولارات لكل 100. والمقياس المخصص في توثيق الفوترة هو كل تركيبة فريدة من اسم المقياس وقيم الوسوم Tags، أي أن المقياس الواحد بوسمين قد يكون مئات المقاييس في الفاتورة.
- السجلات Logs: الإدخال Ingest بـ 0.10 دولار لكل GB، ثم الفهرسة Indexing لكل مليون سجل بحسب مدة الحفظ: 1.06 دولار لثلاثة أيام، و1.27 لسبعة، و1.70 لخمسة عشر، و2.50 لثلاثين يوماً بالدفع السنوي. وهناك تخزين أرخص للبحث المتأخر اسمه Flex Logs بـ 0.05 دولار لكل مليون سجل مخزن.
- طريقة عد السيرفرات: يعد Datadog السيرفرات كل ساعة، وفي آخر الشهر يأخذ أعلى عدد بعد استبعاد أعلى 1% من الساعات، كما يقول توثيق الفوترة، وسوف نرى أثر ذلك في فقرة التوسع التلقائي.
لاحظ أن الإدخال رخيص والفهرسة هي الغالية، فكل سطر تبقيه قابلاً للبحث 15 يوماً يكلف 17 ضعف ما كلفه إدخاله إذا كان حجم السطر 1 KB، ولذلك يقوم من يدير Datadog جيداً بتحديد ما يفهرس بفلاتر الاستبعاد Exclusion Filters في إعداد الفهارس Indexes.
New Relic: البيانات رخيصة والمستخدم هو البند الكبير
New Relic لا يعد السيرفرات، وإنما يحاسب على أمرين كما في صفحة الأسعار:
- البيانات المدخلة Data Ingest: أول 100 GB كل شهر مجانية، ثم 0.40 دولار لكل GB، أو 0.60 دولار في خيار Data Plus الذي يضيف مدة حفظ أطول، وتحفظ البيانات في مركز بيانات الاتحاد الأوروبي بزيادة 0.05 دولار لكل GB.
- المستخدمون Users: المستخدم الأساسي Basic مجاني ويرى اللوحات والتنبيهات، ومستخدم Core بـ 49 دولاراً شهرياً ويرى السجلات والأخطاء، ومستخدم Full Platform الذي يصل إلى كل القدرات بـ 10 دولارات للأول ثم 99 لكل مستخدم في خطة Standard بحد أقصى خمسة، و349 دولاراً في خطة Pro مع التزام سنوي أو 418.80 دولار بالدفع الشهري.
وهذا يعني أن فاتورة New Relic تكبر مع حجم الفريق أكثر مما تكبر مع حجم البيانات، فإذا كان لديك عشرة مهندسين يحتاجون الوصول الكامل لتحليل الأعطال فقد تجاوزت حد خطة Standard وانتقلت إلى Pro. ولاحظ أيضاً أن الخطة المجانية توقف استقبال البيانات عند تجاوز 100 GB حتى بداية الشهر التالي أو حتى تنتقل إلى خطة مدفوعة.
Dynatrace: الذاكرة بالساعة واشتراك سنوي
تبيع Dynatrace باشتراك سنوي اسمه Dynatrace Platform Subscription، تلتزم فيه بحد أدنى للإنفاق السنوي ثم تستهلك منه بحسب قائمة الأسعار، وما زاد عن الالتزام يحاسب بالسعر نفسه دون غرامة:
- المراقبة الكاملة Full-Stack Monitoring: 58 دولاراً شهرياً لسيرفر بذاكرة 8 GiB، والحساب الفعلي 0.01 دولار لكل GiB من الذاكرة في الساعة، أي أن السيرفر بذاكرة 16 GiB يكلف الضعف.
- مراقبة البنية Infrastructure Monitoring: 29 دولاراً للسيرفر شهرياً، أي 0.04 دولار في الساعة، والمستوى الأبسط Foundation بـ 7 دولارات.
- السجلات Logs: 0.20 دولار لكل GiB مدخل، ثم إما الدفع عند القراءة Pay-per-Query بـ 0.0007 دولار لكل GiB في اليوم للتخزين و0.0035 دولار لكل GiB تقرؤه الاستعلامات، أو الاستعلامات المضمنة بـ 0.02 دولار لكل GiB في اليوم.
- التتبع Traces: مضمن بحصة مع Full-Stack، ومحفوظ 10 أيام، وما زاد يحاسب لكل GiB.
ولا تذكر صفحة الأسعار الحد الأدنى للالتزام السنوي، فهو يحدد في العقد، ولذلك فالرقم الذي سوف نحسبه هو سعر القائمة قبل خصومات الالتزام.
Grafana Cloud: رسوم منصة صغيرة وكل إشارة بعدادها
Grafana Cloud له خطة مجانية دائمة، وخطة Pro تبدأ برسوم منصة 19 دولاراً شهرياً ثم الاستهلاك، كما في صفحة الأسعار:
- المقاييس Metrics: أول 10 آلاف سلسلة نشطة Active Series مضمنة، ثم 6.50 دولار لكل ألف سلسلة، وتحفظ 13 شهراً.
- السجلات والتتبع: أول 50 GB من كل منهما مضمنة، ثم ثلاثة بنود لكل GB: المعالجة Process بـ 0.05 دولار، والكتابة Write بـ 0.40 دولار، والحفظ Retain بـ 0.10 دولار، مع حفظ 30 يوماً. وفي حسابنا افترضنا أن كل ما يدخل يكتب ويحفظ، أي 0.55 دولار لكل GB، والرقم ينخفض إذا استخدمت Adaptive Logs لإسقاط ما لا تحتاجه قبل الكتابة.
- مراقبة التطبيقات Application Observability: تجربة جاهزة للـ APM بـ 0.025 دولار لكل سيرفر في الساعة، وهي اختيارية، فإذا لم تفعلها تحاسب على التخزين فقط.
- المستخدمون: أول ثلاثة مستخدمين نشطين مضمنون، ثم 8 دولارات لكل مستخدم يدخل Grafana خلال الشهر.
والأسعار في الصفحة تبدأ بكلمة «Starts at» لأن سعر الوحدة ينخفض تلقائياً مع زيادة الاستهلاك، وخطة Enterprise تبدأ بالتزام 25 ألف دولار سنوياً.
SigNoz Cloud: لكل GB ولا شيء غيره
SigNoz Cloud أبسط الخمسة في التسعير، فلا رسوم للمستخدمين ولا للسيرفرات ولا سعر خاص للمقاييس المخصصة، كما في صفحة الأسعار: حد أدنى 49 دولاراً شهرياً يدخل ضمن الاستهلاك، ثم 0.30 دولار لكل GB من السجلات أو التتبع بحفظ 15 يوماً، و0.10 دولار لكل مليون عينة من المقاييس بحفظ شهر. ونضعه في المقارنة لأنه يفصل بين سؤالين يخلط بينهما كثيرون: هل أريد أداة مفتوحة المصدر؟ وهل أريد أن أشغلها بنفسي؟ فقد تختار SigNoz ثم تشتريه مستضافاً.
الشركة النموذجية وافتراضاتها
لنفرض أن لديك متجراً إلكترونياً متوسط الحجم، والجدول التالي يبين ما نفترضه عنه، وكل رقم فيه افتراض تستطيع تغييره في السكربت:
| البند | القيمة | ملاحظة |
|---|---|---|
| السيرفرات Hosts | 20 سيرفراً، كل منها 4 vCPU و16 GiB | منها 12 تعمل عليها خدمات متتبعة بال APM |
| السجلات | 20 GB يومياً، أي 600 GB شهرياً | متوسط حجم السجل 1 KB، أي 600 مليون سجل في الشهر، ونحفظها 15 يوماً |
| التتبع Traces | 5 GB يومياً، أي 150 GB شهرياً | نفهرس 10% من ال Spans للبحث، أي 15 مليون Span |
| المقاييس المخصصة | 3,000 تركيبة من التطبيقات | و23 ألف سلسلة نشطة إذا أضفنا مقاييس السيرفرات، تقرأ كل 60 ثانية |
| بيانات أخرى | 40 GB شهرياً | المقاييس والأحداث محسوبة بالـ GB في New Relic |
| الفريق | 10 مهندسين | 4 يحتاجون الوصول الكامل لتحليل الأعطال، و6 مطورين يقرؤون السجلات والأخطاء |
| قراءة السجلات | 3,000 GB تقرؤها الاستعلامات شهرياً | تؤثر في Dynatrace فقط لأنه يحاسب على ما تقرؤه |
قد يتساءل البعض: لماذا 1 KB للسجل؟ والإجابة أن Datadog يحاسب على الفهرسة بعدد السجلات لا بحجمها، ويقول في صفحة الأسعار إن أفضل طريقة لمعرفة العدد أن تعد سجلات يوم كامل في نظامك الحالي، فإذا كانت سجلاتك أصغر من ذلك فعددها أكبر والفهرسة أغلى، وإذا كانت أكبر فالعكس، لذلك عدل هذا الرقم أولاً قبل أي رقم آخر.
نحسب الفاتورة بسكربت تستطيع تعديله
بدلاً من جدول جاهز لا تعرف من أين جاءت أرقامه، كتبنا سكربت Python بدون أي مكتبات خارجية، فيه قاموس COMPANY للافتراضات وقاموس PRICES لأسعار القوائم مع رابط كل صفحة، ثم دالة لكل منصة تحسب بنود فاتورتها. والملف كاملاً كما يلي:
# Monthly observability bill for one sample company, from public list prices (USD, checked 2026-10-23).
# Run: python bill.py
# Every number below is either a list price from the vendor's page (PRICES) or an assumption (COMPANY).
# Change the assumptions to match your own systems; list prices exclude negotiated discounts and taxes.
HOURS = 730 # hours in an average month
DAYS = 30
COMPANY = {
"hosts": 20, # VMs, 4 vCPU / 16 GiB each
"host_gib": 16,
"apm_hosts": 12, # hosts that run instrumented services (traces)
"logs_gb_day": 20,
"log_event_kb": 1.0, # average log event size: 1 GB = 1,000,000 events
"traces_gb_day": 5,
"span_kb": 1.0,
"indexed_span_share": 0.10, # share of spans kept for search (Datadog indexed spans)
"custom_metrics": 3000, # metric name + tag value combinations from the applications
"active_series": 23000, # 20 hosts x 1,000 host series + 3,000 application series
"scrape_interval_s": 60,
"other_gb_month": 40, # metrics and events as ingested GB (New Relic), assumption
"full_users": 4, # on-call engineers who need the whole platform
"core_users": 6, # developers who read logs and errors
"scanned_gb_month": 3000, # GB read by log queries per month (Dynatrace pay-per-query)
"eng_hours_month": 20, # time to run the self-hosted stack (updates, disk, backups, alerts)
"eng_rate_usd": 60,
}
PRICES = {
# https://www.datadoghq.com/pricing/list/ (annual / on-demand)
"dd_infra_pro": (15, 18), "dd_apm": (31, 36), "dd_cm_per_100": 5,
"dd_cm_included_per_host": 100,
"dd_log_ingest_gb": 0.10, "dd_log_index_15d_m": (1.70, 2.55),
"dd_span_ingest_incl_gb_per_host": 150, "dd_span_index_incl_m_per_host": 1,
"dd_span_index_15d_m": (1.70, 2.55),
# https://newrelic.com/pricing
"nr_free_gb": 100, "nr_gb": 0.40, "nr_full_pro": 349, "nr_core": 49,
# https://www.dynatrace.com/pricing/
"dt_fullstack_gib_hour": 0.01, "dt_infra_host_hour": 0.04,
"dt_log_ingest_gib": 0.20, "dt_log_retain_gib_day": 0.0007, "dt_log_query_gib": 0.0035,
# https://grafana.com/pricing/ (Pro, "starts at")
"gc_platform": 19, "gc_series_incl": 10000, "gc_per_1k_series": 6.50,
"gc_logs_incl_gb": 50, "gc_traces_incl_gb": 50, "gc_gb": 0.05 + 0.40 + 0.10, # process + write + retain
"gc_app_o11y_host_hour": 0.025, "gc_users_incl": 3, "gc_user": 8,
# https://signoz.io/pricing/ (Cloud Teams, 15 days logs/traces, 1 month metrics)
"sz_min": 49, "sz_logs_gb": 0.30, "sz_traces_gb": 0.30, "sz_per_m_samples": 0.10,
# https://www.hetzner.com/dedicated-rootserver/ax102/ and /storage/storage-box/ (EUR, excl. VAT)
"hz_ax102_eur": 259.00, "hz_ax102_setup_eur": 129.00, "hz_bx21_eur": 10.90,
"eur_usd": 1.1205, # ECB reference rate, 2026-10-22
# AWS Price List API, AWSDataTransfer, me-south-1 (Bahrain), first 10 TB to the internet
"aws_bahrain_egress_gb": 0.117, "aws_free_egress_gb": 100,
}
def volumes(c):
logs_gb = c["logs_gb_day"] * DAYS
traces_gb = c["traces_gb_day"] * DAYS
return {
"logs_gb": logs_gb,
"log_events_m": logs_gb * 1e6 / c["log_event_kb"] / 1e6,
"traces_gb": traces_gb,
"indexed_spans_m": traces_gb * 1e6 / c["span_kb"] * c["indexed_span_share"] / 1e6,
"samples_m": c["active_series"] * (60 / c["scrape_interval_s"]) * 60 * HOURS / 1e6,
}
def datadog(c, p, plan=0, billed_hosts=None, billed_apm=None):
v = volumes(c)
hosts = billed_hosts or c["hosts"]
apm = billed_apm or c["apm_hosts"]
extra_cm = max(0, c["custom_metrics"] - hosts * p["dd_cm_included_per_host"])
extra_spans = max(0, v["indexed_spans_m"] - apm * p["dd_span_index_incl_m_per_host"])
lines = {
"Infrastructure Pro": hosts * p["dd_infra_pro"][plan],
"APM": apm * p["dd_apm"][plan],
"Custom Metrics": extra_cm / 100 * p["dd_cm_per_100"],
"Logs ingest": v["logs_gb"] * p["dd_log_ingest_gb"],
"Logs index 15d": v["log_events_m"] * p["dd_log_index_15d_m"][plan],
"Indexed spans": extra_spans * p["dd_span_index_15d_m"][plan],
}
return lines
def newrelic(c, p):
v = volumes(c)
gb = v["logs_gb"] + v["traces_gb"] + c["other_gb_month"]
return {
"Data ingest": max(0, gb - p["nr_free_gb"]) * p["nr_gb"],
"Full platform users (Pro)": c["full_users"] * p["nr_full_pro"],
"Core users": c["core_users"] * p["nr_core"],
}
def dynatrace(c, p, fullstack_hosts=None, infra_hosts=None):
v = volumes(c)
fs = fullstack_hosts if fullstack_hosts is not None else c["apm_hosts"]
infra = infra_hosts if infra_hosts is not None else c["hosts"] - c["apm_hosts"]
stored_gib_days = c["logs_gb_day"] * 15 * DAYS # steady state with 15 days retention
return {
"Full-Stack (GiB-hours)": fs * c["host_gib"] * HOURS * p["dt_fullstack_gib_hour"],
"Infrastructure (host-hours)": infra * HOURS * p["dt_infra_host_hour"],
"Logs ingest": v["logs_gb"] * p["dt_log_ingest_gib"],
"Logs retain 15d": stored_gib_days * p["dt_log_retain_gib_day"],
"Logs query": c["scanned_gb_month"] * p["dt_log_query_gib"],
}
def grafana_cloud(c, p, host_hours=None):
v = volumes(c)
hh = host_hours if host_hours is not None else c["apm_hosts"] * HOURS
return {
"Platform fee": p["gc_platform"],
"Metrics series": max(0, c["active_series"] - p["gc_series_incl"]) / 1000 * p["gc_per_1k_series"],
"Logs": max(0, v["logs_gb"] - p["gc_logs_incl_gb"]) * p["gc_gb"],
"Traces": max(0, v["traces_gb"] - p["gc_traces_incl_gb"]) * p["gc_gb"],
"App Observability hosts": hh * p["gc_app_o11y_host_hour"],
"Users": max(0, c["full_users"] + c["core_users"] - p["gc_users_incl"]) * p["gc_user"],
}
def signoz_cloud(c, p):
v = volumes(c)
usage = {
"Logs": v["logs_gb"] * p["sz_logs_gb"],
"Traces": v["traces_gb"] * p["sz_traces_gb"],
"Metrics samples": v["samples_m"] * p["sz_per_m_samples"],
}
if sum(usage.values()) < p["sz_min"]:
usage["Minimum"] = p["sz_min"] - sum(usage.values())
return usage
def self_hosted(c, p):
eur = p["hz_ax102_eur"] + p["hz_ax102_setup_eur"] / 12 + p["hz_bx21_eur"]
return {
"Server AX102 + Storage Box (EUR %.2f)" % eur: eur * p["eur_usd"],
"Engineer time (assumption)": c["eng_hours_month"] * c["eng_rate_usd"],
}
def show(title, lines):
total = sum(lines.values())
print(f"\n{title}: ${total:,.0f}")
for k, val in lines.items():
print(f" {k:<40} ${val:>9,.2f}")
return total
if __name__ == "__main__":
c, p = COMPANY, PRICES
v = volumes(c)
print("Volumes per month:", {k: round(x, 1) for k, x in v.items()})
totals = {
"Datadog (annual)": show("Datadog, billed annually", datadog(c, p, 0)),
"Datadog (on-demand)": show("Datadog, on-demand", datadog(c, p, 1)),
"New Relic Pro": show("New Relic Pro", newrelic(c, p)),
"Dynatrace": show("Dynatrace (rate card, before commit discounts)", dynatrace(c, p)),
"Grafana Cloud Pro": show("Grafana Cloud Pro", grafana_cloud(c, p)),
"SigNoz Cloud": show("SigNoz Cloud", signoz_cloud(c, p)),
"Self-hosted": show("Self-hosted SigNoz or Grafana stack", self_hosted(c, p)),
}
print("\nSummary (USD per month):")
for k, t in totals.items():
print(f" {k:<22} ${t:>8,.0f}")
infra = self_hosted(c, p)
server_usd = list(infra.values())[0]
print("\nEngineer hours per month at which self-hosting costs the same:")
for k in ["Datadog (annual)", "New Relic Pro", "Dynatrace", "Grafana Cloud Pro", "SigNoz Cloud"]:
print(f" {k:<22} {max(0, totals[k] - server_usd) / c['eng_rate_usd']:>6.1f} h")
print("\nTraps (extra USD per month):")
# 1) one metric gets a customer_id tag: 20 endpoints x 5 status codes x 500 customers
new = 20 * 5 * 500
c2 = dict(c, custom_metrics=c["custom_metrics"] + new, active_series=c["active_series"] + new)
print(f" +{new:,} series from a customer_id tag:")
print(f" Datadog annual +${sum(datadog(c2, p).values()) - sum(datadog(c, p).values()):,.0f}")
print(f" Grafana Cloud +${sum(grafana_cloud(c2, p).values()) - sum(grafana_cloud(c, p).values()):,.0f}")
print(f" SigNoz Cloud +${sum(signoz_cloud(c2, p).values()) - sum(signoz_cloud(c, p).values()):,.0f}")
# 2) debug logs left on for 7 days: logs double for a week
c3 = dict(c, logs_gb_day=c["logs_gb_day"] + c["logs_gb_day"] * 7 / DAYS)
print(" DEBUG logs left on for 7 days (logs x2 for a week):")
for name, fn in [("Datadog annual", lambda x: datadog(x, p)), ("New Relic Pro", lambda x: newrelic(x, p)),
("Grafana Cloud", lambda x: grafana_cloud(x, p)), ("SigNoz Cloud", lambda x: signoz_cloud(x, p))]:
print(f" {name:<16} +${sum(fn(c3).values()) - sum(fn(c).values()):,.0f}")
# 3) autoscaling: 20 more hosts (with APM) for 3 days = 72 hours, more than 1% of the month
print(" Autoscaling: +20 hosts with APM for 72 hours:")
dd_extra = sum(datadog(c, p, 0, billed_hosts=40, billed_apm=32).values()) - sum(datadog(c, p).values())
print(f" Datadog annual +${dd_extra:,.0f} (billed on the 99th percentile hour: 40 hosts all month)")
dt_extra = 20 * c["host_gib"] * 72 * p["dt_fullstack_gib_hour"]
print(f" Dynatrace +${dt_extra:,.0f} (billed by the hour)")
gc_extra = 20 * 72 * p["gc_app_o11y_host_hour"]
print(f" Grafana Cloud +${gc_extra:,.0f} (billed by the hour)")
# 4) egress: sending all telemetry out of AWS Bahrain to a SaaS endpoint
gb_out = v["logs_gb"] + v["traces_gb"] + c["other_gb_month"]
print(f" Egress from AWS Bahrain for {gb_out:.0f} GB: +${(gb_out - p['aws_free_egress_gb']) * p['aws_bahrain_egress_gb']:,.0f}"
" (if the free 100 GB is not used elsewhere)")نشغله بالأمر التالي:
python bill.pyوالمخرج سوف يكون كما يلي:
Volumes per month: {'logs_gb': 600, 'log_events_m': 600.0, 'traces_gb': 150, 'indexed_spans_m': 15.0, 'samples_m': 1007.4}
Datadog, billed annually: $1,807
Infrastructure Pro $ 300.00
APM $ 372.00
Custom Metrics $ 50.00
Logs ingest $ 60.00
Logs index 15d $ 1,020.00
Indexed spans $ 5.10
Datadog, on-demand: $2,440
Infrastructure Pro $ 360.00
APM $ 432.00
Custom Metrics $ 50.00
Logs ingest $ 60.00
Logs index 15d $ 1,530.00
Indexed spans $ 7.65
New Relic Pro: $1,966
Data ingest $ 276.00
Full platform users (Pro) $ 1,396.00
Core users $ 294.00
Dynatrace (rate card, before commit discounts): $1,772
Full-Stack (GiB-hours) $ 1,401.60
Infrastructure (host-hours) $ 233.60
Logs ingest $ 120.00
Logs retain 15d $ 6.30
Logs query $ 10.50
Grafana Cloud Pro: $736
Platform fee $ 19.00
Metrics series $ 84.50
Logs $ 302.50
Traces $ 55.00
App Observability hosts $ 219.00
Users $ 56.00
SigNoz Cloud: $326
Logs $ 180.00
Traces $ 45.00
Metrics samples $ 100.74
Self-hosted SigNoz or Grafana stack: $1,514
Server AX102 + Storage Box (EUR 280.65) $ 314.47
Engineer time (assumption) $ 1,200.00
Summary (USD per month):
Datadog (annual) $ 1,807
Datadog (on-demand) $ 2,440
New Relic Pro $ 1,966
Dynatrace $ 1,772
Grafana Cloud Pro $ 736
SigNoz Cloud $ 326
Self-hosted $ 1,514
Engineer hours per month at which self-hosting costs the same:
Datadog (annual) 24.9 h
New Relic Pro 27.5 h
Dynatrace 24.3 h
Grafana Cloud Pro 7.0 h
SigNoz Cloud 0.2 h
Traps (extra USD per month):
+50,000 series from a customer_id tag:
Datadog annual +$2,500
Grafana Cloud +$325
SigNoz Cloud +$219
DEBUG logs left on for 7 days (logs x2 for a week):
Datadog annual +$252
New Relic Pro +$56
Grafana Cloud +$77
SigNoz Cloud +$42
Autoscaling: +20 hosts with APM for 72 hours:
Datadog annual +$865 (billed on the 99th percentile hour: 40 hosts all month)
Dynatrace +$230 (billed by the hour)
Grafana Cloud +$36 (billed by the hour)
Egress from AWS Bahrain for 790 GB: +$81 (if the free 100 GB is not used elsewhere)في المخرج أعلاه لاحظ التالي:
- البند الأكبر يختلف من منصة لأخرى: في Datadog فهرسة السجلات 1,020 دولاراً من أصل 1,807، وفي New Relic المستخدمون 1,690 من أصل 1,966، وفي Dynatrace ذاكرة السيرفرات 1,402 من أصل 1,772. فإذا أردت أن تخفض الفاتورة فابدأ بالبند الأكبر عند منصتك، لا بعدد السيرفرات.
- الدفع عند الطلب أغلى بنحو الثلث في Datadog: 2,440 دولاراً مقابل 1,807 بالالتزام السنوي، والسبب أن سعر الفهرسة يرتفع من 1.70 إلى 2.55 دولار لكل مليون سجل.
- المنصات التي تحاسب على البيانات فقط أرخص بكثير في هذا الحجم: Grafana Cloud بـ 736 دولاراً، منها 219 لمراقبة التطبيقات الاختيارية، وSigNoz Cloud بـ 326 دولاراً.
- رقم Dynatrace سعر القائمة قبل خصم الالتزام السنوي: ورقم Grafana Cloud قبل الخصم التلقائي للحجم، ورقم Datadog وNew Relic قبل أي تفاوض، فاعتبر الأرقام سقفاً تبدأ منه المفاوضة، لا ما ستدفعه بالضرورة.
الاستضافة الذاتية Self-Hosting: السيرفر رخيص والوقت ليس كذلك
الآن سوف نحسب الطرف الآخر، أي أن تشغل SigNoz أو مجموعة Grafana مع Loki وPrometheus على سيرفرك للبيانات نفسها. والتكلفة هنا بندان: السيرفر، ووقت المهندس الذي يشغله.
أما السيرفر فاخترنا من قائمة أسعار Hetzner سيرفراً مخصصاً AX102 بمعالج AMD Ryzen 9 7950X3D وذاكرة 128 GB وقرصين NVMe بسعة 1.92 TB لكل منهما، بسعر 259 يورو شهرياً قبل الضريبة مع رسوم تجهيز 129 يورو مرة واحدة وزعناها على 12 شهراً، وأضفنا Storage Box BX21 بـ 10.90 يورو للنسخ الاحتياطي Backup، وحولنا اليورو إلى الدولار بسعر البنك المركزي الأوروبي في 22 أكتوبر 2026 وهو 1.1205، فكانت النتيجة 314 دولاراً شهرياً. والسجلات في حفظ 15 يوماً تحتاج نحو 300 GB قبل الضغط، والتتبع نحو 75 GB، فالقرص يكفي حتى لو لم نحسب الضغط الذي تقوم به ClickHouse في SigNoz أو Loki في مجموعة Grafana.
وأما وقت المهندس فهو افتراض صريح، وضعناه 20 ساعة شهرياً بسعر 60 دولاراً للساعة، أي 1,200 دولار. وهذه الساعات تذهب في التحديثات Upgrades، ومراقبة امتلاء القرص، واختبار استعادة النسخة الاحتياطية، وضبط التنبيهات، والتحقيق عندما تتعطل أداة المراقبة نفسها في وقت تحتاجها فيه. ولأن هذا الرقم يختلف كثيراً بين فريق وآخر، يحسب السكربت عدد الساعات الذي تتساوى عنده التكلفة مع كل منصة:
| المنصة | فاتورتها الشهرية | ساعات المهندس التي تجعل الاستضافة الذاتية بالتكلفة نفسها |
|---|---|---|
| Datadog (سنوي) | 1,807 دولارات | 24.9 ساعة |
| New Relic Pro | 1,966 دولاراً | 27.5 ساعة |
| Dynatrace | 1,772 دولاراً | 24.3 ساعة |
| Grafana Cloud Pro | 736 دولاراً | 7 ساعات |
| SigNoz Cloud | 326 دولاراً | أقل من ساعة |
وهذا يعني أنه أمام Datadog وNew Relic وDynatrace، تكون الاستضافة الذاتية أرخص ما دام فريقك يحتاج أقل من نحو 25 ساعة شهرياً لتشغيلها، وهذا ممكن لفريق يعرف ClickHouse أو Loki جيداً. وأما أمام SigNoz Cloud فالاستضافة الذاتية لا توفر شيئاً في هذا الحجم، لأن السيرفر وحده يكلف تقريباً ما تكلفه الخدمة المستضافة كاملة، فإذا اخترتها فاخترها لسبب آخر غير التكلفة، مثل مكان البيانات كما سيأتي.
فخاخ الفاتورة Billing Traps
الفاتورة المحسوبة أعلاه لشهر هادئ، والمشكلة أن الفاتورة لا تكبر عادة بنمو بطيء، وإنما بقرار صغير من مطور أو بحدث في البنية لا ينتبه له أحد. والجزء الأخير من السكربت يحسب أربعة منها.
وسم Tag واحد بقيم كثيرة
لنفرض أن لديك مقياساً لعدد الطلبات http_requests_total بوسمين: المسار endpoint بعشرين قيمة، والحالة status بخمس قيم، أي 100 سلسلة. ثم أضاف مطور وسم customer_id ليعرف طلبات كل عميل، ولديك 500 عميل، فأصبح المقياس 50 ألف سلسلة، والشكل التالي يبين ما يحدث للفاتورة:

وفي Datadog بالذات تكون الزيادة 2,500 دولار شهرياً، أي أكثر من الفاتورة كلها قبل الوسم، والسبب أن كل تركيبة من قيم الوسوم مقياس مخصص بـ 5 دولارات لكل 100، كما يشرح توثيق المقاييس المخصصة بأمثلة. وفي Grafana Cloud تحاسب على السلاسل النشطة كما في شرح فاتورة المقاييس. والقاعدة هنا: لا تقم بوضع معرف العميل أو الطلب أو المستخدم في وسوم المقاييس، والسبب أن عدد قيمه غير محدود، وضعه بدلاً من ذلك في السجلات والتتبع حيث تبحث عنه عند الحاجة، وهي القاعدة نفسها التي رأيناها في دليل Loki عندما رفض الإدخال بعد أن أصبح معرف الطلب تسمية Label.
سجلات DEBUG التي نسيها أحدهم
يفعل مطور مستوى السجلات DEBUG لتتبع مشكلة في الإنتاج، ثم ينسى إعادته أسبوعاً، فتتضاعف السجلات سبعة أيام. وعند حسابها في السكربت تكون الزيادة 252 دولاراً في Datadog، و56 في New Relic، و77 في Grafana Cloud، و42 في SigNoz Cloud. والفرق الكبير في Datadog سببه الفهرسة، فكل سطر مفهرس يكلف 1.70 دولار لكل مليون، ولذلك اجعل فلاتر الاستبعاد في الفهارس تستبعد مستوى DEBUG افتراضياً، وراجع ما شرحناه في السجلات للمطورين عن مستويات السجل وما يستحق أن يسجل.
سيرفرات APM مع التوسع التلقائي Autoscaling
لنفرض أن حملة تسويقية رفعت عدد السيرفرات من 20 إلى 40 لمدة ثلاثة أيام، وكلها تشغل خدمات متتبعة. ثلاثة أيام هي 72 ساعة، وهذا أكثر من 1% من ساعات الشهر وهي نحو 7 ساعات، فيعد Datadog أعلى عدد بعد استبعاد هذه الساعات السبع، أي 40 سيرفراً للشهر كله، فتزيد الفاتورة 865 دولاراً للبنية وال APM. وأما Dynatrace وGrafana Cloud فيحاسبان بالساعة، فتكون الزيادة 230 و36 دولاراً على الترتيب. ولذلك إذا كانت بنيتك تتوسع تلقائياً فاسأل قبل الشراء: كيف تعد المنصة السيرفر؟ بالساعة أم بأعلى عدد في الشهر؟
رسوم خروج البيانات Egress
هذا البند لا يظهر في فاتورة منصة المراقبة أصلاً، وإنما في فاتورة السحابة التي تعمل عليها سيرفراتك، لأن الوكيل يرسل كل الإشارات إلى خارج السحابة. فإذا كانت سيرفراتك في منطقة AWS في البحرين me-south-1، فسعر الخروج إلى الإنترنت في أول 10 TB هو 0.117 دولار لكل GB كما في صفحة أسعار EC2 وواجهة أسعار AWS، بعد 100 GB مجانية في الشهر لكل الحساب، فيكون إرسال 790 GB نحو 81 دولاراً شهرياً إذا لم تكن ال 100 GB المجانية مستهلكة في شيء آخر. والبند نفسه يظهر إذا شغلت المراقبة على سيرفر خارج سحابتك، ويختفي إذا كانت المراقبة في الشبكة نفسها، وقد فصلنا هذا النوع من التكاليف في التكاليف الخفية في السحابة.
أين تحفظ بياناتك؟ توطين البيانات Data Residency
السجلات والتتبع تحمل غالباً بيانات شخصية دون أن يقصد أحد ذلك: عنوان IP، والبريد في رسالة خطأ، ومعرف المستخدم في الطلب، وقد رأينا في دليل تتبع الأخطاء كيف تصل البطاقة والبريد إلى الأحداث. لذلك فالسؤال عن مكان حفظ البيانات ليس سؤالاً نظرياً، والجدول التالي من صفحات المناطق الرسمية لكل منصة:
| المنصة | مناطق حفظ البيانات | في الشرق الأوسط |
|---|---|---|
| Datadog | ثلاثة مواقع في الولايات المتحدة، والاتحاد الأوروبي (ألمانيا)، واليابان، وأستراليا، والمملكة المتحدة، وموقعان حكوميان أمريكيان، كما في صفحة المواقع Sites | لا يوجد |
| New Relic | الولايات المتحدة افتراضياً، والاتحاد الأوروبي، واليابان، ولا تنقل البيانات بين المناطق، كما في صفحة مراكز البيانات | لا يوجد |
| Dynatrace | مناطق في AWS وAzure وGoogle Cloud، وأغلبها عند الطلب، كما في صفحة ضوابط أمن البيانات | الإمارات على Azure وتل أبيب على AWS، وكلاهما عند الطلب |
| Grafana Cloud | مناطق كثيرة في AWS وGoogle Cloud وAzure، كما في صفحة المناطق | الإمارات على Azure uaenorth، ومنطقة AWS في الإمارات متوقفة مؤقتاً |
| SigNoz Cloud | الولايات المتحدة والاتحاد الأوروبي والهند، كما في صفحة الأسعار | لا يوجد |
| الاستضافة الذاتية | حيث تضع سيرفرك | داخل المملكة إذا أردت |
ولا توجد منطقة داخل المملكة عند أي من المنصات الخمس في صفحاتها الرسمية بتاريخ كتابة هذا المقال. وأما التنظيم، فقد حذف الإصداران ECC-2:2024 وCCC-2:2024 من الهيئة الوطنية للأمن السيبراني ضوابط توطين البيانات (ومنها 4-2-3-3 في ECC) وأحالاها إلى مكتب إدارة البيانات الوطنية NDMO في سدايا، كما يقول جدول التحديثات في آخر وثيقة ECC. وإذا كانت السجلات تحمل بيانات شخصية فإن نظام حماية البيانات الشخصية ولائحة نقل البيانات الشخصية خارج المملكة تضعان شروطاً على نقلها إلى الخارج. ولا نقدم هنا رأياً قانونياً، وإنما نقول للفريق التقني: قبل أن ترسل السجلات إلى منصة خارج المملكة، اعرض المسألة على مسؤول حماية البيانات في جهتك، وإذا كانت الجهة حكومية أو تشغل بنية حساسة فالغالب أن الجواب استضافة المراقبة داخل المملكة.
متى تختار كل خيار؟
| الخيار | نقاط القوة | نقاط الضعف | يناسب |
|---|---|---|---|
| Datadog | أوسع مجموعة منتجات وتكاملات، وكل منتج يشترى وحده | عدادات كثيرة يصعب توقعها، والفهرسة والمقاييس المخصصة تكبر بسرعة، ولا منطقة في الشرق الأوسط | فريق بميزانية واضحة ومن يراقب الاستهلاك أسبوعياً |
| New Relic | البيانات رخيصة، و100 GB مجانية شهرياً، والسيرفرات لا تعد | المستخدم الكامل غال في خطة Pro، والفاتورة تكبر مع الفريق | فريق صغير ببيانات كثيرة، أو من يختار نموذج Compute |
| Dynatrace | مراقبة كاملة وتحليل السبب الجذري، ولا غرامات على تجاوز الالتزام | التزام سنوي غير معلن، والسيرفر الكبير يكلف أكثر لأن الحساب بالذاكرة | مؤسسة كبيرة تشتري بعقد سنوي |
| Grafana Cloud | رسوم منصة صغيرة، وأدوات مفتوحة يمكنك الخروج منها إلى استضافة ذاتية، ومنطقة في الإمارات | ثلاثة بنود لكل GB، والسلاسل النشطة تحتاج انضباطاً في الوسوم | من يستخدم Prometheus وLoki أصلاً |
| SigNoz Cloud | أبسط تسعير، ولا رسوم على المستخدمين والسيرفرات، والأداة نفسها مفتوحة المصدر | لا منطقة في الشرق الأوسط، ومنتجاته أقل من المنصات الكبيرة | فريق يريد OpenTelemetry بتكلفة متوقعة |
| الاستضافة الذاتية | البيانات حيث تريد، والتكلفة شبه ثابتة مع نمو البيانات حتى يمتلئ السيرفر | وقت المهندس، والتوافرية العالية عليك، وأداة المراقبة نفسها تحتاج مراقبة | جهة لديها متطلبات توطين، أو حجم بيانات كبير وفريق تشغيل |
وفي دليل تتبع الأخطاء قارنا خدمات تتبع الأخطاء المستضافة مثل Sentry وRollbar بالطريقة نفسها، فإذا كانت حاجتك الأولى أخطاء التطبيق لا المراقبة الكاملة، فقد تكفيك أداة أصغر بكثير من كل ما سبق.
الخلاصة
وصلنا لنهاية الموضوع، وأهم ما فيه:
- لا تقارن المنصات بسعر السيرفر في الصفحة الأولى، وإنما بوحدة القياس التي تكبر في نظامك: الفهرسة في Datadog، والمستخدمون في New Relic، والذاكرة في Dynatrace، والـ GB والسلاسل في Grafana Cloud وSigNoz Cloud.
- لشركة بعشرين سيرفراً و20 GB من السجلات يومياً وعشرة مهندسين، كانت فواتير القوائم بين 1,772 و1,966 دولاراً شهرياً للمنصات الثلاث الكبيرة، و736 لـ Grafana Cloud، و326 لـ SigNoz Cloud.
- السيرفر الذي يشغل الشيء نفسه بنفسك يكلف نحو 314 دولاراً، والقرار يحسمه وقت المهندس: أقل من 25 ساعة شهرياً يجعل الاستضافة الذاتية أرخص من المنصات الكبيرة، وأمام SigNoz Cloud لا توفير في هذا الحجم.
- وسم واحد بقيم كثيرة أضاف 2,500 دولار في Datadog، والتوسع التلقائي ثلاثة أيام أضاف 865، فضع حدوداً وتنبيهات للاستهلاك قبل أن تحتاجها.
- لا توجد منطقة داخل المملكة عند أي منها، فإذا كانت سجلاتك تحمل بيانات شخصية أو كانت جهتك حكومية، فالاستضافة الذاتية داخل المملكة هي السبب الأقوى لاختيارها، أكثر من التكلفة.
دليلSigNoz: بديل Datadog مفتوح المصدر Open Source على سيرفرككيف تشغل SigNoz وترسل إليه التتبع والسجلات والمقاييس عبر OpenTelemetry، وما الذي يقدمه فعلاً مقابل Datadog وبكم من الذاكرة.
دليلأي أداة لسجلاتك المركزية؟ مقارنة بالأرقام على البيانات نفسهاأدخلنا 500 ألف حدث في Loki وGraylog وSeq وOpenSearch، وقارنا التخزين والذاكرة والبحث بالعربية والتكلفة ومن يناسبه كل منها.
دليلمفاهيم المراقبة Observability: من الإشارة إلى التنبيهما الذي تجيب عنه المقاييس والسجلات والتتبع، وكيف تبني تنبيهاً على ما يشعر به المستخدم وعلى ميزانية الأخطاء بدل كل رقم.سجل التحديثات
- أكتوبر 2026: كتابة المقال وحساب الفواتير بأسعار القوائم المنشورة في 23 أكتوبر 2026 لكل من Datadog وNew Relic وDynatrace وGrafana Cloud وSigNoz Cloud وHetzner، وسعر صرف البنك المركزي الأوروبي في 22 أكتوبر 2026.