Instalación de Elastic Stack (ELK) en una máquina virtual de Azure
Se aplica a: ✔️ máquinas virtuales Linux ✔️ conjuntos de escalado flexibles
En este artículo se le guiará acerca de cómo implementar Elasticsearch, Logstash y Kibana en una máquina virtual con Ubuntu en Azure. Para ver Elastic Stack en acción, puede conectarse opcionalmente a Kibana y trabajar con algunos de los datos de registro de ejemplo.
Además, puede seguir el módulo Implementación de Elastic en Azure Virtual Machines para ver un tutorial más guiado sobre la implementación de Elastic en Azure Virtual Machines.
En este tutorial, aprenderá a:
- Crear una máquina virtual con Ubuntu en un grupo de recursos de Azure
- Instalar Elasticsearch, Logstash y Kibana en la máquina virtual
- Enviar datos de ejemplo a Elasticsearch con Logstash
- Abrir los puertos y trabajar con datos en la consola de Kibana
Esta implementación es adecuada para el desarrollo básico con Elastic Stack. Para más información acerca de Elastic Stack, incluidas recomendaciones para un entorno de producción, consulte la documentación de Elastic y Azure Architecture Center.
Requisitos previos
Use el entorno de Bash en Azure Cloud Shell. Para más información, consulte Inicio rápido para Bash en Azure Cloud Shell.
Si prefiere ejecutar comandos de referencia de la CLI localmente, instale la CLI de Azure. Si utiliza Windows o macOS, considere la posibilidad de ejecutar la CLI de Azure en un contenedor Docker. Para más información, vea Ejecución de la CLI de Azure en un contenedor de Docker.
Si usa una instalación local, inicie sesión en la CLI de Azure mediante el comando az login. Siga los pasos que se muestran en el terminal para completar el proceso de autenticación. Para ver otras opciones de inicio de sesión, consulte Inicio de sesión con la CLI de Azure.
En caso de que se le solicite, instale las extensiones de la CLI de Azure la primera vez que la use. Para más información sobre las extensiones, consulte Uso de extensiones con la CLI de Azure.
Ejecute az version para buscar cuál es la versión y las bibliotecas dependientes que están instaladas. Para realizar la actualización a la versión más reciente, ejecute az upgrade.
- En este artículo se necesita la versión 2.0.4 de la CLI de Azure, o cualquier versión posterior. Si usa Azure Cloud Shell, ya está instalada la versión más reciente.
Crear un grupo de recursos
Para crear un grupo de recursos, use el comando az group create. Un grupo de recursos de Azure es un contenedor lógico en el que se implementan y se administran los recursos de Azure.
En el ejemplo siguiente, se crea un grupo de recursos denominado myResourceGroup en la ubicación eastus.
az group create --name myResourceGroup --location eastus
Creación de una máquina virtual
Cree la máquina virtual con el comando az vm create.
En el ejemplo siguiente, se crea una máquina virtual denominada myVM y las claves SSH si aún no existen en una ubicación de claves predeterminada. Para utilizar un conjunto específico de claves, utilice la opción --ssh-key-value
.
az vm create \
--resource-group myResourceGroup \
--name myVM \
--image Ubuntu2204 \
--admin-username azureuser \
--generate-ssh-keys
Cuando se ha creado la máquina virtual, la CLI de Azure muestra información similar al ejemplo siguiente. Anote el valor de publicIpAddress
. Esta dirección se utiliza para tener acceso a la máquina virtual.
{
"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"
}
Conexión SSH con la máquina virtual
Si no conoce la dirección IP pública de la máquina virtual, ejecute el comando az network public-ip list:
az network public-ip list --resource-group myResourceGroup --query [].ipAddress
Ejecute el comando siguiente para crear una sesión SSH con la máquina virtual. Sustituya la dirección IP pública correcta de la máquina virtual. En este ejemplo, la dirección IP es 40.68.254.142.
ssh azureuser@40.68.254.142
Instalación de Elastic Stack
Importe la clave de firma de Elasticsearch y actualice la lista de orígenes de APT para incluir el repositorio del paquete de 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
Instale Java Virtual en la máquina virtual y configure la variable JAVA_HOME necesaria para que se ejecuten los componentes de Elastic Stack.
sudo apt update && sudo apt install openjdk-8-jre-headless
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
Ejecute los comandos siguientes para actualizar los orígenes de paquetes de Ubuntu e instalar Elasticsearch, Kibana y Logstash.
sudo apt update && sudo apt install elasticsearch kibana logstash
Nota
Las instrucciones de instalación detalladas, incluidos los diseños de directorio y la configuración inicial, se incluyen en la documentación de Elastic
Iniciar Elasticsearch
Inicie Elasticsearch en la máquina virtual con el siguiente comando:
sudo systemctl start elasticsearch.service
Este comando no produce ningún resultado, por lo tanto, compruebe que Elasticsearch está ejecutándose en la máquina virtual con este comando curl
:
sudo curl -XGET 'localhost:9200/'
Si Elasticsearch se está ejecutando, verá un resultado similar al siguiente:
{
"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 y agregar datos a Elasticsearch
Inicie Logstash con el siguiente comando:
sudo systemctl start logstash.service
Pruebe Logstash en el modo interactivo para asegurarse de que funciona correctamente:
sudo /usr/share/logstash/bin/logstash -e 'input { stdin { } } output { stdout {} }'
Se trata de una canalización básica de Logstash que repite la entrada estándar en la salida estándar.
The stdin plugin is now waiting for input:
hello azure
2017-10-11T20:01:08.904Z myVM hello azure
Configure Logstash para reenviar los mensajes del kernel de esta máquina virtual a Elasticsearch. Cree un archivo nuevo en un directorio vacío denominado vm-syslog-logstash.conf
y pegue la configuración de Logstash siguiente:
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"
}
}
Pruebe esta configuración y envíe los datos de Syslog a Elasticsearch:
sudo /usr/share/logstash/bin/logstash -f vm-syslog-logstash.conf
Verá las entradas de Syslog de su terminal repetidas cuando se envíen a Elasticsearch. Use CTRL+C
para salir de Logstash una vez envíe algunos datos.
Inicie Kibana y visualice los datos en Elasticsearch
Edite /etc/kibana/kibana.yml
y cambie la dirección IP que escucha Kibana para poder acceder a la misma desde el explorador web.
server.host: "0.0.0.0"
Inicie Kibana con el siguiente comando:
sudo systemctl start kibana.service
Abra el puerto 5601 desde la CLI de Azure para permitir el acceso remoto a la consola de Kibana:
az vm open-port --port 5601 --resource-group myResourceGroup --name myVM
Abra la consola de Kibana y seleccione Crear para generar un índice predeterminado en función de los datos de Syslog que envió previamente a Elasticsearch.
Seleccione Discover (Detectar) en la consola de Kibana para buscar, examinar y filtrar a través de los eventos de Syslog.
Pasos siguientes
En este tutorial, implementó Elastic Stack en una máquina virtual de desarrollo en Azure. Ha aprendido a:
- Crear una máquina virtual con Ubuntu en un grupo de recursos de Azure
- Instalar Elasticsearch, Logstash y Kibana en la máquina virtual
- Enviar datos de ejemplo a Elasticsearch desde Logstash
- Abrir los puertos y trabajar con datos en la consola de Kibana