مراقبة تطبيقات TypeScript: المكتبات والأدوات والإعداد

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

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

ابدأ الدورة

مراقبة تطبيقات TypeScript: دليل شامل للأدوات والمكتبات



المراقبة هي جزء لا يتجزأ من تطوير تطبيقات الويب الحديثة باستخدام TypeScript. بدونها، تعمل بشكل أعمى: تبقى الأخطاء غير مكتشفة، وينخفض الأداء، ويغادر المستخدمون. في هذه المقالة، سنستعرض المكتبات والأدوات الرئيسية لمراقبة تطبيقات TypeScript، بما في ذلك Sentry وOpenTelemetry وPrometheus والتسجيل المدمج. ستتعلم كيفية إعداد جمع الأخطاء والمقاييس والتتبع في الوقت الفعلي.



1. Sentry: تتبع الأخطاء في الوقت الفعلي



Sentry هي المنصة الأكثر شيوعًا لمراقبة الأخطاء. وهي تدعم TypeScript بشكل افتراضي وتتيح لك اكتشاف الاستثناءات، وتسجيل سياق التنفيذ، وتلقي الإشعارات عند حدوث أعطال.



التثبيت والإعداد الأساسي



npm install @sentry/node @sentry/tracing


مثال على تهيئة Sentry في تطبيق TypeScript على Node.js:



import * as Sentry from "@sentry/node";import { ProfilingIntegration } from "@sentry/profiling-node";

Sentry.init({ dsn: "https://examplePublicKey@o0.ingest.sentry.io/0", integrations: [ new ProfilingIntegration(), ], tracesSampleRate: 1.0, profilesSampleRate: 1.0,});

// إرسال خطأ قسريapp.get("/debug-sentry", function mainHandler(req, res) { throw new Error("خطأ اختباري من Sentry!");});


تسجيل السياق



يتيح لك Sentry إضافة علامات وسياقات مخصصة:



Sentry.setUser({ email: "user@example.com" });Sentry.setTag("environment", "production");Sentry.captureException(new Error("خطأ أثناء معالجة الطلب"));


2. OpenTelemetry: معيار للتتبع والمقاييس



OpenTelemetry هو معيار مفتوح لجمع بيانات القياس عن بُعد: التتبعات والمقاييس والسجلات. وهو يدعم TypeScript ويتكامل بسهولة مع أي أنظمة خلفية (Jaeger, Zipkin, Prometheus).



تثبيت الحزم



npm install @opentelemetry/api @opentelemetry/sdk-node @opentelemetry/instrumentation-http @opentelemetry/instrumentation-express


مثال على إعداد التتبع



import { NodeSDK } from "@opentelemetry/sdk-node";import { getNodeAutoInstrumentations } from "@opentelemetry/auto-instrumentations-node";import { ConsoleSpanExporter } from "@opentelemetry/sdk-trace-node";

const sdk = new NodeSDK({ traceExporter: new ConsoleSpanExporter(), instrumentations: [getNodeAutoInstrumentations()],});

sdk.start();


الآن، سيتم تغليف كل طلب HTTP تلقائيًا في span مع بيانات وصفية. يمكنك إضافة spans مخصصة:



import { trace } from "@opentelemetry/api";

const tracer = trace.getTracer("my-service");

app.get("/api/data", async (req, res) => { const span = tracer.startSpan("processData"); try { const data = await fetchData(); span.setAttribute("data.size", data.length); res.json(data); } finally { span.end(); }});


3. Prometheus + express-prom-bundle: مقاييس لـ Node.js



لجمع مقاييس الأداء (RPS، وقت الاستجابة، عدد الأخطاء)، استخدم Prometheus مع مكتبة express-prom-bundle. وهي تجمع تلقائيًا المقاييس من تطبيقات Express.



التثبيت



npm install prom-client express-prom-bundle


مثال على الإعداد



import express from "express";import promBundle from "express-prom-bundle";

const app = express();

const metricsMiddleware = promBundle({ includeMethod: true, includePath: true, includeStatusCode: true, customLabels: { project: "my-app" }, metricsPath: "/metrics",});

app.use(metricsMi

توصيات