Aracılığıyla paylaş


Azure VM'ye Elastik Yığını (ELK) yükleyin

Şunlar için geçerlidir: ✔️ Linux VM'leri ✔️ Esnek ölçek kümeleri

Bu makalede Azure'da Ubuntu VM'sinde Elasticsearch, Logstash ve Kibana'nın nasıl dağıtılacağı açıklanmaktadır. Elastik Yığının çalıştığını görmek için isteğe bağlı olarak Kibana'ya bağlanabilir ve bazı örnek günlük verileriyle çalışabilirsiniz.

Ayrıca, Azure Sanal Makineler'de Elastik dağıtma konusunda daha kılavuzlu bir öğretici için Azure Sanal Makinelerinde Elastik Dağıtma modülünü de izleyebilirsiniz.

Bu öğreticide şunların nasıl yapılacağını öğreneceksiniz:

  • Azure kaynak grubunda Ubuntu VM oluşturma
  • VM'ye Elasticsearch, Logstash ve Kibana yükleme
  • Logstash ile Elasticsearch'e örnek veri gönderme
  • Kibana konsolunda bağlantı noktalarını açma ve verilerle çalışma

Bu dağıtım, Elastik Yığın ile temel geliştirme için uygundur. Üretim ortamı önerileri de dahil olmak üzere Elastik Yığın hakkında daha fazla bilgi için Elastik belgelerine ve Azure Mimari Merkezi'ne bakın.

Önkoşullar

  • Bu makale, Azure CLI'nın 2.0.4 veya sonraki bir sürümünü gerektirir. Azure Cloud Shell kullanılıyorsa en son sürüm zaten yüklüdür.

Kaynak grubu oluşturma

Bu bölümde, ortam değişkenleri sonraki komutlarda kullanılmak üzere bildirilir. Benzersizlik için kaynak adlarına rastgele bir sonek eklenir.

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

Sonuçlar:

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

Sanal makine oluşturun

Bu bölüm, benzersiz bir isme sahip bir VM oluşturur ve var olmadığı durumlarda SSH anahtarları da oluşturur. Benzersiz olduğundan emin olmak için rastgele bir sonek eklenir.

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

VM oluşturulduğunda Azure CLI, aşağıdaki örneğe benzer bilgiler gösterir. publicIpAddress'i not edin. Bu adres, VM’ye erişmek için kullanılır.

Sonuçlar:

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

VM’ye SSH uygulama

VM'nizin genel IP adresini bilmiyorsanız, listelemek için aşağıdaki komutu çalıştırın:

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

Sanal makineyle SSH oturumu oluşturmak için aşağıdaki komutu kullanın. Sanal makinenizin doğru genel IP adresi ile değiştirdiğinizden emin olun. Bu örnekte IP adresi 40.68.254.142'dir.

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

Elastik Yığını Yükleme

Bu bölümde Elasticsearch imzalama anahtarını içeri aktaracak ve APT kaynakları listenizi Elastik paket deposunu içerecek şekilde güncelleştireceksiniz. Bunu, Elastic Stack bileşenleri için gereken Java çalışma zamanı ortamının yüklenmesi izler.

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
"

VM'ye Java Sanal Makinesi yükleyin ve JAVA_HOME değişkenini yapılandırın:

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
"

Ubuntu paket kaynaklarını güncelleştirmek ve Elasticsearch, Kibana ve Logstash'ı yüklemek için aşağıdaki komutu çalıştırın.

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
"

Uyarı

Dizin düzenleri ve ilk yapılandırma dahil olmak üzere ayrıntılı yükleme yönergeleri Elastic'in belgelerinde tutulur

Elasticsearch'i başlatma

Aşağıdaki komutla VM'nizde Elasticsearch'i başlatın:

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

Bu komut çıktı üretmez, bu nedenle bu curl komutuyla VM'de Elasticsearch'in çalıştığını doğrulayın:

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

Elasticsearch çalışıyorsa aşağıdaki gibi bir çıkış görürsünüz:

Sonuçlar:

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

Logstash'i başlatma ve Elasticsearch'e veri ekleme

Logstash'i aşağıdaki komutla başlatın:

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

Doğru çalıştığından emin olmak için Logstash'ı test edin:

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

Bu, standart girişi standart çıkışa yankılayan temel bir Logstash işlem hattıdır .

Bu VM'den alınan çekirdek iletilerini Elasticsearch'e iletmek için Logstash'i ayarlayın. Logstash yapılandırma dosyasını oluşturmak için, yapılandırmayı vm-syslog-logstash.conf adlı yeni bir dosyaya yazan aşağıdaki komutu çalıştırın:

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
"

Bu yapılandırmayı test edin ve syslog verilerini Elasticsearch'e gönderin:

# 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

Terminalinizdeki syslog girdilerinin Elasticsearch'e gönderildikçe yankılendiğini görürsünüz. Bazı veriler gönderdikten sonra Logstash'dan çıkmak için CTRL+C tuşlarını kullanın.

Kibana'yı başlatma ve Elasticsearch'te verileri görselleştirme

Kibana yapılandırma dosyasını (/etc/kibana/kibana.yml) düzenleyin ve Web tarayıcınızdan erişebilmeniz için Kibana'nın dinleeceği IP adresini değiştirin:

server.host: "0.0.0.0"

Kibana'yı aşağıdaki komutla başlatın:

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

Kibana konsoluna uzaktan erişime izin vermek için Azure CLI'dan 5601 numaralı bağlantı noktasını açın:

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

Sonraki adımlar

Bu öğreticide, Elastic Stack'i Azure'daki bir geliştirme VM'sine dağıttınız. Nasıl yapılacağını öğrendinsiniz:

  • Azure kaynak grubunda Ubuntu VM oluşturma
  • VM'ye Elasticsearch, Logstash ve Kibana yükleme
  • Logstash'ten Elasticsearch'e örnek veri gönderme
  • Kibana konsolunda bağlantı noktalarını açma ve verilerle çalışma