Partilhar via


Instalar o Elastic Stack (ELK) em uma VM do Azure

Aplica-se a: ✔️ Linux VMs ✔️ Conjuntos de escala flexível

Este artigo explica como implementar o Elasticsearch, o Logstash e o Kibana numa VM do Ubuntu no Azure. Para ver a Pilha Elástica em ação, opcionalmente, pode ligar ao Kibana e trabalhar com alguns dados de registo de exemplo.

Além disso, você pode seguir o módulo Implantar Elástico em Máquinas Virtuais do Azure para obter um tutorial mais guiado sobre a implantação do Elástico em Máquinas Virtuais do Azure.

Neste tutorial, ficará a saber como:

  • Criar uma VM do Ubuntu num grupo de recursos do Azure
  • Instale o Elasticsearch, o Logstash e o Kibana na VM
  • Enviar dados de exemplo para o Elasticsearch com o Logstash
  • Abrir portas e trabalhar com dados na consola do Kibana

Esta implementação é adequada para o desenvolvimento básico com a Pilha Elástica. Para obter mais informações sobre a Pilha Elástica, incluindo as recomendações para um ambiente de produção, veja a Documentação elástica e o Centro de Arquitetura do Azure.

Pré-requisitos

  • Use o ambiente Bash no Azure Cloud Shell. Para obter mais informações, consulte Guia de início rápido para Bash no Azure Cloud Shell.

  • Se preferir executar comandos de referência da CLI localmente, instale a CLI do Azure. Se estiver a utilizar o Windows ou macOS, considere executar a CLI do Azure num contentor Docker. Para obter mais informações, consulte Como executar a CLI do Azure em um contêiner do Docker.

    • Se estiver a utilizar uma instalação local, inicie sessão no CLI do Azure ao utilizar o comando az login. Para concluir o processo de autenticação, siga os passos apresentados no seu terminal. Para outras opções de entrada, consulte Entrar com a CLI do Azure.

    • Quando solicitado, instale a extensão da CLI do Azure na primeira utilização. Para obter mais informações sobre as extensões, veja Utilizar extensões com o CLI do Azure.

    • Execute o comando az version para localizar a versão e as bibliotecas dependentes instaladas. Para atualizar para a versão mais recente, execute o comando az upgrade.

  • Este artigo requer a versão 2.0.4 ou posterior da CLI do Azure. Se estiver usando o Azure Cloud Shell, a versão mais recente já está instalada.

Criar um grupo de recursos

Crie um grupo de recursos com o comando az group create. Um grupo de recursos do Azure é um contentor lógico no qual os recursos do Azure são implementados e geridos.

O exemplo seguinte cria um grupo de recursos com o nome myResourceGroup na localização eastus.

az group create --name myResourceGroup --location eastus

Criar uma máquina virtual

Crie uma VM com o comando az vm create.

O exemplo seguinte cria uma VM com o nome myVM e cria chaves SSH caso estas ainda não existam numa localização chave predefinida. Para utilizar um conjunto específico de chaves, utilize a opção --ssh-key-value.

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

Quando a VM tiver sido criada, a CLI do Azure mostra informações semelhantes ao seguinte exemplo. Tome nota do publicIpAddress. Este endereço é utilizado para aceder à 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"
}

Aceder através de SSH à VM

Se ainda não souber o endereço IP público da sua VM, execute o comando az network public-ip list:

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

Utilize o seguinte comando para criar uma sessão SSH com a máquina virtual. Substitua o endereço IP público correto da sua máquina virtual. Neste exemplo, o endereço IP é 40.68.254.142.

ssh azureuser@40.68.254.142

Instalar a Pilha Elástica

Importe a chave de assinatura do Elasticsearch e atualize a sua lista de origens APT para incluir o repositório do pacote Elástico:

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

Instale o Java Virtual na VM e configure a variável JAVA_HOME - isto é preciso para os componentes da Pilha Elástica serem executados.

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

Execute os seguintes comandos para atualizar as origens do pacote Ubuntu e instale o Elasticsearch, o Kibana e o Logstash.

sudo apt update && sudo apt install elasticsearch kibana logstash   

Nota

As instruções de instalação detalhadas, incluindo os esquemas de diretório e a configuração inicial, são mantidas na Documentação do Elástico

Iniciar o Elasticsearch

Inicie o Elasticsearch na VM com o seguinte comando:

sudo systemctl start elasticsearch.service

Este comando não produz nenhuma saída, por isso certifique-se de que o Elasticsearch está em execução na VM com este comando curl:

sudo curl -XGET 'localhost:9200/'

Se o Elasticsearch estiver em execução, veja o resultado da seguinte forma:

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

Iniciar o Logstash e adicionar dados ao Elasticsearch

Inicie o Logstash com o seguinte comando:

sudo systemctl start logstash.service

Teste o Logstash no modo interativo para se certificar de que está a funcionar corretamente:

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

Este é um pipeline Logstash básico que ecoa a entrada padrão para a saída padrão.

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

Configure o Logstash para reencaminhar as mensagens de kernel desta VM para o Elasticsearch. Crie um novo ficheiro num diretório vazio denominado vm-syslog-logstash.conf e cole na seguinte configuração do Logstash:

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

Teste esta configuração e envie os dados do syslog para o Elasticsearch:

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

Verá as entradas do syslog no seu terminal ecoadas à medida que são enviadas para o Elasticsearch. Utilize CTRL+C para sair do Logstash, assim que tiver enviado alguns dados.

Iniciar o Kibana e visualizar os dados no Elasticsearch

Edite /etc/kibana/kibana.yml e altere o endereço IP do Kibana, para que possa aceder a partir do seu browser.

server.host: "0.0.0.0"

Inicie o Kibana com o seguinte comando:

sudo systemctl start kibana.service

Abra a porta 5601 partir da CLI do Azure para permitir o acesso remoto à consola do Kibana:

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

Abra a consola do Kibana e selecione Criar, para gerar um índice predefinido com base nos dados do syslog enviados anteriormente para o Elasticsearch .

Captura de ecrã que mostra a consola Kibana e realça o botão Criar.

Selecione Detetar na consola do Kibana para pesquisar, procurar e filtrar nos eventos do syslog.

Procurar eventos do Syslog no Kibana

Próximos passos

Neste tutorial, implementou a Pilha Elástica numa VM de desenvolvimento no Azure. Aprendeu a:

  • Criar uma VM do Ubuntu num grupo de recursos do Azure
  • Instale o Elasticsearch, o Logstash e o Kibana na VM
  • Enviar dados de exemplo para o Elasticsearch a partir do Logstash
  • Abrir portas e trabalhar com dados na consola do Kibana