Bagikan melalui


Menginstal Elastic Stack (ELK) pada Azure VM

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

  • 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