IMPORTANT: No additional bug fixes or documentation updates
will be released for this version. For the latest information, see the
current release documentation.
Custom Transactions
editCustom Transactions
editThis is an example of how to use custom transactions and custom spans. Please also see API documentation.
Elastic APM uses the concept of transactions and spans to collect performance data. Spans are used to measure an operation and spans are grouped into what transactions.
By default Elastic APM JS agent collects some transactions (page-load
transaction for example) and send them to apm-server, however
if the current instrumentation doesn’t provide what you need, you can create custom transactions to fill the gaps.
Here is an example application using custom transactions:
import { init as initApm } from 'elastic-apm-js-base' var apm = initApm({ serviceName: 'service-name', serverUrl: 'http://localhost:8200' }) var transaction = apm.startTransaction('Application start', 'custom') var url = 'http://example.com/data.json' var httpSpan = transaction.startSpan('FETCH ' + url, 'http') fetch(url) .then((resp) => { if (!resp.ok) { apm.captureError(new Error(`fetch failed with status ${resp.status} ${resp.statusText}`)) } httpSpan.end() transaction.end() })
There can only be one active transaction at any time.
Transactions are queued and sent together automatically after Transaction.end
is called.