"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > NestJS + القياس المفتوح (Grafana Cloud)

NestJS + القياس المفتوح (Grafana Cloud)

تم النشر بتاريخ 2024-08-22
تصفح:282

استخدام Opentelemetry في بيئة الإنتاج

تم الانتهاء من إعداد Opentelemetry في التطبيق وتشغيل Otel Collector وLoki وTempo وGrafana محليًا لعرض التتبع في المنشور السابق

كل ما تبقى الآن هو النظر في التتبع ليس محليًا فحسب، بل أيضًا في بيئة الإنتاج الفعلية.

ما هو مطلوب لذلك هو "حفظ السجلات والتتبعات على السحابة".

طُرق

1. نشر أداة الجمع Opentelemetry

قم بتحريك مُجمع Opentelemetry Collector (Loki، Tempo، وما إلى ذلك) في مكان ما وقم بتعيين عنوان OLTP الذي يرسله التطبيق إلى هذا المجمع.

بدلاً من ذلك، لتحسين قابلية التوسع، هناك طريقة لتثبيت بوابة لموازنة التحميل، واستقبال OLTP من البوابة، وتمريرها إلى المجمعات الداخلية.

2. تثبيت ونشر Grafana Alloy

Grafana Alloy عبارة عن مجمع قياس مفتوح قابل للتكوين مقدم من Grafana.

إذا قمت بالنشر باستخدام Docker أو Kubernates الذي استخدمته مسبقًا، فيمكنك إضافته كعقدة جديدة.

3. قم بالتصوير مباشرة بدون المجمع

هذه طريقة لإرسال OLTP مباشرة إلى الواجهة الخلفية (Loki، Tempo، Jaeger، إلخ) بدون أداة تجميع.

يمكن استخدام Loki وTempo من Grafana Cloud كواجهة خلفية، لذا فهي تتمتع بميزة تقديمها بسرعة دون نشر.

بدلاً من ذلك، تختفي المزايا مثل قابلية التوسع والمعالجة التي يمكن الحصول عليها باستخدام Collector.

المعتمد: التصوير بدون جامع

أردت نشر Collector واستخدامه بطريقة رائعة، لكنني اعتقدت أن نشر Collector وإعداده بشكل منفصل في بيئة لا يتم فيها استخدام Kubernetes، سيستغرق الكثير من الوقت، لذلك اخترت تشغيله مباشرةً باستخدام Grafana سحاب.

في الواقع، نحن نقدمه للتجريب، وبما أنها شركة ناشئة، فإن قابلية التوسع ليست مهمة جدًا (نظرًا لأنها تقوم بالتسجيل) ويمكننا القيام بذلك بسرعة، لذا فهو ليس قرارًا خياليًا، ولكنه قرار جيد قرار.

حبل

تغيير الكود بسيط للغاية. كل ما عليك فعله هو ضبط نقطة نهاية OLTP والبروتوكول بشكل صحيح.

التتبع

import { OTLPTraceExporter as PROTOOTLPTraceExporter } from "@opentelemetry/exporter-trace-otlp-proto";

const oltpTraceExporter = new PROTOOTLPTraceExporter({
  url: process.env.OTEL_EXPORTER_OTLP_ENDPOINT   "/v1/traces",
  headers: {
    Authorization: process.env.OTEL_EXPORTER_OTLP_HEADERS_AUTHORIZATION,
  },
});

نقطة النهاية (سحابة Grafana) التي ستتلقى التتبع الذي سنصوره تتلقى بروتوكول http/protobuf، لذا يجب استيراده واستخدامه من Exporter-trace-otlp-proto.

المسجل

const logExporter = new OTLPLogExporter({
  url: process.env.OTEL_EXPORTER_OTLP_ENDPOINT   "/v1/logs",
  headers: {
    Authorization: process.env.OTEL_EXPORTER_OTLP_HEADERS_AUTHORIZATION,
  },
});

كان برنامج Logger يستخدم بالفعل بروتوكول Http، لذلك يمكن استخدام OTLPLogExporter كما هو.

متغيرات البيئة

يرجى ملاحظة أنه في NestJS، يتم تعيين متغيرات البيئة عند تهيئة AppModule، لذلك لا يمكن استخدامها في إعدادات التتبع والمسجل التي يجب إكمالها قبل إنشاء AppModule.

إذا كنت تستخدم dotenv، فيجب عليك الاتصال به أولاً.


// eslint-disable-next-line import/order استيراد {التكوين} من "dotenv"؛ // eslint-disable-next-line import/order استيراد { getEnvFilePath } من "@/lib/utils/env-loader"؛ التكوين () ؛ // قم بتحميل env قبل تحميل أداة التتبع والمسجل // eslint-disable-next-line import/order استيراد otelSDK من "./tracer"؛ // يجب استيراد otelSDK قبل أي عمليات استيراد أخرى // eslint-disable-next-line import/order استيراد createLogger من "./logger"؛
// eslint-disable-next-line import/order
import { config } from "dotenv";
// eslint-disable-next-line import/order
import { getEnvFilePath } from "@/lib/utils/env-loader";
config(); // load env before loading tracer and logger

// eslint-disable-next-line import/order
import otelSDK from "./tracer"; // otelSDK should be imported before any other imports
// eslint-disable-next-line import/order
import createLogger from "./logger";
قيمة متغيرة البيئة

من الصعب جدًا العثور عليه، لذا تابع الأمر بعناية.

    الوصول إلى جرافانا
  1. انقر فوق حسابي في الزاوية اليمنى العليا
  2. انقر فوق اسم المكدس ضمن GRAFANA CLOUD في شريط التنقل الأيسر (إذا لم يكن موجودًا، فقم بإنشاء مكدس جديد)
  3. في شاشة "إدارة المكدس الخاص بك"، اضغط على تكوين لبطاقة Opentelmetry
  4. هنا يمكنك الحصول على OTEL_EXPORTER_OTLP_ENDPOINT،
  5. انقر فوق إنشاء مفتاح في كلمة المرور / رمز API أدناه لإنشاء مفتاح
  6. في حقل متغيرات البيئة، الجزء الذي يبدأ بـ Basic في OTEL_EXPORTER_OTLP_HEADERS هو قيمة المتغير OTEL_EXPORTER_OTLP_HEADERS_AUTHORIZATION
  7. .
تسجيل متغيرات البيئة وتنفيذها.

قم بتشغيل Grafana Cloud

انقر فوق Grafana Launch في Grafana وانظر إلى البيانات في الاستكشاف

NestJS   Opentelemetry (Grafana Cloud)

بيان الافراج تم إعادة إنتاج هذه المقالة على: https://dev.to/siisee11/nestjs-opentelemetry-grafana-cloud-328f?1 إذا كان هناك أي انتهاك، يرجى الاتصال بـ [email protected] لحذفه
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3