Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
S’applique à : ✔️ Machines virtuelles Linux ✔️ Groupes identiques flexibles
Cet article vous guide dans le déploiement d’Elasticsearch, de Logstash et de Kibana sur une machine virtuelle Ubuntu dans Azure. Pour voir Elastic Stack en action, vous pouvez éventuellement vous connecter à Kibana et travailler avec des exemples de données de journalisation.
Vous pouvez également suivre le module Déployer Elastic sur des machines virtuelles Azure pour avoir un tutoriel plus détaillé sur le déploiement d’Elastic sur des machines virtuelles Azure.
Ce didacticiel vous montre comment effectuer les opérations suivantes :
- Créer une machine virtuelle Ubuntu dans un groupe de ressources Azure
- Installer Elasticsearch, Logstash et Kibana sur la machine virtuelle
- Envoyer des exemples de données à Elasticsearch avec Logstash
- Ouvrir des ports et manipuler des données dans la console Kibana
Ce déploiement convient pour le développement de base avec Elastic Stack. Pour plus d’informations sur Elastic Stack, notamment des recommandations pour un environnement de production, voir la documentation d’Elastic et Azure Architecture Center.
Prérequis
Utilisez l’environnement Bash dans Azure Cloud Shell. Pour obtenir plus d’informations, consultez Démarrage d’Azure Cloud Shell.
Si vous préférez exécuter les commandes de référence de l’interface de ligne de commande localement, installez l’interface Azure CLI. Si vous exécutez sur Windows ou macOS, envisagez d’exécuter Azure CLI dans un conteneur Docker. Pour plus d’informations, consultez Guide pratique pour exécuter Azure CLI dans un conteneur Docker.
Si vous utilisez une installation locale, connectez-vous à Azure CLI à l’aide de la commande az login. Pour finir le processus d’authentification, suivez les étapes affichées dans votre terminal. Pour obtenir d’autres options de connexion, consultez S’authentifier auprès d’Azure à l’aide d’Azure CLI.
Lorsque vous y êtes invité, installez l’extension Azure CLI lors de la première utilisation. Pour plus d’informations sur les extensions, consultez Utiliser et gérer des extensions avec Azure CLI.
Exécutez az version pour rechercher la version et les bibliothèques dépendantes installées. Pour effectuer une mise à niveau vers la dernière version, exécutez az upgrade.
- Cet article nécessite la version 2.0.4 ou ultérieure de l’interface Azure CLI. Si vous utilisez Azure Cloud Shell, la version la plus récente est déjà installée.
Créer un groupe de ressources
Dans cette section, les variables d’environnement sont déclarées à utiliser dans les commandes suivantes. Un suffixe aléatoire est ajouté aux noms de ressources pour l’unicité.
export RANDOM_SUFFIX=$(openssl rand -hex 3)
export RESOURCE_GROUP="myResourceGroup$RANDOM_SUFFIX"
export REGION="eastus2"
az group create --name $RESOURCE_GROUP --location $REGION
Résultats :
{
"id": "/subscriptions/xxxxx/resourceGroups/myResourceGroupxxxxxx",
"location": "eastus",
"managedBy": null,
"name": "myResourceGroupxxxxxx",
"properties": {
"provisioningState": "Succeeded"
},
"tags": null,
"type": "Microsoft.Resources/resourceGroups"
}
Création d'une machine virtuelle
Cette section crée une machine virtuelle avec un nom unique, tout en générant également des clés SSH si elles n’existent pas déjà. Un suffixe aléatoire est ajouté pour garantir l’unicité.
export VM_NAME="myVM$RANDOM_SUFFIX"
az vm create \
--resource-group $RESOURCE_GROUP \
--name $VM_NAME \
--image Ubuntu2204 \
--admin-username azureuser \
--generate-ssh-keys
Lorsque la machine virtuelle a été créée, l’interface de ligne de commande Azure affiche des informations similaires à l’exemple suivant. Prenez note du publicIpAddress. Cette adresse est utilisée pour accéder à la machine virtuelle.
Résultats :
{
"fqdns": "",
"id": "/subscriptions/xxxxx/resourceGroups/myResourceGroupxxxxxx/providers/Microsoft.Compute/virtualMachines/myVMxxxxxx",
"location": "eastus",
"macAddress": "xx:xx:xx:xx:xx:xx",
"powerState": "VM running",
"privateIpAddress": "10.0.0.4",
"publicIpAddress": "x.x.x.x",
"resourceGroup": "$RESOURCE_GROUP"
}
Se connecter avec SSH à votre machine virtuelle
Si vous ne connaissez pas déjà l’adresse IP publique de votre machine virtuelle, exécutez la commande suivante pour la répertorier :
az network public-ip list --resource-group $RESOURCE_GROUP --query [].ipAddress
Utilisez la commande suivante pour créer une session SSH avec la machine virtuelle. Remplacez l’adresse IP publique correcte de votre machine virtuelle. Dans cet exemple, l’adresse IP est 40.68.254.142.
export PUBLIC_IP_ADDRESS=$(az network public-ip list --resource-group $RESOURCE_GROUP --query [].ipAddress -o tsv)
Installer Elastic Stack
Dans cette section, vous importez la clé de signature Elasticsearch et mettez à jour votre liste de sources APT pour inclure le référentiel de package Élastique. Cela est suivi de l’installation de l’environnement d’exécution Java requis pour les composants Elastic Stack.
ssh azureuser@$PUBLIC_IP_ADDRESS -o StrictHostKeyChecking=no "
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
echo "deb https://artifacts.elastic.co/packages/5.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-5.x.list
"
Installez la machine virtuelle Java sur la machine virtuelle et configurez la variable JAVA_HOME :
ssh azureuser@$PUBLIC_IP_ADDRESS -o StrictHostKeyChecking=no "
sudo apt install -y openjdk-8-jre-headless
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
"
Exécutez la commande suivante pour mettre à jour les sources de package Ubuntu et installer Elasticsearch, Kibana et Logstash.
ssh azureuser@$PUBLIC_IP_ADDRESS -o StrictHostKeyChecking=no "
wget -qO elasticsearch.gpg https://artifacts.elastic.co/GPG-KEY-elasticsearch
sudo mv elasticsearch.gpg /etc/apt/trusted.gpg.d/
echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-7.x.list
sudo apt update
# Now install the ELK stack
sudo apt install -y elasticsearch kibana logstash
"
Notes
Des instructions d’installation détaillées, notamment concernant les dispositions de répertoire et la configuration initiale, figurent dans la documentation d’Elastic.
Démarrer Elasticsearch
Démarrez Elasticsearch sur votre machine virtuelle avec la commande suivante :
ssh azureuser@$PUBLIC_IP_ADDRESS -o StrictHostKeyChecking=no "
sudo systemctl start elasticsearch.service
"
Cette commande ne produit aucune sortie. Vérifiez donc que Elasticsearch est en cours d’exécution sur la machine virtuelle avec cette commande curl :
ssh azureuser@$PUBLIC_IP_ADDRESS -o StrictHostKeyChecking=no "
sleep 11
sudo curl -XGET 'localhost:9200/'
"
Si Elasticsearch est en cours d’exécution, vous voyez une sortie telle que celle-ci :
Résultats :
{
"name" : "w6Z4NwR",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "SDzCajBoSK2EkXmHvJVaDQ",
"version" : {
"number" : "5.6.3",
"build_hash" : "1a2f265",
"build_date" : "2017-10-06T20:33:39.012Z",
"build_snapshot" : false,
"lucene_version" : "6.6.1"
},
"tagline" : "You Know, for Search"
}
Démarrer Logstash et ajouter des données à Elasticsearch
Démarrez Logstash avec la commande suivante :
ssh azureuser@$PUBLIC_IP_ADDRESS -o StrictHostKeyChecking=no "
sudo systemctl start logstash.service
"
Testez Logstash pour vous assurer qu’il fonctionne correctement :
ssh azureuser@$PUBLIC_IP_ADDRESS -o StrictHostKeyChecking=no "
# Time-limited test with file input instead of stdin
sudo timeout 11s /usr/share/logstash/bin/logstash -e 'input { file { path => "/var/log/syslog" start_position => "end" sincedb_path => "/dev/null" stat_interval => "1 second" } } output { stdout { codec => json } }' || echo "Logstash test completed"
"
Voici un pipeline Logstash de base, qui renvoie une entrée standard en écho à la sortie standard.
Configurez Logstash pour transférer les messages du noyau de cet machine virtuelle vers Elasticsearch. Pour créer le fichier de configuration Logstash, exécutez la commande suivante qui écrit la configuration dans un nouveau fichier appelé vm-syslog-logstash.conf :
ssh azureuser@$PUBLIC_IP_ADDRESS -o StrictHostKeyChecking=no "
cat << 'EOF' > vm-syslog-logstash.conf
input {
stdin {
type => "stdin-type"
}
file {
type => "syslog"
path => [ "/var/log/*.log", "/var/log/*/*.log", "/var/log/messages", "/var/log/syslog" ]
start_position => "beginning"
}
}
output {
stdout {
codec => rubydebug
}
elasticsearch {
hosts => "localhost:9200"
}
}
EOF
"
Testez cette configuration et envoyez les données syslog à Elasticsearch :
# Run Logstash with the configuration for 60 seconds
sudo timeout 60s /usr/share/logstash/bin/logstash -f vm-syslog-logstash.conf &
LOGSTASH_PID=$!
# Wait for data to be processed
echo "Processing logs for 60 seconds..."
sleep 65
# Verify data was sent to Elasticsearch with proper error handling
echo "Verifying data in Elasticsearch..."
ES_COUNT=$(sudo curl -s -XGET 'localhost:9200/_cat/count?v' | tail -n 1 | awk '{print $3}' 2>/dev/null || echo "0")
# Make sure ES_COUNT is a number or default to 0
if ! [[ "$ES_COUNT" =~ ^[0-9]+$ ]]; then
ES_COUNT=0
echo "Warning: Could not get valid document count from Elasticsearch"
fi
echo "Found $ES_COUNT documents in Elasticsearch"
if [ "$ES_COUNT" -gt 0 ]; then
echo "✅ Logstash successfully sent data to Elasticsearch"
else
echo "❌ No data found in Elasticsearch, there might be an issue with Logstash configuration"
fi
Votre terminal affiche un écho des entrées syslog à mesure que celles-ci sont envoyées à Elasticsearch. Utilisez Ctrl+C pour quitter Logstash une fois que vous avez envoyé des données.
Démarrer Kibana et visualiser les données dans Elasticsearch
Modifiez le fichier de configuration Kibana (/etc/kibana/kibana.yml) et modifiez l’adresse IP sur laquelle Kibana écoute pour pouvoir y accéder à partir de votre navigateur web :
server.host: "0.0.0.0"
Démarrez Kibana avec la commande suivante :
ssh azureuser@$PUBLIC_IP_ADDRESS -o StrictHostKeyChecking=no "
sudo systemctl start kibana.service
"
Ouvrez le port 5601 à partir d’Azure CLI pour autoriser l’accès à distance à la console Kibana :
az vm open-port --port 5601 --resource-group $RESOURCE_GROUP --name $VM_NAME
Étapes suivantes
Dans ce didacticiel, vous avez déployé Elastic Stack sur une machine virtuelle de développement dans Azure. Vous avez appris à :
- Créer une machine virtuelle Ubuntu dans un groupe de ressources Azure
- Installer Elasticsearch, Logstash et Kibana sur la machine virtuelle
- Envoyer des exemples de données à Elasticsearch avec Logstash
- Ouvrir des ports et manipuler des données dans la console Kibana