Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für: ✔️ Linux-VMs ✔️ Flexible Skalierungsgruppen
In diesem Artikel erfahren Sie, wie Sie Elasticsearch, Logstash und Kibana auf einem virtuellen Ubuntu-Computer in Azure bereitstellen. Wenn Sie den Elastic Stack in Aktion erleben möchten, können Sie optional eine Verbindung mit Kibana herstellen und mit einigen Beispielprotokolldaten arbeiten.
Darüber hinaus können Sie dem Modul Bereitstellen von Elastic auf Azure Virtual Machines folgen, um ein ausführlichere Tutorial zur Bereitstellung von Elastic auf Azure Virtual Machines zu erhalten.
In diesem Tutorial lernen Sie Folgendes:
- Erstellen eines virtuellen Ubuntu-Computers in einer Azure-Ressourcengruppe
- Installieren von Elasticsearch, Logstash und Kibana auf dem virtuellen Computer
- Senden von Beispieldaten an Elasticsearch mithilfe von Logstash
- Öffnen von Ports und Arbeiten mit Daten in der Kibana-Konsole
Diese Bereitstellung eignet sich für einfache Entwicklungsszenarien mit dem Elastic Stack. Weitere Informationen zum Elastic Stack (einschließlich Empfehlungen für eine Produktionsumgebung) finden Sie in der Elastic-Dokumentation sowie im Azure-Architekturcenter.
Voraussetzungen
Verwenden Sie die Bash-Umgebung in Azure Cloud Shell. Weitere Informationen finden Sie unter "Erste Schritte mit Azure Cloud Shell".
Wenn Sie CLI-Referenzbefehle lieber lokal ausführen, installieren Sie die Azure CLI. Wenn Sie Windows oder macOS ausführen, sollten Sie die Azure CLI in einem Docker-Container ausführen. Weitere Informationen finden Sie unter Ausführen der Azure CLI in einem Docker-Container.
Wenn Sie eine lokale Installation verwenden, melden Sie sich mithilfe des Befehls az login bei der Azure CLI an. Führen Sie die in Ihrem Terminal angezeigten Schritte aus, um den Authentifizierungsprozess abzuschließen. Weitere Anmeldeoptionen finden Sie unter Authentifizieren bei Azure mithilfe der Azure CLI.
Installieren Sie die Azure CLI-Erweiterung beim ersten Einsatz, wenn Sie dazu aufgefordert werden. Weitere Informationen zu Erweiterungen finden Sie unter Verwenden und Verwalten von Erweiterungen mit der Azure CLI.
Führen Sie az version aus, um die installierte Version und die abhängigen Bibliotheken zu ermitteln. Führen Sie az upgrade aus, um das Upgrade auf die aktuelle Version durchzuführen.
- Für diesen Artikel ist mindestens Version 2.0.4 der Azure CLI erforderlich. Bei Verwendung von Azure Cloud Shell ist die aktuelle Version bereits installiert.
Erstellen einer Ressourcengruppe
In diesem Abschnitt werden Umgebungsvariablen für die Verwendung in nachfolgenden Befehlen deklariert. Ein zufälliges Suffix wird zur Eindeutigkeit an Ressourcennamen angefügt.
export RANDOM_SUFFIX=$(openssl rand -hex 3)
export RESOURCE_GROUP="myResourceGroup$RANDOM_SUFFIX"
export REGION="eastus2"
az group create --name $RESOURCE_GROUP --location $REGION
Ergebnisse:
{
"id": "/subscriptions/xxxxx/resourceGroups/myResourceGroupxxxxxx",
"location": "eastus",
"managedBy": null,
"name": "myResourceGroupxxxxxx",
"properties": {
"provisioningState": "Succeeded"
},
"tags": null,
"type": "Microsoft.Resources/resourceGroups"
}
Erstellen eines virtuellen Computers
In diesem Abschnitt wird ein virtueller Computer mit einem eindeutigen Namen erstellt, während auch SSH-Schlüssel generiert werden, wenn sie noch nicht vorhanden sind. Ein zufälliges Suffix wird angefügt, um die Eindeutigkeit sicherzustellen.
export VM_NAME="myVM$RANDOM_SUFFIX"
az vm create \
--resource-group $RESOURCE_GROUP \
--name $VM_NAME \
--image Ubuntu2204 \
--admin-username azureuser \
--generate-ssh-keys
Nach dem Erstellen der VM zeigt die Azure CLI ähnliche Informationen wie im folgenden Beispiel an. Notieren Sie sich die öffentliche IP-Adresse. Diese Adresse wird verwendet, um auf den virtuellen Computer zuzugreifen.
Ergebnisse:
{
"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"
}
Herstellen einer SSH-Verbindung mit Ihrem virtuellen Computer
Wenn Sie die öffentliche IP-Adresse Ihres virtuellen Computers noch nicht kennen, führen Sie den folgenden Befehl aus, um ihn auflisten zu können:
az network public-ip list --resource-group $RESOURCE_GROUP --query [].ipAddress
Erstellen Sie mit dem folgenden Befehl eine SSH-Sitzung mit dem virtuellen Computer. Ersetzen Sie die korrekte öffentliche IP-Adresse Ihres virtuellen Computers. In diesem Beispiel lautet die IP-Adresse 40.68.254.142.
export PUBLIC_IP_ADDRESS=$(az network public-ip list --resource-group $RESOURCE_GROUP --query [].ipAddress -o tsv)
Einrichten des Elastic Stack
In diesem Abschnitt importieren Sie den Elasticsearch-Signaturschlüssel und aktualisieren Ihre APT-Quellenliste so, dass sie das Elastic-Paket-Repository enthält. Anschließend wird die Java-Laufzeitumgebung installiert, die für die Elastic Stack-Komponenten erforderlich ist.
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
"
Installieren Sie den virtuellen Java-Computer auf dem virtuellen Computer, und konfigurieren Sie die JAVA_HOME Variable:
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
"
Führen Sie den folgenden Befehl aus, um Ubuntu-Paketquellen zu aktualisieren und Elasticsearch, Kibana und Logstash zu installieren.
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
"
Hinweis
Eine ausführliche Installationsanleitung mit Verzeichnislayouts und Erstkonfiguration finden Sie in der Elastic-Dokumentation.
Starten von Elasticsearch
Führen Sie den folgenden Befehl aus, um Elasticsearch auf Ihrem virtuellen Computer zu starten:
ssh azureuser@$PUBLIC_IP_ADDRESS -o StrictHostKeyChecking=no "
sudo systemctl start elasticsearch.service
"
Dieser Befehl erzeugt keine Ausgabe. Stellen Sie daher sicher, dass Elasticsearch auf dem virtuellen Computer mit diesem curl-Befehl ausgeführt wird:
ssh azureuser@$PUBLIC_IP_ADDRESS -o StrictHostKeyChecking=no "
sleep 11
sudo curl -XGET 'localhost:9200/'
"
Wenn Elasticsearch ausgeführt wird, erhalten Sie eine Ausgabe wie die folgende:
Ergebnisse:
{
"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"
}
Starten von Logstash und Hinzufügen von Daten zu Elasticsearch
Führen Sie den folgenden Befehl aus, um Logstash zu starten:
ssh azureuser@$PUBLIC_IP_ADDRESS -o StrictHostKeyChecking=no "
sudo systemctl start logstash.service
"
Testen Sie Logstash, um sicherzustellen, dass sie ordnungsgemäß funktioniert:
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"
"
Hierbei handelt es sich um eine einfache Logstash-Pipeline, die Standardeingaben als Standardausgaben zurückgibt.
Richten Sie Logstash so ein, dass Kernelnachrichten von diesem virtuellen Computer an Elasticsearch weitergeleitet werden. Führen Sie zum Erstellen der Logstash-Konfigurationsdatei den folgenden Befehl aus, der die Konfiguration in eine neue Datei namens vm-syslog-logstash.conf schreibt:
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
"
Testen Sie diese Konfiguration, und senden Sie die Syslog-Daten an 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
Die Syslog-Einträge werden während der Übermittlung an Elasticsearch in Ihrem Terminal angezeigt. Verwenden Sie STRG+C, um logstash zu beenden, nachdem Sie einige Daten gesendet haben.
Starten von Kibana und Visualisieren der Daten in Elasticsearch
Bearbeiten Sie die Kibana-Konfigurationsdatei (/etc/kibana/kibana.yml), und ändern Sie die IP-Adresse, auf die Kibana lauscht, damit Sie über Ihren Webbrowser darauf zugreifen können:
server.host: "0.0.0.0"
Führen Sie den folgenden Befehl aus, um Kibana zu starten:
ssh azureuser@$PUBLIC_IP_ADDRESS -o StrictHostKeyChecking=no "
sudo systemctl start kibana.service
"
Öffnen Sie über die Azure-Befehlszeilenschnittstelle den Port 5601, um den Remotezugriff auf die Kibana-Konsole zu ermöglichen:
az vm open-port --port 5601 --resource-group $RESOURCE_GROUP --name $VM_NAME
Nächste Schritte
In diesem Tutorial haben Sie den Elastic Stack für einen virtuellen Entwicklungscomputer in Azure bereitgestellt. Sie haben Folgendes gelernt:
- Erstellen eines virtuellen Ubuntu-Computers in einer Azure-Ressourcengruppe
- Installieren von Elasticsearch, Logstash und Kibana auf dem virtuellen Computer
- Senden von Beispieldaten aus Logstash an Elasticsearch
- Öffnen von Ports und Arbeiten mit Daten in der Kibana-Konsole