Leggere in inglese

Condividi tramite


Installare Elastic Stack (ELK) in una macchina virtuale di Azure

Si applica a: ✔️ macchine virtuali di Linux ✔️ set di scalabilità flessibili

Questo articolo descrive la procedura per distribuire Elasticsearch, Logstash e Kibana in una macchina virtuale Ubuntu in Azure. Per visualizzare Elastic Stack in azione, è possibile connettersi a Kibana e usare alcuni dati di registrazione di esempio.

È anche possibile seguire il modulo Deploy Elastic on Azure Macchine virtuali (Distribuisci elastico in Azure Macchine virtuali) per un'esercitazione più guidata sulla distribuzione di Elastic in Azure Macchine virtuali.

In questa esercitazione si apprenderà come:

  • Creare una macchina virtuale Ubuntu in un gruppo di risorse di Azure
  • Installare Elasticsearch, Logstash e Kibana nella macchina virtuale
  • Inviare dati di esempio a Elasticsearch con Logstash
  • Aprire le porte e usare dati della console Kibana

Questa distribuzione è adatta per lo sviluppo di base con lo Elastic Stack. Per altre informazioni su Elastic Stack, incluse le raccomandazioni per un ambiente di produzione, vedere la documentazione di Elastic e il Centro architetture Azure.

Prerequisiti

  • Questo articolo richiede l'interfaccia della riga di comando di Azure versione 2.0.4 o successiva. Se si usa Azure Cloud Shell, la versione più recente è già installata.

Creare un gruppo di risorse

Creare un gruppo di risorse con il comando az group create. Un gruppo di risorse di Azure è un contenitore logico in cui le risorse di Azure vengono distribuite e gestite.

L'esempio seguente crea un gruppo di risorse denominato myResourceGroup nella località stati uniti orientali.

az group create --name myResourceGroup --location eastus

Creare una macchina virtuale

Creare una VM con il comando az vm create.

L'esempio seguente crea una macchina virtuale denominata myVM e le chiavi SSH, se non esistono già in un percorso predefinito. Per usare un set specifico di chiavi, utilizzare l'opzione --ssh-key-value.

az vm create \
    --resource-group myResourceGroup \
    --name myVM \
    --image Ubuntu2204 \
    --admin-username azureuser \
    --generate-ssh-keys

Dopo che la VM è stata creata, l'interfaccia della riga di comando di Azure mostra informazioni simili all'esempio seguente. Prendere nota di publicIpAddress. Questo indirizzo viene usato per accedere alla VM.

{
  "fqdns": "",
  "id": "/subscriptions/<subscription ID>/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM",
  "location": "eastus",
  "macAddress": "00-0D-3A-23-9A-49",
  "powerState": "VM running",
  "privateIpAddress": "10.0.0.4",
  "publicIpAddress": "40.68.254.142",
  "resourceGroup": "myResourceGroup"
}

Usare SSH per connettersi alla macchina virtuale

Se non si conosce già l'indirizzo IP pubblico della VM, eseguire il comando az network public-ip list:

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

Usare il comando seguente per creare una sessione SSH con la macchina virtuale. Sostituire l'indirizzo IP pubblico corretto della macchina virtuale. In questo esempio l'indirizzo IP è 40.68.254.142.

ssh azureuser@40.68.254.142

Installare Elastic Stack

Importare la chiave di firma di Elasticsearch e aggiornare l'elenco di origini APT in modo da includere il repository dei pacchetti Elastic:

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

Installare Java Virtual Machine nella macchina virtuale e configurare la variabile JAVA_HOME. Questa operazione è necessaria per l'esecuzione dei componenti di Elastic Stack.

sudo apt update && sudo apt install openjdk-8-jre-headless
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64

Eseguire i comandi seguenti per aggiornare le origini dei pacchetti Ubuntu e installare Elasticsearch, Kibana e Logstash.

sudo apt update && sudo apt install elasticsearch kibana logstash   

Nota

Per istruzioni di installazione dettagliate, inclusi i layout di directory e la configurazione iniziale, vedere la documentazione di Elastic

Avviare Elasticsearch

Avviare Elasticsearch nella macchina virtuale con il comando seguente:

sudo systemctl start elasticsearch.service

Questo comando non genera alcun output. Verificare quindi che Elasticsearch sia in esecuzione sulla macchina virtuale con questo comando curl:

sudo curl -XGET 'localhost:9200/'

Se Elasticsearch è in esecuzione, viene visualizzato un output simile al seguente:

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

Avviare Logstash e aggiungere dati a Elasticsearch

Avviare Logstash con il comando seguente:

sudo systemctl start logstash.service

Testare Logstash in modalità interattiva per verificare che funzioni correttamente:

sudo /usr/share/logstash/bin/logstash -e 'input { stdin { } } output { stdout {} }'

Si tratta di una pipeline Logstash di base che restituisce l'input standard all'output standard.

The stdin plugin is now waiting for input:
hello azure
2017-10-11T20:01:08.904Z myVM hello azure

Impostare LogStash per inoltrare i messaggi del kernel dalla macchina virtuale a Elasticsearch. Creare un nuovo file in una directory vuota denominata vm-syslog-logstash.conf e incollare nel file la configurazione di Logstash seguente:

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

Testare la configurazione e inviare i dati Syslog a Elasticsearch:

sudo /usr/share/logstash/bin/logstash -f vm-syslog-logstash.conf

Si osserverà come le voci di Syslog nel terminal vengano restituite dopo essere state inviate a Elasticsearch. Usare CTRL+C per uscire da Logstash dopo aver inviato alcuni dati.

Avviare Kibana e visualizzare i dati in Elasticsearch

Modificare /etc/kibana/kibana.yml e cambiare l'indirizzo IP su cui è in ascolto Kibana in modo da poter accedervi dal Web browser.

server.host: "0.0.0.0"

Avviare Kibana con il comando seguente:

sudo systemctl start kibana.service

Aprire la porta 5601 dall'interfaccia della riga di comando di Azure per consentire l'accesso remoto alla console Kibana:

az vm open-port --port 5601 --resource-group myResourceGroup --name myVM

Aprire la console Kibana e selezionare Crea per generare un indice predefinito in base ai dati Syslog precedentemente inviati a Elasticsearch.

Screenshot che mostra la console Kibana ed evidenzia il pulsante Crea.

Selezionare Individua nella console Kibana per cercare, esplorare e filtrare eventi Syslog.

Sfogliare gli eventi Syslog in Kibana

Passaggi successivi

In questa esercitazione è stato distribuito Elastic Stack in un macchina virtuale di sviluppo in Azure. Contenuto del modulo:

  • Creare una macchina virtuale Ubuntu in un gruppo di risorse di Azure
  • Installare Elasticsearch, Logstash e Kibana nella macchina virtuale
  • Inviare dati di esempio a Elasticsearch da Logstash
  • Aprire le porte e usare dati della console Kibana

Risorse aggiuntive

Formazione

Modulo

Compilare ed eseguire un'applicazione Web con lo stack MEAN in una macchina virtuale di Linux in Azure - Training

Informazioni su come decidere se lo stack MEAN (MongoDB, Express.js, AngularJS e Node.js) è una scelta ottimale. Configurare un'applicazione Web basata su MEAN in una nuova macchina virtuale Linux in Azure.

Certificazione

Microsoft Certified: Azure Virtual Desktop Specialty - Certifications

Pianificare, distribuire, gestire e monitorare le esperienze desktop virtuali e le app remote in Microsoft Azure per qualsiasi dispositivo.