Node.js
ClickStackは、テレメトリデータ(ログ、メトリクス、トレース、例外)を収集するためにOpenTelemetry標準を使用します。トレースは自動計測によって自動生成されるため、トレースから価値を得るために手動の計測は必要ありません。
このガイドは以下を統合しています:
- ログ
- メトリクス
- トレース
- 例外
はじめに
HyperDX OpenTelemetry計測パッケージのインストール
以下のコマンドを使用して、ClickStack OpenTelemetryパッケージをインストールします。
- NPM
- Yarn
SDKの初期化
SDKを初期化するには、アプリケーションのエントリポイントの先頭でinit
関数を呼び出す必要があります。
- require
- import
これにより、Node.jsアプリケーションからのトレース、メトリクス、およびログが自動的にキャプチャされます。
ログ収集の設定
デフォルトでは、console.*
ログが収集されます。winston
やpino
などのロガーを使用している場合は、ログをClickStackに送信するためにロガーにトランスポートを追加する必要があります。その他の種類のロガーを使用している場合は、お問い合わせいただくか、適用可能であればプラットフォーム統合の1つ(例えば、Kubernetes)を調査してください。
- Winston
- Pino
- console.log
winston
をロガーとして使用している場合は、ロガーに以下のトランスポートを追加する必要があります。
pino
をロガーとして使用している場合は、ロガーに以下のトランスポートを追加し、トレースとログを関連付けるためにmixin
を指定する必要があります。
デフォルトでは、console.*
メソッドが標準でサポートされています。追加の設定は必要ありません。
これを無効にするには、環境変数HDX_NODE_CONSOLE_CAPTURE
を0に設定するか、init
関数にconsoleCapture: false
を渡してください。
エラー収集の設定
ClickStack SDKは、アプリケーション内で発生した未捕捉の例外やエラーを、スタックトレースとコードコンテキストを含めて自動的にキャプチャできます。
これを有効にするには、アプリケーションのエラーハンドリングミドルウェアの最後に以下のコードを追加するか、recordException
関数を使用して手動で例外をキャプチャする必要があります。
- Express
- Koa
- Manual
トラブルシューティング
SDKに問題がある場合は、環境変数OTEL_LOG_LEVEL
をdebug
に設定することで詳細ログを有効にできます。
高度な計測構成
コンソールログのキャプチャ
デフォルトでは、ClickStack SDKはコンソールログをキャプチャします。これを無効にするには、環境変数HDX_NODE_CONSOLE_CAPTURE
を0に設定します。
ユーザー情報またはメタデータの添付
特定の属性や識別子(例:ユーザーIDまたはメール)に関連するすべてのイベントを簡単にタグ付けするには、setTraceAttributes
関数を呼び出します。この関数を呼び出すと、宣言された属性で現在のトレースに関連するすべてのログ/spanがタグ付けされます。この関数は、リクエスト/トレース内でできるだけ早く呼び出すことをお勧めします(例:Expressミドルウェアスタックの早い段階で)。
これにより、すべてのログ/spanが適切な識別子で自動的にタグ付けされ、後で検索する際に便利になります。手動で識別子をタグ付けして伝播させる必要はありません。
userId
、userEmail
、userName
、およびteamName
は、セッションUIに対応する値を埋め込みますが、省略することもできます。その他の追加値も指定でき、イベントの検索に使用できます。
トレース属性を有効にするには、環境変数HDX_NODE_BETA_MODE
を1に設定するか、init
関数にbetaMode: true
を渡してベータモードを有効にしてください。
Google Cloud Run
Google Cloud Runでアプリケーションを実行している場合、Cloud Traceは自動的に受信リクエストにサンプリングヘッダーを挿入し、現在のインスタンスあたり0.1リクエスト/秒でトレースがサンプリングされます。
@hyperdx/node-opentelemetry
パッケージは、デフォルトでサンプルレートを1.0に上書きします。
この動作を変更するには、または他のOpenTelemetryインストールを構成するには、環境変数OTEL_TRACES_SAMPLER=parentbased_always_on
およびOTEL_TRACES_SAMPLER_ARG=1
を手動で設定して同じ結果を得ることができます。
詳細について、特定のリクエストのトレーシングを強制する方法については、Google Cloud Runのドキュメントを参照してください。
自動計測されたライブラリ
次のライブラリは、SDKによって自動的に計測された(トレースされた)ものです:
dns
express
graphql
hapi
http
ioredis
knex
koa
mongodb
mongoose
mysql
mysql2
net
pg
pino
redis
winston
代替インストール
ClickStack OpenTelemetry CLIでアプリケーションを実行
別の方法として、opentelemetry-instrument
CLIを使用するか、Node.jsの--require
フラグを使用して、コードの変更なしにアプリケーションを自動計測することができます。CLIインストールは、より広範な自動計測ライブラリやフレームワークを提供します。
- NPXを使用
- カスタムエントリポイント(例:Nodemon、ts-nodeなど)
- コードインポート
OTEL_SERVICE_NAME
環境変数は、HyperDXアプリでサービスを識別するために使用されます。これは任意の名前を指定できます。
例外キャプチャの有効化
未捕捉の例外キャプチャを有効にするには、環境変数HDX_NODE_EXPERIMENTAL_EXCEPTION_CAPTURE
を1に設定する必要があります。
その後、Express、Koaから自動的に例外をキャプチャするか、手動で例外を捕まえるための指示に従ってください。エラー収集の設定セクションを上記参照してください。
自動計測されたライブラリ
上記のインストール方法によって、次のライブラリが自動的に計測されます(トレースされます):