Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk: ✔️ Mesin Virtual Linux ✔️ Set skala fleksibel
Artikel ini memandu Anda melalui cara menyebarkan Elasticsearch, Logstash, dan Kibana, pada VM Ubuntu di Azure. Untuk melihat Elastic Stack beraksi, Anda dapat secara opsional terhubung ke Kibana dan bekerja dengan beberapa data pengelogan sampel.
Selain itu, Anda dapat mengikuti modul Sebarkan Elastic di Azure Virtual Machines untuk tutorial yang lebih terpandu tentang penyebaran Elastic di Azure Virtual Machines.
Dalam tutorial ini, Anda akan mempelajari cara:
- Membuat VM Ubuntu di grup sumber daya Azure
- Instal Elasticsearch, Logstash, dan Kibana pada VM
- Mengirim data sampel ke Elasticsearch dengan Logstash
- Buka port dan bekerja dengan data di konsol Kibana
Penyebaran ini cocok untuk pengembangan dasar dengan Elastic Stack. Untuk informasi selengkapnya tentang Elastic Stack, termasuk rekomendasi untuk lingkungan produksi, lihat dokumentasi Elastic dan Azure Architecture Center.
Prasyarat
Gunakan lingkungan Bash di Azure Cloud Shell. Untuk informasi selengkapnya, lihat Mulai menggunakan Azure Cloud Shell.
Jika Anda lebih suka menjalankan perintah referensi CLI secara lokal, instal Azure CLI. Jika Anda menjalankan Windows atau macOS, pertimbangkan untuk menjalankan Azure CLI dalam kontainer Docker. Untuk informasi lebih lanjut, lihat Cara menjalankan Azure CLI di kontainer Docker.
Jika Anda menggunakan instalasi lokal, masuk ke Azure CLI dengan menggunakan perintah az login. Untuk menyelesaikan proses autentikasi, ikuti langkah-langkah yang ditampilkan di terminal Anda. Untuk opsi masuk lainnya, lihat Mengautentikasi ke Azure menggunakan Azure CLI.
Saat diminta, instal ekstensi Azure CLI saat pertama kali digunakan. Untuk informasi selengkapnya tentang ekstensi, lihat Menggunakan dan mengelola ekstensi dengan Azure CLI.
Jalankan az version untuk menemukan versi dan pustaka dependen yang terinstal. Untuk meng-upgrade ke versi terbaru, jalankan az upgrade.
- Artikel ini memerlukan Azure CLI versi 2.0.4 atau yang lebih baru. Jika menggunakan Azure Cloud Shell, versi terbaru sudah terpasang.
Membuat grup sumber daya
Di bagian ini, variabel lingkungan dideklarasikan untuk digunakan dalam perintah berikutnya. Akhiran acak ditambahkan ke nama sumber daya untuk keunikan.
export RANDOM_SUFFIX=$(openssl rand -hex 3)
export RESOURCE_GROUP="myResourceGroup$RANDOM_SUFFIX"
export REGION="eastus2"
az group create --name $RESOURCE_GROUP --location $REGION
Hasil:
{
"id": "/subscriptions/xxxxx/resourceGroups/myResourceGroupxxxxxx",
"location": "eastus",
"managedBy": null,
"name": "myResourceGroupxxxxxx",
"properties": {
"provisioningState": "Succeeded"
},
"tags": null,
"type": "Microsoft.Resources/resourceGroups"
}
Membuat mesin virtual
Bagian ini membuat VM dengan nama unik, sekaligus menghasilkan kunci SSH jika belum ada. Akhiran acak ditambahkan untuk memastikan keunikan.
export VM_NAME="myVM$RANDOM_SUFFIX"
az vm create \
--resource-group $RESOURCE_GROUP \
--name $VM_NAME \
--image Ubuntu2204 \
--admin-username azureuser \
--generate-ssh-keys
Ketika VM telah dibuat, Azure CLI menampilkan informasi yang mirip dengan contoh berikut. Catat alamat IP publik. Alamat ini digunakan untuk mengakses VM.
Hasil:
{
"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"
}
SSH ke dalam VM Anda
Jika Anda belum mengetahui alamat IP publik VM Anda, jalankan perintah berikut untuk mencantumkannya:
az network public-ip list --resource-group $RESOURCE_GROUP --query [].ipAddress
Gunakan perintah berikut untuk membuat sesi SSH dengan komputer virtual. Gantikan alamat IP publik yang benar dari mesin virtual Anda. Dalam contoh ini, alamat IP adalah 40.68.254.142.
export PUBLIC_IP_ADDRESS=$(az network public-ip list --resource-group $RESOURCE_GROUP --query [].ipAddress -o tsv)
Menginstal Elastic Stack
Di bagian ini, Anda mengimpor kunci penandatanganan Elasticsearch dan memperbarui daftar sumber APT Anda untuk menyertakan repositori paket Elastic. Ini diikuti dengan menginstal lingkungan runtime Java yang diperlukan untuk komponen 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
"
Instal Java Virtual Machine pada VM dan konfigurasikan variabel 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
"
Jalankan perintah berikut untuk memperbarui sumber paket Ubuntu dan menginstal Elasticsearch, Kibana, dan 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
"
Nota
Instruksi penginstalan terperinci, termasuk tata letak direktori dan konfigurasi awal, dipertahankan dalam dokumentasi Elastic
Mulai Elasticsearch
Mulai Elasticsearch pada VM Anda dengan perintah berikut:
ssh azureuser@$PUBLIC_IP_ADDRESS -o StrictHostKeyChecking=no "
sudo systemctl start elasticsearch.service
"
Perintah ini tidak menghasilkan output, jadi verifikasi bahwa Elasticsearch berjalan pada VM dengan perintah curl ini:
ssh azureuser@$PUBLIC_IP_ADDRESS -o StrictHostKeyChecking=no "
sleep 11
sudo curl -XGET 'localhost:9200/'
"
Jika Elasticsearch berjalan, Anda akan melihat output seperti berikut ini:
Hasil:
{
"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"
}
Mulai Logstash dan tambahkan data ke Elasticsearch
Mulai Logstash dengan perintah berikut:
ssh azureuser@$PUBLIC_IP_ADDRESS -o StrictHostKeyChecking=no "
sudo systemctl start logstash.service
"
Uji Logstash untuk memastikan logstash berfungsi dengan benar:
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"
"
Ini adalah alur Logstash dasar yang menggemakan input standar ke output standar.
Siapkan Logstash untuk meneruskan pesan kernel dari VM ini ke Elasticsearch. Untuk membuat file konfigurasi Logstash, jalankan perintah berikut yang menulis konfigurasi ke file baru yang disebut 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
"
Uji konfigurasi ini dan kirim data syslog ke 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
Anda melihat entri syslog di terminal Anda digaungkan saat dikirim ke Elasticsearch. Gunakan CTRL+C untuk keluar dari Logstash setelah Anda mengirim beberapa data.
Mulai Kibana dan visualisasikan data di Elasticsearch
Edit file konfigurasi Kibana (/etc/kibana/kibana.yml) dan ubah alamat IP yang didengarkan Kibana sehingga Anda dapat mengaksesnya dari browser web Anda:
server.host: "0.0.0.0"
Mulai Kibana dengan perintah berikut:
ssh azureuser@$PUBLIC_IP_ADDRESS -o StrictHostKeyChecking=no "
sudo systemctl start kibana.service
"
Buka port 5601 dari Azure CLI untuk memungkinkan akses jarak jauh ke konsol Kibana:
az vm open-port --port 5601 --resource-group $RESOURCE_GROUP --name $VM_NAME
Langkah selanjutnya
Dalam tutorial ini, Anda menyebarkan Elastic Stack ke dalam VM pengembangan di Azure. Anda mempelajari cara untuk:
- Membuat VM Ubuntu di grup sumber daya Azure
- Instal Elasticsearch, Logstash, dan Kibana pada VM
- Mengirim data sampel ke Elasticsearch dari Logstash
- Buka port dan bekerja dengan data di konsol Kibana