Elasticsearch ist eine beliebte Such- und Analyse-Engine. Die Elasticsearch-Integration von AppSignal für Node.js bietet eine automatische Instrumentierung für den Elasticsearch Node.js-Client.
Installation
Der Elasticsearch Node.js-Client enthält eine Instrumentierung über OpenTelemetry. Daten werden automatisch an das Paket AppSignal für Node.js gemeldet. Es ist keine zusätzliche Einrichtung erforderlich, um Elasticsearch in Ihrer Anwendung zu instrumentieren.
Funktionen
Die integrierte Instrumentierung erfasst Spans für Suchanfragen, Indexoperationen und andere Interaktionen mit Ihrem Elasticsearch-Cluster. Die Integration sendet AppSignal-Spans, die die Ausführungszeit jedes Elasticsearch-API-Aufrufs darstellen, zusammen mit Informationen über die jeweilige Operation.
Konfiguration
Die automatische Instrumentierung kann ab Version 9.x von @elastic/elasticsearch deaktiviert werden.
Wenn Sie Version 8.x von @elastic/elasticsearch verwenden, stellen Sie sicher, dass Sie @elastic/transport in Version 8.10.0 oder höher einsetzen.
Sie können die Instrumentierung von Elasticsearch wie folgt deaktivieren:
- durch Setzen einer Umgebungsvariablen;
OTEL_ELASTICSEARCH_ENABLED=false
- durch Verwendung eines benutzerdefinierten
Transport.
import {
Transport,
TransportRequestOptions,
TransportRequestParams,
} from "@elastic/transport";
class CustomTransport extends Transport {
async request(
params: TransportRequestParams,
options: TransportRequestOptions = {},
): Promise<any> {
options.openTelemetry = { enabled: false };
return super.request(params, options);
}
}
const client = new Client({
/*
your client config...
*/
Transport: CustomTransport,
});
Sie können die Instrumentierung auch aktiviert lassen und sie für einen einzelnen API-Aufruf deaktivieren, indem Sie ein benutzerdefiniertes TransportRequestOptions-Objekt als zweites Argument an einen beliebigen API-Aufruf übergeben:
const response = await client.search({ ... }, {
openTelemetry: { enabled: false },
});