Elastic
Découvrez comment intégrer les logs backend d’Elastic aux rejeux 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 aux Dev Tools : Naviguez vers Dev Tools > Console.
-
Créez la API Key : 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 : Exécutez 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 recherchera les logs dans tout index correspondant à
*log*. Si vous disposez d’un index spécifique pour les logs qui ne correspond pas à ce modèle, veuillez modifier 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 à :
{
"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 les corrélations des rejeux de session avec les logs 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 de l’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 lier un événement Elasticsearch à la session utilisateur enregistrée, un identifiant de session unique (openReplaySession.id) doit être propagé de 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 Promise. Vous devez attendre sa résolution avant d’appeler tracker.getSessionID() afin de garantir que l’ID de session est disponible.
// 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. Inclure openReplaySession.id dans les logs du backend
Section titled b. Inclure openReplaySession.id dans les logs du backendPour qu’OpenReplay associe une entrée de log Elasticsearch à la session utilisateur enregistrée, le openReplaySession.id doit être inclus dans chaque erreur du 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 log associé à une session OpenReplay à l’aide des attributs message et utc_time. Il se concentre sur les logs d’erreur, identifiés en vérifiant si l’attribut tags contient la valeur error.
Remarque :
- Structure de logs personnalisée : Si vos logs ont une structure différente, vous devrez peut-être ajuster votre configuration de logging ou en informer le support d’OpenReplay afin de prendre en charge votre configuration.
- Identification des erreurs : Assurez-vous que les logs d’erreur sont correctement tagués afin qu’OpenReplay puisse les identifier.
Vous avez des questions ?
Section titled Vous avez des questions ?Si vous rencontrez des problèmes, rejoignez notre Slack ou consultez notre Forum et obtenez de l’aide auprès de notre communauté.