Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a: ✔️ VMs do Linux ✔️ Conjuntos de dimensionamento flexíveis
Este artigo orienta como implantar Elasticsearch, Logstash e Kibana em uma VM Ubuntu no Azure. Para ver o Elastic Stack em ação, opcionalmente você pode se conectar ao Kibana e trabalhar com alguns dados de log de exemplo.
Além disso, você pode seguir o módulo Implantar o Elastic nas Máquinas Virtuais do Microsoft Azure para obter um tutorial mais guiado sobre como implantar o Elastic nas Máquinas Virtuais do Microsoft Azure.
Neste tutorial, você aprenderá a:
- Crie uma VM do Ubuntu em um grupo de recursos do Azure
- Instale Elasticsearch, Logstash e Kibana na VM
- Envie dados de exemplo para Elasticsearch com Logstash
- Abra as portas e trabalhe com os dados no console do Kibana
Essa implantação é adequada para desenvolvimento básico com Elastic Stack. Para saber mais sobre Elastic Stack, incluindo recomendações para um ambiente de produção, consulte a documentação do Elastic e o Azure Architecture Center.
Pré-requisitos
Use o ambiente Bash no Azure Cloud Shell. Para obter mais informações, confira Introdução ao Azure Cloud Shell.
Se preferir executar os comandos de referência da CLI localmente, instale a CLI do Azure. Para execuções no Windows ou no macOS, considere executar a CLI do Azure em um contêiner do Docker. Para obter mais informações, confira Como executar a CLI do Azure em um contêiner do Docker.
Se estiver usando uma instalação local, entre com a CLI do Azure usando o comando az login. Para concluir o processo de autenticação, siga as etapas exibidas no terminal. Para obter outras opções de entrada, consulte Autenticar no Azure usando a CLI do Azure.
Quando solicitado, instale a extensão da CLI do Azure no primeiro uso. Para obter mais informações sobre extensões, confira Usar e gerenciar extensões com a CLI do Azure.
Execute az version para localizar a versão e as bibliotecas dependentes que estão instaladas. Para fazer a atualização para a versão mais recente, execute az upgrade.
- Este artigo exige a versão 2.0.4 ou posterior da CLI do Azure. Se você está 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 é acrescentado 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 existem. Um sufixo aleatório é acrescentado 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 tiver sido criada, a CLI do Azure mostra informações semelhantes ao exemplo a seguir. Anote o endereço IP público. Esse endereço é usado para acessar a 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"
}
SSH em sua VM
Se você ainda não souber o endereço IP público da VM, execute o seguinte comando para listá-lo:
az network public-ip list --resource-group $RESOURCE_GROUP --query [].ipAddress
Use o seguinte comando para criar uma sessão SSH com a máquina virtual. Substitua o endereço IP público correto de 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ê importará a chave de assinatura do Elasticsearch e atualizará sua lista de fontes do APT para incluir o repositório de pacotes Elastic. Isso é seguido pela instalação do ambiente de runtime do Java, 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 Máquina Virtual Java 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 comando a seguir para atualizar as fontes do pacote do Ubuntu e instalar o Elasticsearch, o Kibana e o 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 de instalação detalhadas, incluindo layouts de diretório e configuração inicial, são mantidas na documentação do Elastic
Iniciar Elasticsearch
Inicie o Elasticsearch na sua VM com o seguinte comando:
ssh azureuser@$PUBLIC_IP_ADDRESS -o StrictHostKeyChecking=no "
sudo systemctl start elasticsearch.service
"
Esse comando não produz nenhuma saída, portanto, verifique se o Elasticsearch está em execução na VM com este comando curl:
ssh azureuser@$PUBLIC_IP_ADDRESS -o StrictHostKeyChecking=no "
sleep 11
sudo curl -XGET 'localhost:9200/'
"
Se Elasticsearch estiver em execução, você verá a saída semelhante ao 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"
}
Iniciar Logstash e adicionar 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 do Logstash básico que retorna a entrada padrão para a saída padrão.
Configure o Logstash para encaminhar mensagens de kernel dessa VM para Elasticsearch. Para criar o arquivo de configuração do 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 esta configuração e envie os dados do syslog para 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ê pode ver as entradas do syslog em seu terminal ecoadas conforme elas são enviadas para 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 no 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 porta 5601 da CLI do Azure para permitir o acesso remoto ao console Kibana:
az vm open-port --port 5601 --resource-group $RESOURCE_GROUP --name $VM_NAME
Próximas etapas
Neste tutorial, você implantou o Elastic Stack em uma VM de desenvolvimento no Azure. Você aprendeu a:
- Crie uma VM do Ubuntu em um grupo de recursos do Azure
- Instale Elasticsearch, Logstash e Kibana na VM
- Enviar dados de exemplo para Elasticsearch do Logstash
- Abra as portas e trabalhe com os dados no console do Kibana