Elastic
Erfahren Sie, wie Sie die Backend-Logs von Elastic mit den Session Replays von OpenReplay integrieren, um Ihre Möglichkeiten beim Monitoring und Debugging zu erweitern.
1. Neuen API-Schlüssel erstellen
Section titled 1. Neuen API-Schlüssel erstellenJe nach Setup können Sie einen API-Schlüssel über das Kibana-Dashboard oder mit cURL-Befehlen erstellen.
Über das Kibana-Dashboard
-
Melden Sie sich bei Ihrem Kibana-Dashboard an.
-
Öffnen Sie Dev Tools: Navigieren Sie zu Dev Tools > Console.
-
Erstellen Sie den API Key: Kopieren Sie den folgenden Code in die Konsole und führen Sie ihn aus:
POST /_security/api_key { "name": "openreplay-api-key", "role_descriptors": { "openreplay-role": { "cluster": ["all"], "index": [ { "names": ["*log*"], "privileges": ["read"] } ] } } }
Über cURL-Befehle
Section titled Über cURL-Befehle-
cURL-Befehl ausführen: Führen Sie den folgenden Befehl in Ihrem Terminal aus:
curl -X POST "https://your-elasticsearch-host:port/_security/api_key" \ -H 'Content-Type: application/json' \ -d' { "name": "openreplay-api-key", "role_descriptors": { "openreplay-role": { "cluster": ["all"], "index": [ { "names": ["*log*"], "privileges": ["read"] } ] } } }' \ -u 'username:password'Ersetzen Sie
https://your-elasticsearch-host:portdurch Ihren Elasticsearch-Host und Port sowieusername:passworddurch Ihre Zugangsdaten.
Hinweis:
- Standardmäßig durchsucht diese Integration Logs in allen Indizes, die dem Muster
*log*entsprechen. Wenn Sie einen speziellen Index für Logs haben, der nicht zu diesem Muster passt, ändern Sie bitte das Feldnamesin der Anfrage zur Erstellung des API-Schlüssels. - Um mehrere Indizes anzugeben, trennen Sie die Namen durch Kommas, z. B.
"names": ["index1", "index2"].
Ergebnis des API-Schlüssels
Section titled Ergebnis des API-SchlüsselsNach dem Ausführen des Befehls erhalten Sie eine Antwort wie diese:
{
"id": "eQWAIG0Bo0VqB8HXFH9-",
"name": "openreplay-api-key",
"api_key": "dZ5ycVRJTU-5UW_RYfi1_w"
}
Wichtig: Kopieren Sie unbedingt die id und den api_key, da Sie beides für die Integration benötigen.
Referenz: Elasticsearch - Create API Key
2. Elasticsearch-Integration in OpenReplay konfigurieren
Section titled 2. Elasticsearch-Integration in OpenReplay konfigurierenFühren Sie in Ihrem OpenReplay-Konto diese 3 Schritte aus, um die Zuordnung der Session Replays zu den Elasticsearch-Backend-Logs abzuschließen.
Elasticsearch-Integration aktivieren
Section titled Elasticsearch-Integration aktivieren- Gehen Sie in OpenReplay zu Preferences > Integrations.
- Wählen Sie den Tab Backend Logging.
- Wählen Sie das Projekt aus, für das Sie die Elasticsearch-Integration aktivieren möchten: Suchen Sie die Elasticsearch-Integrationskarte und klicken Sie darauf.
Elasticsearch-Zugangsdaten eingeben
Section titled Elasticsearch-Zugangsdaten eingebenGeben Sie in der Seitenleiste der Elasticsearch-Integration Folgendes ein:
- API KEY ID: Die
idaus dem von Ihnen generierten API-Schlüssel. - API Key: Der
api_keyaus dem von Ihnen generierten API-Schlüssel. - Indexes: Wenn Sie beim Generieren des API-Schlüssels den Index geändert haben, geben Sie hier den oder die Namen an.
Verbindung überprüfen:
Section titled Verbindung überprüfen:- Klicken Sie auf Add, um die Verbindung zu testen.
3. openReplaySession.id weitergeben
Section titled 3. openReplaySession.id weitergebenUm ein Elasticsearch-Ereignis mit der aufgezeichneten Benutzersitzung zu verknüpfen, muss bei jeder Anfrage, die Sie nachverfolgen möchten, eine eindeutige Sitzungs-ID (openReplaySession.id) von Ihrem Frontend an Ihr Backend weitergegeben werden.
a. openReplaySession.id in Frontend-API-Anfragen einbinden
Section titled a. openReplaySession.id in Frontend-API-Anfragen einbindenHinweis: tracker.start() ist asynchron und gibt ein Promise zurück. Sie müssen warten, bis es aufgelöst ist, bevor Sie tracker.getSessionID() aufrufen, damit die Sitzungs-ID verfügbar ist.
// JavaScript Example for for Single Page Applications (SPA):
// Import OpenReplay
import { tracker } from '@openreplay/tracker';
// Initialize the tracker
tracker.configure({
projectKey: 'YOUR_PROJECT_KEY',
ingestPoint: "https://openreplay.mydomain.com/ingest", // when dealing with the self-hosted version of OpenReplay
});
// Start the tracker and wait for it to resolve
tracker.start().then(() => {
// Get the session ID after the tracker has started
const sessionId = tracker.getSessionID();
const headers = {
'Content-Type': 'application/json',
};
if (sessionId) {
headers['openReplaySession.id'] = sessionId;
}
// Make the API request
fetch('https://www.your-backend.com/api/endpoint', {
method: 'GET', // or 'POST', 'PUT', etc.
headers,
// ...other options
})
.then(response => {
// Handle response
})
.catch(error => {
// Handle error
});
});
b. openReplaySession.id in Backend-Logs einbinden
Section titled b. openReplaySession.id in Backend-Logs einbindenDamit OpenReplay einen Elasticsearch-Logeintrag der aufgezeichneten Benutzersitzung zuordnen kann, muss die openReplaySession.id in jedem Backend-Fehler enthalten sein, den Sie nachverfolgen möchten.
import logging
from flask import Flask, request, g
app = Flask(__name__)
# Configure the root logger
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger()
# Create a custom logging filter
class OpenReplayFilter(logging.Filter):
def filter(self, record):
session_id = getattr(g, 'openreplay_session_id', None)
if session_id:
record.msg = f"[openReplaySession.id={session_id}] {record.msg}"
return True
# Add the filter to the logger
logger.addFilter(OpenReplayFilter())
@app.before_request
def before_request():
# Extract the session ID from headers and store it in the Flask `g` object
g.openreplay_session_id = request.headers.get('openReplaySession.id')
@app.route('/api/endpoint')
def api_endpoint():
# Your logic here
# Log an event with the session ID automatically included
logger.info("Endpoint accessed")
return 'Success', 200
@app.errorhandler(Exception)
def handle_exception(e):
# Log the error with the session ID automatically included
logger.error(f"Error: {str(e)}")
return 'Internal Server Error', 500
if __name__ == '__main__':
app.run()
4. Besondere Hinweise
Section titled 4. Besondere HinweiseStandardmäßig sucht OpenReplay jeden zu einer OpenReplay-Sitzung gehörenden Log anhand der Attribute message und utc_time. Der Fokus liegt auf Fehler-Logs, die daran erkannt werden, dass das Attribut tags den Wert error enthält.
Hinweis:
- Benutzerdefinierte Log-Struktur: Wenn Ihre Logs eine andere Struktur haben, müssen Sie gegebenenfalls Ihre Logging-Konfiguration anpassen oder den OpenReplay-Support informieren, damit Ihr Setup berücksichtigt werden kann.
- Fehlererkennung: Stellen Sie sicher, dass Fehler-Logs entsprechend getaggt sind, damit OpenReplay sie erkennen kann.
Haben Sie Fragen?
Section titled Haben Sie Fragen?Falls Probleme auftreten, treten Sie unserem Slack bei und holen Sie sich Hilfe von unserer Community.