Opentelemetryをアプリケーションに設定し、ローカルにOtel CollectorとLoki、Tempo、Grafanaを浮かべてトレースを見ることができるのはこの前の投稿まで仕上げになった。
もう残ったのはローカルだけでなく、実際のProduction環境でのtracingを見ることだ。そのために必要なのは「クラウド上にLog, Traceを保存すること」だ。
方法1. Opentelemetry Collector をデプロイする
2. Grafana AlloyをインストールしてデプロイするGrafana Alloyはグラファナによって提供されるconfigurableなopentelemetry collectorである。
3. Collectorなしですぐに撃つ
CollectorなしでBackend(Loki、Tempo、Jaegerなど)にOLTPを直接送ってしまう方法だ。
BackendでGrafana CloudのLoki、Tempoを使用できるため、配布せずに迅速に導入できるという利点がある。クールにCollectorを配布して書きたいのですが、既存のKubernetesも使わない環境でCollector別に配布して設定するのに時間がかかりすぎるようで、ただGrafana Cloudですぐに撮影する方法を選択しました。
事実実験用に導入してみるのだしスタートアップなので、scalabilityが大きく重要に作用せず(ロギングだから)何よりも早くしてみることができるので、ファンシーではないが良い意思決定だ。
コードコードの変更は非常にシンプルです。 OLTPのエンドポイントとProtocolだけをうまく設定してください。
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、 }, });
私たちが撮影したトレースを受け取るendpoint(grafana cloud)は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、 }, });
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, }, });注:NestJSでは、環境変数はAppModuleを初期化するときに設定されるため、AppModuleを作成する前に完了する必要があるトレーサーとロガーの設定では使用できません。
dotenvを使用している場合は、最初に呼び出す必要があります。
const logExporter = new OTLPLogExporter({ url: process.env.OTEL_EXPORTER_OTLP_ENDPOINT "/v1/logs", headers: { Authorization: process.env.OTEL_EXPORTER_OTLP_HEADERS_AUTHORIZATION, }, });環境変数の値
ウングンを見つけるのは難しいので、よく従ってください。
グラパナ接続
右上のMy Accountをクリック
// 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";'Manage your stack'画面でOpentelmetryカードのconfigureを押す
下のPassword / API TokenでGenerate Keyを押してキーを作成すると
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3