pinpoint-node-agent
Version:
Pinpoint APM agent for Node.js — distributed tracing, error analysis, and URI statistics
57 lines (52 loc) • 2.58 kB
JavaScript
/**
* Pinpoint Node.js Agent
* Copyright 2020-present NAVER Corp.
* Apache License v2.0
*/
'use strict'
const { AgentBuilder } = require('./lib/agent-builder')
const AgentInfo = require('./lib/data/dto/agent-info')
const { ConfigBuilder } = require('./lib/config-builder')
const { LogBuilder } = require('./lib/utils/log/log-builder')
const logger = require('./lib/utils/log/logger')
const { UriStatsMonitor } = require('./lib/metric/uri/uri-stats-monitor')
const { UriStatsConfigBuilder } = require('./lib/metric/uri/uri-stats-config-builder')
const { UriStatsSpanRecorderFactory } = require('./lib/metric/uri/uri-stats-span-recorder-factory')
const { UriStatsRepositoryBuilder } = require('./lib/metric/uri/uri-stats-repository')
const { TraceCompletionEnricher } = require('./lib/metric/uri/trace-completion-enricher')
const { ErrorAnalysisConfigBuilder } = require('./lib/context/trace/error-analysis-config-builder')
const { ExceptionEnricher } = require('./lib/context/trace/exception-enricher')
const { UidParsingResultFactory } = require('./lib/metric/sql/uid-parsing-result-factory')
const { SqlStatsConfigBuilder } = require('./lib/metric/sql/sql-stats-config-builder')
const config = new ConfigBuilder().build()
const agentInfo = AgentInfo.make(config)
const defaultLogger = logger.getLogger(LogBuilder.createDefaultLogBuilder().setConfig(config).build())
const agentBuilder = new AgentBuilder(agentInfo)
.setConfig(config)
.setLogger(defaultLogger)
const uriStatsConfig = new UriStatsConfigBuilder(config).build()
if (uriStatsConfig.isUriStatsEnabled()) {
agentBuilder.setSpanRecorderFactory(new UriStatsSpanRecorderFactory(config, uriStatsConfig))
const uriStatsRepository = new UriStatsRepositoryBuilder(uriStatsConfig).build()
agentBuilder.addService((dataSender) => {
const statsMonitor = new UriStatsMonitor(dataSender, uriStatsRepository)
statsMonitor.start()
return {
shutdown: function () {
statsMonitor.stop()
}
}
})
agentBuilder.addEnricher(new TraceCompletionEnricher(uriStatsRepository))
}
const sqlStatsConfig = new SqlStatsConfigBuilder(config).build()
if (sqlStatsConfig.isSqlStatsEnabled()) {
agentBuilder.setParsingResultFactory(new UidParsingResultFactory())
}
const errorAnalysisConfig = new ErrorAnalysisConfigBuilder(config).build()
if (errorAnalysisConfig.isErrorAnalysisEnabled()) {
agentBuilder.addEnricher(new ExceptionEnricher(errorAnalysisConfig))
}
const agent = agentBuilder.build()
agent.start()
module.exports = agent