Elastic
Découvrez comment intégrer les journaux backend d’Elastic aux relectures de session d’OpenReplay afin d’étendre vos capacités de surveillance et de débogage.
1. Créer une nouvelle clé d’API
Section titled 1. Créer une nouvelle clé d’APISelon votre configuration, vous pouvez créer une clé d’API à l’aide du tableau de bord Kibana ou via des commandes cURL.
Avec le tableau de bord Kibana
-
Connectez-vous à votre tableau de bord Kibana.
-
Accédez à Dev Tools : Naviguez vers Dev Tools > Console.
-
Créez la clé d’API : Copiez le code suivant dans la console et exécutez-le :
POST /_security/api_key { "name": "openreplay-api-key", "role_descriptors": { "openreplay-role": { "cluster": ["all"], "index": [ { "names": ["*log*"], "privileges": ["read"] } ] } } }
Avec les commandes cURL
Section titled Avec les commandes cURL-
Exécutez la commande cURL : Lancez la commande suivante dans votre terminal :
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'Remplacez
https://your-elasticsearch-host:portpar l’hôte et le port de votre Elasticsearch, etusername:passwordpar vos identifiants.
Remarque :
- Par défaut, cette intégration recherche les journaux dans tout index correspondant à
*log*. Si vous disposez d’un index spécifique pour les journaux qui ne correspond pas à ce motif, modifiez le champnamesdans la requête de création de la clé d’API. - Pour spécifier plusieurs index, séparez les noms par des virgules, par exemple
"names": ["index1", "index2"].
Résultat de la clé d’API
Section titled Résultat de la clé d’APIAprès avoir exécuté la commande, vous recevrez une réponse semblable à celle-ci :
{
"id": "eQWAIG0Bo0VqB8HXFH9-",
"name": "openreplay-api-key",
"api_key": "dZ5ycVRJTU-5UW_RYfi1_w"
}
Important : Veillez à copier l’id et l’api_key, car vous en aurez besoin pour l’intégration.
Référence : Elasticsearch - Create API Key
2. Configurer l’intégration Elasticsearch dans OpenReplay
Section titled 2. Configurer l’intégration Elasticsearch dans OpenReplayDans votre compte OpenReplay, suivez ces 3 étapes pour finaliser la corrélation des relectures de session avec les journaux backend d’Elasticsearch.
Activer l’intégration Elasticsearch
Section titled Activer l’intégration Elasticsearch- Accédez à Preferences > Integrations dans OpenReplay.
- Sélectionnez l’onglet Backend Logging.
- Sélectionnez le projet pour lequel vous souhaitez activer l’intégration Elasticsearch : Repérez la carte d’intégration Elasticsearch > Cliquez dessus.
Saisir les identifiants Elasticsearch
Section titled Saisir les identifiants ElasticsearchDans la barre latérale de l’intégration Elasticsearch, saisissez :
- API KEY ID : L’
idde la clé d’API que vous avez générée. - API Key : L’
api_keyde la clé d’API que vous avez générée. - Indexes : Si vous avez modifié l’index lors de la génération de la clé d’API, indiquez ici le ou les noms.
Vérifier la connexion :
Section titled Vérifier la connexion :- Cliquez sur Add pour tester la connexion.
3. Propager openReplaySession.id
Section titled 3. Propager openReplaySession.idPour relier un événement Elasticsearch à la session utilisateur enregistrée, un identifiant de session unique (openReplaySession.id) doit être propagé depuis votre frontend vers votre backend à chaque requête que vous souhaitez suivre.
a. Inclure openReplaySession.id dans les requêtes d’API du frontend
Section titled a. Inclure openReplaySession.id dans les requêtes d’API du frontendRemarque : tracker.start() est asynchrone et renvoie une promesse. Vous devez attendre sa résolution avant d’appeler tracker.getSessionID() afin de garantir que l’identifiant de session est disponible.
// JavaScript Example for for Single Page Applications (SPA):
// Import OpenReplay
import OpenReplay from '@openreplay/tracker';
// Initialize the tracker
const tracker = new OpenReplay({
projectKey: 'YOUR_PROJECT_KEY',
});
// 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. Inclure openReplaySession.id dans les journaux backend
Section titled b. Inclure openReplaySession.id dans les journaux backendPour qu’OpenReplay puisse associer une entrée de journal Elasticsearch à la session utilisateur enregistrée, l’openReplaySession.id doit être inclus dans chaque erreur backend que vous souhaitez suivre.
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. Considérations particulières
Section titled 4. Considérations particulièresPar défaut, OpenReplay recherche chaque journal associé à une session OpenReplay à l’aide des attributs message et utc_time. Il se concentre sur les journaux d’erreurs, identifiés en vérifiant si l’attribut tags contient la valeur error.
Remarque :
- Structure de journal personnalisée : Si vos journaux ont une structure différente, vous devrez peut-être ajuster votre configuration de journalisation ou en informer le support OpenReplay afin de prendre en charge votre configuration.
- Identification des erreurs : Assurez-vous que les journaux d’erreurs sont correctement étiquetés afin qu’OpenReplay puisse les identifier.
Des questions ?
Section titled Des questions ?Si vous rencontrez des problèmes, rejoignez notre Slack ou consultez notre Forum et obtenez de l’aide de notre communauté.