Vous pouvez utiliser un pipeline Alibaba Cloud Logstash pour migrer des données d'un cluster Elasticsearch auto-géré vers une instance Alibaba Cloud Elasticsearch.
Limites
Les instances ECS qui hébergent votre cluster Elasticsearch auto-géré doivent être déployées dans un VPC. Les instances ECS connectées via ClassicLink ne sont pas prises en charge.
Les instances Alibaba Cloud Logstash sont déployées dans un VPC. Si votre cluster Elasticsearch auto-géré et votre instance Alibaba Cloud Logstash se trouvent dans le même VPC, ils peuvent se connecter directement. S'ils résident dans des VPC différents, vous devez utiliser une passerelle NAT pour établir la connexion via Internet public. Pour plus d'informations, consultez la rubrique Configurer la transmission de données sur le réseau public à l'aide d'une passerelle NAT.
Le groupe de sécurité des instances ECS hébergeant votre cluster Elasticsearch auto-géré doit autoriser le trafic sur le port 9200 provenant de toutes les adresses IP des nœuds de l'instance Logstash. Vous trouverez ces adresses IP sur la page Informations de base.
Cette rubrique utilise un cluster Elasticsearch 8.17 auto-géré, une instance Alibaba Cloud Elasticsearch 8.17 et une instance Alibaba Cloud Logstash 8.11.4 à titre d'exemple. Les scripts fournis s'appliquent uniquement à ce scénario et peuvent ne pas être compatibles avec d'autres configurations.
Procédure
Étape 1 : Préparer l'environnement
-
Configurez un cluster Elasticsearch auto-géré.
Déployez le cluster Elasticsearch auto-géré sur Alibaba Cloud ECS. Cette rubrique utilise la version 8.17 à titre d'exemple. Pour plus d'informations, consultez la documentation Installer et exécuter Elasticsearch.
-
Créez une instance Alibaba Cloud Logstash.
Créez l'instance Logstash dans le même VPC que les instances ECS hébergeant votre cluster Elasticsearch auto-géré. Pour plus d'informations, consultez la rubrique Créer une instance Alibaba Cloud Logstash.
-
Créez l'instance Alibaba Cloud Elasticsearch de destination et activez l'indexation automatique.
Créez une instance Elasticsearch dans le même VPC et avec la même version que votre instance Logstash. Cette rubrique utilise la version 8.17 à titre d'exemple. Pour plus d'informations, consultez la rubrique Créer une instance Alibaba Cloud Elasticsearch.
-
Pour savoir comment activer l'indexation automatique, consultez la rubrique Configurer les paramètres YML.
RemarqueLogstash synchronise uniquement les données, pas les structures de données. L'activation de l'indexation automatique peut entraîner des incohérences structurelles après la migration. Pour garantir la cohérence, créez un index vide dans l'instance Elasticsearch de destination avant de commencer. Lors de la création de l'index, copiez les paramètres mappings et settings de l'index source et configurez un nombre approprié de shards.
Étape 2 : Configurer et exécuter le pipeline Logstash
Accédez à la page Clusters Logstash.
-
Accédez au cluster cible.
Dans la barre de navigation supérieure, sélectionnez la région où réside le cluster.
Sur la page Logstash Clusters, localisez le cluster et cliquez sur son ID.
Dans le volet de navigation de gauche, cliquez sur Pipelines.
Cliquez sur Create Pipeline.
-
Sur la page Create, saisissez un ID de pipeline et configurez-le.
Utilisez la configuration de pipeline suivante.
input { elasticsearch { hosts => ["http://<IP address of the self-managed Elasticsearch master node>:9200"] user => "elastic" index => "*,-.monitoring*,-.security*,-.kibana*" password => "your_password" docinfo => true } } filter { } output { elasticsearch { hosts => ["http://es-cn-mp91cbxsm000c****.elasticsearch.aliyuncs.com:9200"] user => "elastic" password => "your_password" index => "%{[@metadata][input][elasticsearch][_index]}" document_id => "%{[@metadata][input][elasticsearch][_id]}" } file_extend { path => "/ssd/1/ls-cn-v0h1kzca****/logstash/logs/debug/test" } }Tableau 1. Paramètres
Paramètre
Description
hosts
L'endpoint du service Elasticsearch auto-géré ou Alibaba Cloud. Dans la section input, utilisez le format
http://<IP address of the self-managed Elasticsearch master node>:<port>. Dans la section output, utilisez le formathttp://<ID of the Alibaba Cloud Elasticsearch instance>.elasticsearch.aliyuncs.com:9200.ImportantRemplacez <IP address of the self-managed Elasticsearch master node>, <port> et <ID of the Alibaba Cloud Elasticsearch instance> par vos valeurs réelles.
user
Le nom d'utilisateur permettant d'accéder au service Elasticsearch auto-géré ou Alibaba Cloud.
Important-
Les paramètres user et password sont obligatoires. Si votre cluster Elasticsearch auto-géré n'a pas X-Pack installé, vous pouvez laisser ces paramètres vides.
-
Le nom d'utilisateur par défaut pour accéder à une instance Alibaba Cloud Elasticsearch est elastic, comme utilisé dans ce guide. Pour utiliser un utilisateur personnalisé, vous devez lui attribuer les rôles et autorisations nécessaires. Pour plus d'informations, consultez la rubrique Utiliser Elasticsearch X-Pack pour le contrôle d'accès basé sur les rôles.
password
Le mot de passe permettant d'accéder au service Elasticsearch auto-géré ou Alibaba Cloud.
index
Spécifiez les noms des index à synchroniser. Définissez le paramètre input sur ,-.monitoring,-.security,-.kibana pour synchroniser tous les index, à l'exception des index système commençant par un
.. Définissez le paramètre output sur %{[@metadata][input][elasticsearch][_index]} afin de faire correspondre le nom de l'index issu des métadonnées. Cela garantit que les noms d'index dans Alibaba Cloud Elasticsearch sont identiques à ceux de votre cluster Elasticsearch auto-géré.docinfo
Lorsqu'il est défini sur true, le plugin d'entrée
elasticsearchextrait les métadonnées du document, telles que l'index, le type et l'ID, à partir des documents du cluster Elasticsearch auto-géré.document_id
S'il est défini sur %{[@metadata][input][elasticsearch][_id]}, l'ID du document est extrait des métadonnées. Cela garantit que les ID de document dans l'instance de destination correspondent à ceux de la source.
file_extend
Facultatif. Active la journalisation de débogage et utilise le paramètre path pour définir le chemin de sortie des journaux de débogage. Nous vous recommandons de configurer ce paramètre. Une fois activé, vous pouvez afficher la sortie directement dans la console. Si vous ne l'activez pas, vous devrez vérifier la sortie sur la destination, puis revenir à la console pour modifier le pipeline, ce qui prend du temps. Pour plus d'informations, consultez la rubrique Utiliser le débogage de la configuration du pipeline.
ImportantLe paramètre file_extend nécessite le plugin logstash-output-file_extend. Installer ou désinstaller des plugins. Le paramètre path utilise par défaut un chemin spécifié par le système. Ne le modifiez pas. Vous pouvez également récupérer le path en cliquant sur Start Configuration Debug.
Le plugin d'entrée Elasticsearch est utile pour des tâches telles que l'importation en masse de journaux de test en lisant des documents depuis un cluster Alibaba Cloud Elasticsearch. Par défaut, ce processus s'arrête une fois toutes les données lues. Toutefois, les instances Alibaba Cloud Logstash fonctionnent en continu et redémarrent automatiquement les processus arrêtés. Dans les scénarios à tâche unique, ce comportement peut entraîner une écriture de données en double. Pour éviter cela, utilisez le paramètre
scheduleavec une expression cron afin d'exécuter la tâche une seule fois. Le pipeline s'arrête après cette exécution unique, ce qui empêche toute répétition. Pour plus d'informations, consultez la documentation officielle Logstash documentation on Scheduling.Par exemple, pour planifier l'exécution de la tâche le 5 mars à 13 h 20 :
schedule => "20 13 5 3 *"Pour plus d'informations sur les options de configuration du pipeline, consultez la rubrique Fichiers de configuration Logstash.
-
-
Cliquez sur Next step et configurez les paramètres du pipeline.
Paramètre
Description
Pipeline Workers
Nombre de threads de travail pour les étapes de filtrage et de sortie. Augmentez cette valeur si les événements sont mis en attente ou si le processeur est sous-utilisé. Valeur par défaut : nombre de cœurs de processeur.
Pipeline Batch Size
Nombre maximal d'événements collectés par un worker avant l'exécution des filtres et des sorties. Des lots plus volumineux augmentent l'utilisation de la mémoire et peuvent nécessiter une taille de tas JVM (LS_HEAP_SIZE) plus importante. Valeur par défaut : 125.
Pipeline Batch Delay
Temps d'attente en millisecondes avant la distribution d'un lot de taille insuffisante à un thread de travail. Valeur par défaut : 50 ms.
Queue Type
Modèle de mise en file d'attente interne pour la mise en tampon des événements entre les étapes. Valeurs valides :
-
MEMORY : valeur par défaut. Utilise une file d'attente en mémoire.
-
PERSISTED : file d'attente persistante basée sur le disque.
Queue Max Bytes
Quantité maximale de données que la file d'attente peut stocker, en
MB. La valeur doit être un entier compris entre1et253-1. Valeur par défaut :1024.RemarqueAssurez-vous que cette valeur est inférieure à votre capacité totale de disque.
Queue Checkpoint Writes
Nombre maximal d'événements écrits avant qu'un point de contrôle ne soit forcé (file d'attente persistante uniquement). 0 signifie aucune limite. Valeur par défaut : 1024.
AvertissementL'enregistrement et le déploiement de la configuration déclenchent un redémarrage de l'instance. Procédez uniquement lorsque cela n'affectera pas vos activités.
-
-
Cliquez sur Save ou sur Save and Deploy.
Save : enregistre la configuration du pipeline sans l'appliquer. Après l'enregistrement, vous revenez à la page Pipelines. Dans la section Pipelines, vous pouvez cliquer sur Deploy Now dans la colonne Actions pour redémarrer l'instance et appliquer la configuration.
Save and Deploy : enregistre et déploie la configuration, puis redémarre l'instance pour appliquer les modifications.
Étape 3 : Consulter les résultats de la migration
-
Dans Alibaba Cloud Elasticsearch, connectez-vous à la console Kibana. Dans le volet de navigation de gauche, cliquez sur l'icône
, puis sélectionnez .RemarqueCette rubrique utilise Alibaba Cloud Elasticsearch 8.17 à titre d'exemple. L'interface utilisateur peut varier selon votre version.
-
Dans la Console, exécutez la commande
GET /_cat/indices?vpour afficher les index migrés avec succès.Les résultats renvoyés indiquent que l'index
ordersprésente un état de santé vert (green), un statut ouvert (open) et un nombre de documents (docs.count) égal à 1, ce qui confirme que les données ont été migrées avec succès.
FAQ
-
Q : Comment établir la connectivité réseau si les instances ECS hébergeant le cluster Elasticsearch auto-géré et l'instance Alibaba Cloud Logstash appartiennent à des comptes différents ?
R : Si les instances ECS et l'instance Logstash appartiennent à des comptes différents, elles doivent se trouver dans des VPC distincts. Connectez les deux VPC à l'aide de Cloud Enterprise Network (CEN). Pour plus d'informations, consultez la rubrique Étape 3 : Attacher des instances réseau.
-
Q : Que faire en cas d'erreur lors de l'écriture des données par Logstash ?
R : Consultez la rubrique Résolution des problèmes d'écriture de données Logstash pour obtenir des étapes de diagnostic et de résolution.
-
Q : Puis-je utiliser Alibaba Cloud Logstash 8.11 pour migrer des données d'une instance Elasticsearch 7.2 auto-gérée vers une instance Alibaba Cloud Elasticsearch 7.10 ?
R : Oui. Toutefois, vous devez respecter les exigences clés suivantes :
-
Réseau et authentification
-
Elasticsearch auto-géré → Alibaba Cloud Logstash
L'instance Elasticsearch auto-gérée doit disposer d'une adresse IP publique et d'une liste d'autorisation configurée.
Configurez l'authentification pour le plugin d'entrée :
user/password(Basic Auth) ou un certificat SSL.
-
Alibaba Cloud Logstash → Alibaba Cloud Elasticsearch
Utilisez une connexion privée directe au sein du même VPC (recommandé). Cette méthode offre un accès sans mot de passe autorisé par l'association d'instances.
Si les instances se trouvent dans des VPC différents, configurez un groupe de sécurité et une liste d'autorisation.
Exemple de configuration Logstash
input { elasticsearch { hosts => ["http://<public_IP_of_self-managed_ES>:9200"] user => "self_es_user" password => "self_es_password" index => "source_index" query => '{ "query": { "match_all": {} } }' size => 500 scroll => "5m" docinfo => true # Preserves _source metadata, which is used to specify _id on write. } } filter { # Optional: Add field cleanup, mapping conversion, and more. } output { elasticsearch { hosts => ["https://<internal_endpoint_of_Alibaba_Cloud_ES>:9200"] # Alibaba Cloud Logstash typically injects authentication automatically after you select the destination Elasticsearch instance. index => "target_index" document_id => "%{[@metadata][_id]}" # Ensures consistent document IDs. ssl => true ssl_certificate_verification => false # You can disable this in test environments. We recommend that you use a CA certificate in production. } } -
-