Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Aplica-se a: ✔️ Linux VMs ✔️ Conjuntos de escala flexível
Este artigo orienta você sobre como implantar o Elasticsearch, o Logstash e o Kibana em uma VM do Ubuntu no Azure. Para ver o Elastic Stack em ação, você pode, opcionalmente, conectar-se ao Kibana e trabalhar com alguns dados de log 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 você aprenderá a:
- Criar uma VM do Ubuntu em um grupo de recursos do Azure
- Instalar o Elasticsearch, Logstash e Kibana na VM
- Enviar dados de exemplo para o Elasticsearch com Logstash
- Abra portas e trabalhe com dados no console do Kibana
Essa implantação é adequada para desenvolvimento básico com o Elastic Stack. Para obter mais informações sobre o Elastic Stack, incluindo recomendações para um ambiente de produção, consulte a documentação do Elastic e o Centro de Arquitetura do Azure.
Pré-requisitos
Utilize o ambiente Bash no Azure Cloud Shell. Para mais informações, veja Get started with Azure Cloud Shell.
Se preferir executar comandos de referência da CLI localmente, instale o CLI do Azure. Se estiver a usar Windows ou macOS, considere executar o Azure CLI num contentor Docker. Para obter mais informações, consulte Como executar a CLI do Azure em um contêiner do Docker.
Se você estiver usando uma instalação local, entre na CLI do Azure usando o comando az login . Para concluir o processo de autenticação, siga os passos exibidos no seu terminal. Para outras opções de entrada, consulte Autenticar no Azure usando a CLI do Azure.
Quando solicitado, instale a extensão do Azure CLI na primeira utilização. Para obter mais informações sobre extensões, consulte Usar e gerenciar extensões com a CLI do Azure.
Execute az version para descobrir a versão e as bibliotecas dependentes que estão instaladas. Para atualizar para a versão mais recente, execute 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
Nesta seção, as variáveis de ambiente são declaradas para uso em comandos subsequentes. Um sufixo aleatório é anexado aos nomes de recursos para exclusividade.
export RANDOM_SUFFIX=$(openssl rand -hex 3)
export RESOURCE_GROUP="myResourceGroup$RANDOM_SUFFIX"
export REGION="eastus2"
az group create --name $RESOURCE_GROUP --location $REGION
Resultados:
{
"id": "/subscriptions/xxxxx/resourceGroups/myResourceGroupxxxxxx",
"location": "eastus",
"managedBy": null,
"name": "myResourceGroupxxxxxx",
"properties": {
"provisioningState": "Succeeded"
},
"tags": null,
"type": "Microsoft.Resources/resourceGroups"
}
Criar uma máquina virtual
Esta seção cria uma VM com um nome exclusivo, ao mesmo tempo em que gera chaves SSH se elas ainda não existirem. Um sufixo aleatório é anexado para garantir a exclusividade.
export VM_NAME="myVM$RANDOM_SUFFIX"
az vm create \
--resource-group $RESOURCE_GROUP \
--name $VM_NAME \
--image Ubuntu2204 \
--admin-username azureuser \
--generate-ssh-keys
Quando a VM foi criada, a CLI do Azure mostra informações semelhantes ao exemplo a seguir. Tome nota do publicIpAddress. Este endereço é utilizado para aceder à VM.
Resultados:
{
"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"
}
Conecte-se à sua VM usando SSH
Se você ainda não souber o endereço IP público da sua VM, execute o seguinte comando para listá-lo:
az network public-ip list --resource-group $RESOURCE_GROUP --query [].ipAddress
Use o comando a seguir 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.
export PUBLIC_IP_ADDRESS=$(az network public-ip list --resource-group $RESOURCE_GROUP --query [].ipAddress -o tsv)
Instalar o Elastic Stack
Nesta seção, você importa a chave de assinatura do Elasticsearch e atualiza a sua lista de recursos APT para incluir o repositório de pacotes Elastic. Isso é seguido pela instalação do Java Runtime Environment que é necessário para os componentes do 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
"
Instale a Java Virtual Machine na VM e configure a variável 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
"
Execute o seguinte comando para atualizar os códigos-fonte do pacote Ubuntu e instalar o Elasticsearch, Kibana e 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
"
Observação
Instruções detalhadas de instalação, incluindo layouts de diretório e configuração inicial, são mantidas na documentação do Elastic
Iniciar o Elasticsearch
Inicie o Elasticsearch em sua VM com o seguinte comando:
ssh azureuser@$PUBLIC_IP_ADDRESS -o StrictHostKeyChecking=no "
sudo systemctl start elasticsearch.service
"
Este comando não produz nenhuma saída, portanto, verifique se o Elasticsearch está sendo executado na VM com este comando curl:
ssh azureuser@$PUBLIC_IP_ADDRESS -o StrictHostKeyChecking=no "
sleep 11
sudo curl -XGET 'localhost:9200/'
"
Se o Elasticsearch estiver em execução, você verá uma saída como a seguinte:
Resultados:
{
"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"
}
Inicie o Logstash e adicione dados ao Elasticsearch
Inicie o Logstash com o seguinte comando:
ssh azureuser@$PUBLIC_IP_ADDRESS -o StrictHostKeyChecking=no "
sudo systemctl start logstash.service
"
Teste o Logstash para verificar se ele está funcionando corretamente:
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"
"
Este é um pipeline Logstash básico que ecoa a entrada padrão para a saída padrão.
Configure o Logstash para encaminhar as mensagens do kernel dessa VM para o Elasticsearch. Para criar o arquivo de configuração Logstash, execute o seguinte comando que grava a configuração em um novo arquivo chamado 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
"
Teste essa configuração e envie os dados do syslog para o 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
Você vê as entradas do syslog em seu terminal ecoadas à medida que são enviadas para o Elasticsearch. Use CTRL+C para sair do Logstash depois de enviar alguns dados.
Inicie o Kibana e visualize os dados no Elasticsearch
Edite o arquivo de configuração do Kibana (/etc/kibana/kibana.yml) e altere o endereço IP que o Kibana escuta para que você possa acessá-lo a partir do seu navegador da web:
server.host: "0.0.0.0"
Inicie o Kibana com o seguinte comando:
ssh azureuser@$PUBLIC_IP_ADDRESS -o StrictHostKeyChecking=no "
sudo systemctl start kibana.service
"
Abra a porta 5601 da CLI do Azure para permitir o acesso remoto ao console do Kibana:
az vm open-port --port 5601 --resource-group $RESOURCE_GROUP --name $VM_NAME
Próximos passos
Neste tutorial, você implantou o Elastic Stack em uma VM de desenvolvimento no Azure. Você aprendeu a:
- Criar uma VM do Ubuntu em um grupo de recursos do Azure
- Instalar o Elasticsearch, Logstash e Kibana na VM
- Enviar dados de exemplo para o Elasticsearch a partir do Logstash
- Abra portas e trabalhe com dados no console do Kibana