مراقبة تطبيقات Go: المقاييس والتنبيهات - دليل شامل

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

مراقبة تطبيقات Go: المقاييس والتنبيهات من الألف إلى الياء

\n\n

في تطوير البرمجيات الحديثة، المراقبة ليست رفاهية بل ضرورة. بالنسبة لتطبيقات Go (Golang)، التي تُستخدم غالبًا في الخدمات المصغرة عالية التحميل والمشاريع البنية التحتية، تتيح المراقبة المُعدة بشكل صحيح اكتشاف المشكلات في الوقت المناسب، وتحسين الأداء، وضمان التشغيل المستقر. في هذه المقالة، سنشرح كيفية إعداد مراقبة تطبيقات Go من الصفر: من جمع المقاييس الأساسية إلى إعداد التنبيهات والتصور في Grafana.

\n\n

لماذا تعتبر المراقبة مهمة لتطبيقات Go؟

\n\n

Go هي لغة مُجمّعة مع دعم مدمج للتزامن. غالبًا ما تعمل تطبيقات Go في أنظمة حيوية: من بوابات API إلى قواعد البيانات. بدون مراقبة، فإنك تخاطر بـ:

\n
    \n
  • تفويت تسرب الذاكرة أو goroutines
  • \n
  • عدم ملاحظة تدهور الأداء
  • \n
  • فقدان البيانات بسبب الأخطاء غير المعالجة
  • \n
  • التعرض لتوقف العمل بسبب نقص الموارد
  • \n
\n\n

تمنحك المراقبة الصحيحة صورة كاملة عن صحة التطبيق: من استخدام CPU والذاكرة إلى وقت الاستجابة ومعدل الأخطاء.

\n\n

المقاييس الأساسية لمراقبة Go

\n\n

قبل الانتقال إلى الأدوات، دعنا نحدد المقاييس الحيوية لتطبيقات Go:

\n\n

المقاييس النظامية

\n
    \n
  • CPU usage — تحميل المعالج
  • \n
  • Memory usage — استهلاك الذاكرة (بما في ذلك heap و stack)
  • \n
  • Goroutines count — عدد goroutines النشطة
  • \n
  • GC stats — إحصائيات جامع القمامة (الوقت، عدد الدورات)
  • \n
  • Open file descriptors — عدد واصفات الملفات المفتوحة
  • \n
\n\n

المقاييس التجارية

\n
    \n
  • Request latency — وقت الاستجابة (p50, p95, p99)
  • \n
  • Request rate — عدد الطلبات في الثانية
  • \n
  • Error rate — نسبة الأخطاء
  • \n
  • Database connection pool — حالة تجمع الاتصالات
  • \n
\n\n

أدوات مراقبة Go

\n\n

المكدس القياسي لمراقبة تطبيقات Go يشمل:

\n
    \n
  • Prometheus — نظام جمع وتخزين المقاييس
  • \n
  • Grafana — التصور ولوحات المعلومات
  • \n
  • Alertmanager — إدارة التنبيهات
  • \n
  • مكتبات عميل Go — لتصدير المقاييس
  • \n
\n\n

إعداد جمع المقاييس في Go باستخدام Prometheus

\n\n

لنبدأ بالتطبيق العملي. لتصدير المقاييس من تطبيق Go، سنستخدم المكتبة الرسمية prometheus/client_golang.

\n\n

الخطوة 1: تثبيت التبعيات

\n
go get github.com/prometheus/client_golang/prometheus\ngo get github.com/prometheus/client_golang/prometheus/promhttp
\n\n

الخطوة 2: خادم HTTP أساسي مع المقاييس

\n\n
package main\n\nimport (\n    "net/http"\n    "github.com/prometheus/client_golang/prometheus"\n    "github.com/prometheus/client_golang/prometheus/promhttp"\n)\n\nvar (\n    httpRequestsTotal = prometheus.NewCounterVec(\n        prometheus.CounterOpts{\n            Name: "http_requests_total",\n            Help: "Total number of HTTP requests",\n        },\n        []string{"method", "endpoint", "status"},\n    )\n\n    httpRequestDuration = prometheus.NewHistogramVec(\n        prometheus.HistogramOpts{\n            Name:    "http_request_duration_seconds",\n            Help:    "Histogram of HTTP request durations",\n            Buckets: prometheus.DefBuckets,\n        },\n        []string{"method", "endpoint"},\n    )\n)\n\nfunc init() {\n    prometheus.MustRegister(httpRequestsTotal)\n    prometheus.MustRegister(httpRequestDuration)\n}\n\nfunc main() {\n    http.Handle("/metrics", promhttp.Handler())\n    \n    http.HandleFunc("/api/users", func(w http.ResponseWrit                

المدونات

توصيات الكتب