Rumah > Artikel > hujung hadapan web > NestJS + Opentelemetry (Awan Grafana)
Keupayaan untuk melihat jejak dengan menyediakan Opentelemetry dalam aplikasi dan melancarkan Otel Collector, Loki, Tempo, dan Grafana secara tempatan telah selesai dalam catatan sebelumnya.
Sekarang yang tinggal hanyalah melihat pengesanan bukan sahaja di dalam negara tetapi juga dalam persekitaran pengeluaran sebenar.
Apa yang diperlukan untuk itu ialah 'menyimpan log dan kesan di awan.'
Anda boleh meletakkan Pemungut Opentelemetri (+ Loki, Tempo, dll.) di suatu tempat dan menetapkan alamat OLTP yang dihantar oleh aplikasi kepada Pemungut ini.
Sebagai alternatif, untuk kebolehskalaan yang lebih baik, terdapat kaedah memasang get laluan untuk mengimbangi beban dan menerima OLTP daripada get laluan dan menghantarnya kepada pengumpul dalaman.
Grafana Aloi ialah pengumpul opentelemetri boleh dikonfigurasikan yang disediakan oleh Grafana.
Jika anda menggunakan Docker atau Kubernate yang digunakan sebelum ini, anda boleh menambahkannya sebagai nod baharu.
Ini ialah kaedah menghantar OLTP terus ke bahagian belakang (Loki, Tempo, Jaeger, dll.) tanpa pengumpul.
Kelebihannya ialah Loki dan Tempo Grafana Cloud boleh digunakan sebagai bahagian belakang, jadi ia boleh diperkenalkan dengan cepat tanpa penggunaan.
Sebaliknya, kelebihan seperti kebolehskalaan dan pemprosesan yang boleh diperoleh dengan menggunakan Collector hilang.
Saya mahu menggunakan dan menggunakan Collector dengan cara yang menarik, tetapi saya fikir ia akan mengambil masa terlalu lama untuk menggunakan dan menyediakan Collector secara berasingan dalam persekitaran yang tidak menggunakan Kubernetes, jadi saya memilih untuk melancarkannya terus dengan Grafana Awan.
Sebenarnya, kami memperkenalkannya untuk percubaan, dan memandangkan ia adalah permulaan, skalabiliti tidak begitu penting (kerana ia adalah pembalakan) dan lebih daripada segala-galanya, ia boleh dilakukan dengan cepat, jadi ia bukan keputusan yang mewah, tetapi ia adalah keputusan yang baik.
Perubahan kod adalah sangat mudah. Apa yang anda perlu lakukan ialah menetapkan titik akhir dan protokol OLTP dengan betul.
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, }, });
Titik akhir (awan grafana) yang akan menerima jejak yang akan kami tangkap menerima protokol http/protobuf, jadi ia mesti diimport dan digunakan daripada pengeksport-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 telah pun menggunakan protokol Http, jadi OTLPLogExporter boleh digunakan sebagaimana adanya.
Sila ambil perhatian bahawa dalam NestJS, pembolehubah persekitaran ditetapkan semasa memulakan AppModule, jadi ia tidak boleh digunakan dalam tetapan pengesan dan pengelog yang mesti dilengkapkan sebelum membuat AppModule.
Jika anda menggunakan dotenv, anda mesti memanggilnya dahulu.
// 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";
Agak sukar untuk dicari, jadi ikuti dengan teliti.
Daftar pembolehubah persekitaran dan jalankan.
Klik Pelancaran Grafana dalam Grafana dan lihat data dalam Teroka
Atas ialah kandungan terperinci NestJS + Opentelemetry (Awan Grafana). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!