Rumah  >  Artikel  >  hujung hadapan web  >  NestJS + Opentelemetry (Awan Grafana)

NestJS + Opentelemetry (Awan Grafana)

WBOY
WBOYasal
2024-08-19 17:14:38762semak imbas

Menggunakan Opentelemetry dalam persekitaran pengeluaran

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.'

kaedah

1. Gunakan Opentelemetry Collector

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.

2. Pasang dan gunakan Aloi Grafana

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.

3. Tembak terus tanpa Pemungut

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.

Diguna pakai: Menembak tanpa Pemungut

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.

kord

Perubahan kod adalah sangat mudah. Apa yang anda perlu lakukan ialah menetapkan titik akhir dan protokol OLTP dengan betul.

Pengesan

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.

Pembalak

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.

pembolehubah persekitaran

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";

Nilai pembolehubah persekitaran

Agak sukar untuk dicari, jadi ikuti dengan teliti.

  1. Akses Grafana
  2. Klik Akaun Saya di penjuru kanan sebelah atas
  3. Klik pada nama Tindanan di bawah GRAFANA CLOUD di Navbar kiri (jika tidak wujud, buat tindanan baharu)
  4. Tekan konfigurasi untuk kad Opentelmetry pada skrin 'Urus tindanan anda'
  5. Di sini anda boleh mendapatkan OTEL_EXPORTER_OTLP_ENDPOINT,
  6. Buat kunci dengan mengklik Jana Kunci dalam Kata Laluan / Token API di bawah
  7. Bahagian yang bermula dengan Asas dalam OTEL_EXPORTER_OTLP_HEADERS dalam medan Pembolehubah Persekitaran ialah nilai pembolehubah OTEL_EXPORTER_OTLP_HEADERS_AUTHORIZATION.

Daftar pembolehubah persekitaran dan jalankan.

Menjalankan Awan Grafana

Klik Pelancaran Grafana dalam Grafana dan lihat data dalam Teroka

NestJS + Opentelemetry (Grafana Cloud)

Atas ialah kandungan terperinci NestJS + Opentelemetry (Awan Grafana). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:Konsep asas OpentelemetriArtikel seterusnya:Konsep asas Opentelemetri