デフォルトでは、APMインサイトのNode.jsエージェントはhttp、https、https2などといったWeb要求を受け取っています。より詳細な取得には、カスタム設定をしたAPIを使用することで可能となります。これにより特定のトランザクションやアプリケーションのコードブロックを解析するのに役立てられます。
APIならびに機能や構文については以下に示します。API, as well as their functionality and syntax, are covered below.
メモ:Node.jsアプリケーションのカスタム設定を使用するには、APMインサイトモジュールをインストールする必要があります。APMインサイトモジュールのインストールには次のコマンドを入力してください。 :
API'sにより可能となる機能は次の通りです。
構文:
例:
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);
出力:
構文:
例:
出力
構文:
例:
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);
構文:
例:
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.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なし:
例 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);
出力:
一般的に全ての入出力エラーや未処理のエラーがエージェントによって取得されますが、APIによって処理済みのエラーにも対応することができます。トライ-キャッチメソッドによって処理済みのエラーが取得された場合、APIを通してそのエラーを認識でき、その通知されたエラーは該当のトランザクションに関連付けられます。取得されたエラーはトレースタブ内にあるトレースエラーから見ることができます。
構文:
例:
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);
出力:
アプリケーションパラメーターを用いることで、アプリケーションにおける変数や操作のサイズや頻度といった重要なパラメーターを監視することができます。アプリケーションパラメーターの使用方法については こちらを参照してください。
incrementCustomMetric: カスタムメトリックスの合計を収集
構文:
例:
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);
出力: