open telemetry instrumentation for the `elasticsearch` module
npm install opentelemetry-instrumentation-elasticsearchThis module provides automatic instrumentation for @elastic/elasticsearch and follows otel DB Semantic Conventions.
```
npm install opentelemetry-instrumentation-elasticsearch
`js
const { NodeTracerProvider } = require('@opentelemetry/sdk-trace-node');
const { registerInstrumentations } = require('@opentelemetry/instrumentation');
const { ElasticsearchInstrumentation } = require('opentelemetry-instrumentation-elasticsearch');
registerInstrumentations({
tracerProvider,
instrumentations: [
new ElasticsearchInstrumentation({
// Config example (all optional)
suppressInternalInstrumentation: false,
moduleVersionAttributeName: 'elasticsearchClient.version',
responseHook: (span, result) => {
span.setAttribute('db.response', JSON.stringify(result));
},
dbStatementSerializer: (operation, params, options) => {
return JSON.stringify(params);
}
})
]
});
`
Elasticsearch instrumentation has few options available to choose from. You can set the following (all optional):
| Options | Type | Default | Description |
| --- | --- | --- | --- |
| suppressInternalInstrumentation | boolean | false | Elasticsearch operation use http/https under the hood. Setting this to true will hide the underlying request spans (if instrumented). |responseHook
| | ResponseHook (function) | undefined | Hook called before response is returned, which allows to add custom attributes to span.span
Function receive params: result (object) |dbStatementSerializer
| | DbStatementSerializer (function) | JSON.stringify({params, options}) | Elasticsearch instrumentation will serialize db.statement using this function response.operation
Function receive params: (string)params (object)options (object)string
Function response must be a moduleVersionAttributeName
| | string | undefined | If passed, a span attribute will be added to all spans with key of the provided moduleVersionAttributeName and value of the @elastic/elasticsearch version |
Please make sure dbStatementSerializer is error proof, as errors are not handled while executing this function.
contain the API function called.
For the full list see API reference.Few examples:
*
client.bulk
* client.search
* client.index
* cat.shards
* cluster.health`---
This extension (and many others) was developed by Aspecto with ❤️