Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Ş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
Azure Cloud Shell'de Bash ortamını kullanın. Daha fazla bilgi için bkz. Azure Cloud Shell'i kullanmaya başlama.
CLI başvuru komutlarını yerel olarak çalıştırmayı tercih ediyorsanız Azure CLI'yı yükleyin . Windows veya macOS üzerinde çalışıyorsanız Azure CLI’yi bir Docker kapsayıcısında çalıştırmayı değerlendirin. Daha fazla bilgi için bkz. Azure CLI'yi docker kapsayıcısında çalıştırma.
Yerel yükleme kullanıyorsanız az login komutunu kullanarak Azure CLI ile oturum açın. Kimlik doğrulama işlemini tamamlamak için terminalinizde görüntülenen adımları izleyin. Diğer oturum açma seçenekleri için bkz. Azure CLI kullanarak Azure'da kimlik doğrulaması.
İstendiğinde, ilk kullanımda Azure CLI uzantısını yükleyin. Uzantılar hakkında daha fazla bilgi için bkz. Azure CLI ile uzantıları kullanma ve yönetme.
Sürümü ve yüklü bağımlı kütüphaneleri bulmak için az version komutunu çalıştırın. En son sürüme yükseltmek için az upgrade komutunu çalıştırın.
- 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