ヘルプ APM APM(Node.JS)

Node.jsアプリケーションのためのカスタム設定

デフォルトでは、APMインサイトのNode.jsエージェントはhttp、https、https2などといったWeb要求を受け取っています。より詳細な取得には、カスタム設定をしたAPIを使用することで可能となります。これにより特定のトランザクションやアプリケーションのコードブロックを解析するのに役立てられます。

APIならびに機能や構文については以下に示します。API, as well as their functionality and syntax, are covered below.

メモ:Node.jsアプリケーションのカスタム設定を使用するには、APMインサイトモジュールをインストールする必要があります。APMインサイトモジュールのインストールには次のコマンドを入力してください。 :

var apminsight = require('apminsight')

API'sにより可能となる機能は次の通りです。

  1. Web/バックグラウンドトランザクションの監視
  2. カスタムコンポーネントの監視
  3. 発生したエラーの追跡
  4. アプリケーションパラメーターの計測

Web/バックグラウンドトランザクション:

  • デフォルトでは、エージェントによって自動的にWeb要求が収集されて、Webトランザクションタブ内に表示されます。しかし、ソケット接続などといったほかクライアントサーバーとの通信はこのエージェントから監視されません。このような場合のトランザクションはAPIを用いることで監視できます。
  • デフォルトではエージェントはバックグラウンドトランザクションを監視しません。そこで、次のAPIを用いた設定によって、バックグラウンドトランザクションを監視できるようになります。
  • また、APIを使用した監視より、トランザクション名やスキップトランザクションを設定することができます。
  • Webやバックグラウンドトランザクションを設定すると、それに加えてエンドトランザクションAPIを設定する必要があります。

Webトランザクション取得のためのAPI

構文:

apminsight.startWebTransaction(txnName, handler)
txnName : string value
handler : handler is the function, that will be executed once txn is created

例:

var apminsight = require('apminisght');
var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);

/* this request will be collected automatically*/

app.get('/', function(req, res){
res.sendFile(__dirname + '/index.html');
});

/*need to use custom instrumentation for socket communication*/

io.on('connection', function(socket){
apminsight.startWebTransaction('/message', function(){
doSomething()
........ apminsight.endTransaction();
});
});
http.listen(3000);

出力:

node-webtxn

バックグラウンドトランザクション取得のためのAPI

構文:

apminsight.startBackgroundTransaction(txnName, handler)
txnName : string value
handler : handler is the function, that will be executed once txn is created

例:

var apminsight = require('apminisght');
function doBackground(){
setInterval( function(){
apminsight.startBackgroundTransaction('routine', function(){
doSomething().........
apminsight.endTransaction();
}
}, 5000);
}

出力

node-bgtxn

トランザクション名の変更・カスタマイズのためのAPI

構文:

apminsight.setTransactionName(customTxnName)
cusTxnName : string value

例:

var apminsight = require('apminisght');
var app = require('express')();
var http = require('http').Server(app);

/* this request will be collected automatically with txn name /admin*/

app.get('/admin', function(req, res){

/* txn name will be changed to /homepage*/

apminsight.setTransactionName('/homepage');
res.sendFile(__dirname + '/index.html');
});
http.listen(3000);

トランザクションをignore処理するためのAPI

構文:

apminsight.ignoreCurrentTransaction()

例:

var apminsight = require('apminisght');
var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);
app.get('/logout', function(req, res){

/* this request will be ignored */

apminsight.ignoreCurrentTransaction();
res.sendFile(__dirname + '/index.html');
});
http.listen(3000);

エンドトランザクションAPI

構文:

apminsight.endTransaction()

カスタムコンポーネントの監視

デフォルトで、エージェントはフレームワークコンポーネント、クラス、メソッドを取得しています。しかし、ユーザーが定義したクラスや方法に関しては次のAPIを設定した時のみ監視することができます。これらの情報はトレースタブから表示することができます。また、設定したクラス・メソッドといったデータベース操作に関するトランザクションの場合は、データベースタブからその情報を表示できます。

カスタムコンポーネントを追跡するためのAPI

構文:

apminsight.startTracker(trackerName, componentName, handler, cb)
trackerName : string value
componentName : string value
handler : handler is the function, that will be executed
cb : optional param, if it is present then it will be treated as asynchrous tracker

例 1 - cbなし:

var apminsight = require('apminisght');
var app = require('express')();
var http = require('http').Server(app);
app.get('/', function(req, res){
apminsight.startTracker('readFile', 'FS', function(){
res.sendFile(__dirname + '/index.html');
});
});
http.listen(3000);

例 2 - cbあり:

var apminsight = require('apminisght');
var app = require('express')();
var http = require('http').Server(app);
app.get('/', function(req, res){
apminsight.startTracker('readFile', 'FS', function(cb){
doSomething()......
cb();
}, function(){

// send response

});
});
http.listen(3000);

出力:

node-component

発生したエラーの追跡

一般的に全ての入出力エラーや未処理のエラーがエージェントによって取得されますが、APIによって処理済みのエラーにも対応することができます。トライ-キャッチメソッドによって処理済みのエラーが取得された場合、APIを通してそのエラーを認識でき、その通知されたエラーは該当のトランザクションに関連付けられます。取得されたエラーはトレースタブ内にあるトレースエラーから見ることができます。

発生したエラー追跡のためのAPI

構文:

apminsight.trackError(err)
err : Error object

例:

var apminsight = require('apminisght');
var app = require('express')();
var http = require('http').Server(app);

/* this request will be collected automatically*/

app.get('/', function(req, res){
try{
fetchAndSendResponse();
}catch(err){
apminsight.trackError(err)
sendErrorResponse();
}
});
http.listen(3000);

出力:

node-exception

アプリケーションパラメーターの計測

アプリケーションパラメーターを用いることで、アプリケーションにおける変数や操作のサイズや頻度といった重要なパラメーターを監視することができます。アプリケーションパラメーターの使用方法については こちらを参照してください。

アプリケーションパラメーター計測のためのAPI

incrementCustomMetric: カスタムメトリックスの合計を収集

構文:

apminsight.incrementCustomMetric(metricName, metricValue)
metricName : string value
metricValue : optional, if it is not present then metric will incremented by 1

例:

var apminsight = require('apminisght');
var app = require('express')();
var http = require('http').Server(app);

app.get('/buy', function(req, res){
apminsight.incrementCustomMetric('products', req.product.count);
res.sendFile(__dirname + '/index.html');
});
http.listen(3000);

averageCustomMetric: カスタムメトリックスの平均を収集

構文:

apminsight.averageCustomMetric(metricName, metricValue)

metricName : string value
metricValue : number

例:

var apminsight = require('apminisght');
var app = require('express')();
var http = require('http').Server(app);

app.get('/pay', function(req, res){
apminsight.averageCustomMetric('amount', req.amount);
res.sendFile(__dirname + '/index.html');
});
http.listen(3000);

出力:

node-csmetric


トップ