Sdílet prostřednictvím


Instalace elastického stacku (ELK) na virtuální počítač Azure

Platí pro: ✔️ Flexibilní škálovací sady virtuálních počítačů s Linuxem ✔️

Tento článek vás provede nasazením Elasticsearch, Logstash a Kibana na virtuálním počítači s Ubuntu v Azure. Pokud chcete vidět Elastic Stack v akci, můžete se volitelně připojit ke Kibaně a pracovat s ukázkovými daty z protokolů.

Kromě toho můžete postupovat podle modulu Deploy Elastic on Azure Virtual Machines, který nabízí více průvodcovský tutoriál pro nasazení Elastic na virtuálních počítačích Azure.

V tomto kurzu se naučíte:

  • Vytvoření virtuálního počítače s Ubuntu ve skupině prostředků Azure
  • Instalace Elasticsearch, Logstash a Kibana na virtuálním počítači
  • Odeslání ukázkových dat do Elasticsearch pomocí Logstash
  • Otevření portů a práce s daty v konzole Kibana

Toto nasazení je vhodné pro základní vývoj pomocí elastického stacku. Další informace o elastickém stacku, včetně doporučení pro produkční prostředí, najdete v dokumentaci k Elastic a centru architektury Azure.

Požadavky

  • Tento článek vyžaduje verzi 2.0.4 nebo novější azure CLI. Pokud používáte Azure Cloud Shell, je už nainstalovaná nejnovější verze.

Vytvoření skupiny zdrojů

V této části se proměnné prostředí deklarují pro použití v následných příkazech. K názvům prostředků pro jedinečnost se připojí náhodná přípona.

export RANDOM_SUFFIX=$(openssl rand -hex 3)
export RESOURCE_GROUP="myResourceGroup$RANDOM_SUFFIX"
export REGION="eastus2"
az group create --name $RESOURCE_GROUP --location $REGION

Výsledky:

{
  "id": "/subscriptions/xxxxx/resourceGroups/myResourceGroupxxxxxx",
  "location": "eastus",
  "managedBy": null,
  "name": "myResourceGroupxxxxxx",
  "properties": {
    "provisioningState": "Succeeded"
  },
  "tags": null,
  "type": "Microsoft.Resources/resourceGroups"
}

Vytvoření virtuálního počítače

Tato část vytvoří virtuální počítač s jedinečným názvem a zároveň vygeneruje klíče SSH, pokud ještě neexistují. K zajištění jedinečnosti se připojí náhodná přípona.

export VM_NAME="myVM$RANDOM_SUFFIX"
az vm create \
    --resource-group $RESOURCE_GROUP \
    --name $VM_NAME \
    --image Ubuntu2204 \
    --admin-username azureuser \
    --generate-ssh-keys

Po vytvoření virtuálního počítače se v Azure CLI zobrazí podobné informace jako v následujícím příkladu. Poznamenejte si publicIpAddress. Tato adresa se používá pro přístup k virtuálnímu počítači.

Výsledky:

{
  "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"
}

Připojení SSH k virtuálnímu počítači

Pokud ještě neznáte veřejnou IP adresu virtuálního počítače, zobrazte seznam spuštěním následujícího příkazu:

az network public-ip list --resource-group $RESOURCE_GROUP --query [].ipAddress

K vytvoření relace SSH s virtuálním počítačem použijte následující příkaz. Nahraďte správnou veřejnou IP adresu vašeho virtuálního počítače. V tomto příkladu je IP adresa 40.68.254.142.

export PUBLIC_IP_ADDRESS=$(az network public-ip list --resource-group $RESOURCE_GROUP --query [].ipAddress -o tsv)

Nainstalujte Elastic Stack

V této části naimportujete podpisový klíč Elasticsearch a aktualizujete seznam zdrojů APT tak, aby zahrnoval úložiště elastických balíčků. Následuje instalace prostředí runtime Java, které je vyžadováno pro komponenty elastického zásobníku.

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
"

Nainstalujte virtuální stroj Java na virtuální počítač a nakonfigurujte proměnnou 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
"

Spuštěním následujícího příkazu aktualizujte zdroje balíčků Ubuntu a nainstalujte Elasticsearch, Kibana a 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
"

Poznámka:

Podrobné pokyny k instalaci, včetně rozložení adresářů a počáteční konfigurace, se spravují v dokumentaci k Elastic

Spustit Elasticsearch

Na virtuálním počítači spusťte Elasticsearch pomocí následujícího příkazu:

ssh azureuser@$PUBLIC_IP_ADDRESS -o StrictHostKeyChecking=no "
sudo systemctl start elasticsearch.service
"

Tento příkaz nevygeneruje žádný výstup, proto pomocí tohoto příkazu curl ověřte, že na virtuálním počítači běží Elasticsearch:

ssh azureuser@$PUBLIC_IP_ADDRESS -o StrictHostKeyChecking=no "
sleep 11
sudo curl -XGET 'localhost:9200/'
"

Pokud je elasticsearch spuštěný, zobrazí se výstup podobný tomuto:

Výsledky:

{
  "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"
}

Spuštění Logstash a přidání dat do Elasticsearch

Spusťte Logstash pomocí následujícího příkazu:

ssh azureuser@$PUBLIC_IP_ADDRESS -o StrictHostKeyChecking=no "
sudo systemctl start logstash.service
"

Otestujte Logstash a ujistěte se, že funguje správně:

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"
"

Toto je základní kanál Logstash, který vrací standardní vstup do standardního výstupu.

Nastavte Logstash pro přeposílání zpráv jádra z tohoto virtuálního počítače do Elasticsearch. Pokud chcete vytvořit konfigurační soubor Logstash, spusťte následující příkaz, který zapíše konfiguraci do nového souboru s názvem 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
"

Otestujte tuto konfiguraci a odešlete data syslogu do 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

V terminálu se vám zobrazují položky syslogu, jakmile jsou odesílány do Elasticsearch. Jakmile odešlete nějaká data, pomocí kombinace kláves CTRL+C ukončete Logstash.

Spuštění Kibany a vizualizace dat v Elasticsearch

Upravte konfigurační soubor Kibana (/etc/kibana/kibana.yml) a změňte IP adresu, na které Kibana naslouchá, abyste k němu měli přístup z webového prohlížeče:

server.host: "0.0.0.0"

Spusťte Kibana pomocí následujícího příkazu:

ssh azureuser@$PUBLIC_IP_ADDRESS -o StrictHostKeyChecking=no "
sudo systemctl start kibana.service
"

Otevřete port 5601 z Azure CLI a povolte vzdálený přístup ke konzole Kibana:

az vm open-port --port 5601 --resource-group $RESOURCE_GROUP --name $VM_NAME

Další kroky

V tomto kurzu jste nasadili Elastic Stack do vývojového virtuálního počítače v Azure. Naučili jste se:

  • Vytvoření virtuálního počítače s Ubuntu ve skupině prostředků Azure
  • Instalace Elasticsearch, Logstash a Kibana na virtuálním počítači
  • Odeslání ukázkových dat do Elasticsearch z Logstash
  • Otevření portů a práce s daty v konzole Kibana