ARMS アプリケーションモニタリング Node.js エージェントをインストールすると、起動時にサポート対象のフレームワークとコンポーネントが自動的にインストルメンテーションされ、リクエストトレース、呼び出しレイテンシー、エラー、データベースアクセス、メッセージング呼び出し、ログとトレースの関連付け、ランタイムメトリクス、AI 呼び出しトレースが収集されます。
前提条件
-
(推奨) Node.js 14.x 以降。AI 関連コンポーネントおよび ESM Loader シナリオの場合は、Node.js 16 以降を使用してください。本番環境では、Node.js 18 または Node.js 20 LTS を使用してください。
-
ARMS Node.js エージェントがインストールされていること。
npm install @loongsuite/cms_node_sdk -
エージェントは、アプリケーションのフレームワークおよびコンポーネントより先にロードする必要があります。
express、mysql2、またはopenaiなどのモジュールがエージェントの起動前にロードされると、インストルメンテーションが不完全になる可能性があります。CommonJS アプリケーションでは、-rフラグを使用してエージェントをプリロードします。ESM アプリケーションでは、ローダーアプローチを使用します。node -r @loongsuite/cms_node_sdk/register app.js node --experimental-loader=@loongsuite/cms_node_sdk/import-hooks app.mjs
バージョン情報
以下の表に示すアプリケーション監視のサポート対象バージョン範囲は、@loongsuite/cms_node_sdk@1.0.7 およびその依存関係パッケージにおける自動インスツルメンテーションコンポーネントの定義に基づいています。
Node.js 組み込みモジュール、ランタイムメトリクス、および診断チャネルベースのインストルメンテーションについては、エージェントは npm パッケージのバージョンでフィルタリングを行いません。代わりに、インストルメンテーションは Node.js ランタイムのバージョンと、モジュールが収集可能なエントリーポイントを公開しているかどうかに依存します。
以下にリストされていないフレームワークでも、http、https、undici、または net などの Node.js 組み込みモジュールを使用している場合、エージェントは基本的なエントリーまたはエグジットトレースを収集できます。ルーティング、ミドルウェア、エージェント、ツールなどのフレームワーク固有の機能には、専用のインストルメンテーションが必要です。
Web フレームワーク
|
コンポーネントまたはフレームワーク |
npm パッケージ |
サポートバージョン |
収集データ |
|
Express |
express |
>= 4.0.0 < 6.0.0 |
HTTP エントリートレース、ルーティング情報、ミドルウェアとハンドラーの実行、エラーメッセージ |
|
Koa |
koa |
>= 2.0.0 < 4.0.0 |
HTTP エントリートレース、ミドルウェアの実行、ルーティング情報、エラーメッセージ |
|
Next.js |
next |
>= 12.0.0 < 17.0.0 |
サーバーサイドリクエスト、サーバーサイドレンダリング (SSR)、RSC、API ルート、エラーページ、静的ページ、ルーティング情報、ステータスコード、レイテンシー、エラーメッセージ |
|
Nuxt 2 |
@nuxt/server、@nuxt/vue-renderer、@nuxt/core |
>= 2.3.0 < 3.0.0 |
SSR、SPA、API、サーバーミドルウェア、 |
|
Nuxt 3/Nitro/h3 |
h3、フック可能、Node.js |
h3 >= 1.0.0 < 2.0.0、hookable >= 5.0.0 < 6.0.0 |
サーバーサイドリクエスト、h3 ハンドラー、Nitro フック、Node.js リクエストリスナー |
|
Socket.IO |
socket.io |
2.x、>= 3.0.0 < 5.0.0 |
イベントの送受信、ネームスペース、ルームブロードキャスト、メッセージレイテンシー、エラーメッセージ |
HTTP、RPC、ネットワーク通信
|
コンポーネントまたはモジュール |
npm パッケージ |
サポートバージョン |
収集データ |
|
Node.js HTTP |
http、https |
Node.js 組み込みモジュール |
HTTP サーバーエントリー、HTTP クライアントエグジット、ステータスコード、リクエストレイテンシー、リクエストとレスポンスのサイズ、エラーメッセージ |
|
Undici |
undici |
固定の semver 範囲なし |
診断チャネルを通じて収集される HTTP クライアントリクエスト、ステータスコード、レイテンシー、エラーメッセージ |
|
gRPC |
@grpc/grpc-js |
>= 1.0.0 < 2.0.0 |
gRPC クライアントとサーバーの呼び出し、サービスとメソッド、ステータスコード、レイテンシー、エラーメッセージ |
|
DNS |
dns、dns/promises |
Node.js 組み込みモジュール |
DNS ルックアップ呼び出し、解決レイテンシー、エラーメッセージ |
|
TCP/Unix Socket |
net |
Node.js 組み込みモジュール |
TCP/Unix Socket 接続、接続先アドレス、ポート、接続エラー |
データベースと ORM
|
コンポーネントまたはフレームワーク |
npm パッケージ |
サポートバージョン |
収集データ |
|
MySQL |
mysql |
>= 2.0.0 < 3.0.0 |
SQL 呼び出しトレース、SQL ステートメント、接続情報、スロークエリ、エラーメッセージ |
|
MySQL2 |
mysql2 |
>= 1.4.2 < 4.0.0 |
SQL 呼び出しトレース、query および execute 操作、SQL ステートメント、接続情報、スロークエリ、エラーメッセージ |
|
PostgreSQL |
pg |
>= 8.0.3 < 9.0.0 |
SQL 呼び出しトレース、SQL ステートメント、接続情報、スロークエリ、エラーメッセージ |
|
PostgreSQL Pool |
pg-pool |
>= 2.0.0 < 4.0.0 |
接続プールの connect 呼び出しと補足的なデータベースアクセストレース情報 |
|
MongoDB |
mongodb |
>= 3.3.0 < 4.0.0、>= 4.0.0 < 7.0.0 |
MongoDB コマンド、コレクション、データベース名、接続情報、レイテンシー、エラーメッセージ |
|
Mongoose |
mongoose |
>= 5.9.7 < 9.0.0 |
Model、Query、Aggregate の呼び出し、コレクション情報、データベース操作、レイテンシー、エラーメッセージ |
キャッシングとメッセージキュー
|
コンポーネントまたはフレームワーク |
npm パッケージ |
サポートバージョン |
収集データ |
|
Redis |
redis |
>= 2.6.0 < 4.0.0 |
Redis コマンド、接続情報、呼び出しレイテンシー、エラーメッセージ |
|
Node Redis Client |
@redis/client |
>= 1.0.0 < 2.0.0、>= 5.0.0 < 6.0.0 |
Redis v4 クライアントコマンド、multi コマンド、接続情報、呼び出しレイテンシー、エラーメッセージ |
|
ioredis |
ioredis |
>= 2.0.0 < 6.0.0 |
Redis コマンド、接続情報、呼び出しレイテンシー、エラーメッセージ |
|
KafkaJS |
kafkajs |
>= 0.3.0 < 3.0.0 |
Kafka のプロデューサーとコンシューマーの呼び出し、トピック、メッセージ送受信レイテンシー、エラーメッセージ |
ロギングフレームワーク
|
コンポーネントまたはフレームワーク |
npm パッケージ |
サポートバージョン |
収集データ |
|
Pino |
pino |
>= 7.0.0 < 11.0.0 |
ログへのトレース関連付けフィールドの挿入 |
|
Winston |
winston |
>= 3.0.0 < 4.0.0 |
ログへのトレース関連付けフィールドの挿入 |
|
Bunyan |
bunyan |
>= 1.8.0 < 3.0.0 |
ログへのトレース関連付けフィールドの挿入 |
|
Console |
console |
Node.js グローバルオブジェクト |
|
AI アプリケーションコンポーネント
|
コンポーネントまたはフレームワーク |
npm パッケージ |
サポートバージョン |
収集データ |
|
OpenAI Node SDK |
openai |
>= 4.0.0 < 6.0.0 |
Chat、Completion、Image の呼び出し、モデル情報、トークン使用量、ストリーミング呼び出し、エラーメッセージ |
|
LangChain JS |
@langchain/core、langchain |
固定の semver 範囲なし。 |
Chain、LLM、Tool、Retriever、Embedding の実行トレース、トークン使用量、エラーメッセージ |
|
LangGraph |
@langchain/langgraph |
固定の semver 範囲なし。 |
ReAct Agent、Pregel ストリーム、Agent と Step のメタデータ、LangChain インストルメンテーションと連携して完全な Agent トレースを形成 |
|
Vercel AI SDK |
ai |
>= 4.0.0 < 7.0.0 |
|
|
Anthropic Claude Agent SDK |
@anthropic-ai/claude-agent-sdk |
>= 0.3.0 < 1.0.0 |
|
Node.js ランタイムメトリクス
|
メトリクスカテゴリ |
収集対象 |
収集データ |
|
イベントループ |
Node.js イベントループ |
イベントループの遅延、イベントループの使用率、その他のメトリクス |
|
V8 |
V8 エンジン |
ヒープメモリ、GC 回数、GC レイテンシー、ヒープ空間使用量、その他のメトリクス |
|
プロセス |
Node.js プロセス |
CPU、メモリ、スレッド関連メトリクス、開いているファイルディスクリプタ、コンテキストスイッチ、仮想メモリ、その他のプロセスメトリクス |
設定
すべての組み込みインストルメンテーションは、デフォルトで有効になっています。ARMS コンソールでアプリケーションごとに、または SDK の初期化時に instrumentations フィールドを使用して調整できます。
次の例では、instrumentations フィールドを設定します。
const { NodeSDK } = require('@loongsuite/cms_node_sdk');
const sdk = new NodeSDK({
serviceName: 'your-app-name',
licenseKey: 'your-license-key',
regionId: 'cn-hangzhou',
instrumentations: {
next: {
enabled: true
},
nuxt: {
enabled: true
},
mysql2: {
enabled: true
},
openai: {
enabled: true
},
vercel_ai: {
enabled: true
},
},
});
sdk.start();
一般的な設定キー:
|
カテゴリ |
設定キー |
|
HTTP とネットワーク |
|
|
Web フレームワーク |
|
|
データベース |
|
|
キャッシングとメッセージング |
|
|
ロギング |
|
|
AI |
|
|
ランタイム |
|
Mongoose の設定キーは mongoose ではなく moogoose です。これは既知のコードレベルのキー名です。Mongoose コンポーネントは、ユーザー向けのコンテキストでは mongoose として表示されます。コードで Mongoose のインスツルメンテーションスイッチを明示的に設定する場合は、moogoose を使用してください。
注意事項
-
自動インスツルメンテーションでは、エージェントが対象のモジュールより先にロードされる必要があります。お使いのアプリケーションで、エージェントを開始する前に
express、next、nuxt、mysql2、またはopenaiなどのモジュールがロードされると、これらのコンポーネントのインスツルメンテーションが不完全になる可能性があります。 -
Next.js の自動インストルメンテーションは、
@loongsuite/cms_node_sdk@1.0.5以降でサポートされています。Nuxt 2 の自動インストルメンテーションは、@loongsuite/cms_node_sdk@1.0.7以降でサポートされています。 -
Nuxt 2 のインストルメンテーションは、
@nuxt/server、@nuxt/vue-renderer、および@nuxt/coreモジュールを使用します。Nuxt の 2.3.0 より前のバージョンはサポートされていません。 -
AI コンポーネントは、プロンプト、レスポンス、ツールの入出力などのリクエストボディのコンテンツを収集する場合があります。本番環境では、コンプライアンス要件に基づいて、収集ポリシー、リダクションルール、最大長制限を設定してください。
-
リストにないコンポーネントについても、エージェントは基盤となる HTTP、RPC、またはデータベースクライアントのインストルメンテーションを通じて基本的なトレースを収集できる場合がありますが、フレームワーク固有のセマンティックフィールドおよびビュー機能は保証されません。
-
コンポーネントのバージョン範囲は、エージェントのリリースごとに更新されます。アップグレード後は、ドキュメントおよびリリースノートで更新されたサポートバージョンを確認してください。