Introducción
Una gestión eficiente de los registros del servidor web es fundamental para mantener el rendimiento de tu sitio web, solucionar problemas y comprender el comportamiento de los usuarios. Apache es uno de los servidores web más populares. Genera registros de acceso y de errores que contienen información valiosa. Para gestionar y analizar estos registros de forma eficaz, puedes usar Logstash para procesarlos y enviarlos a OpenSearch, el servicio gestionado por DigitalOcean, para su indexación y visualización.
En este tutorial, le guiaremos a través de la instalación de Logstash en su Droplet, su configuración para recopilar registros de Apache y su envío a Managed OpenSearch para su análisis.
Requisitos previos
- Droplet/s con servidor web Apache instalado.
- Clúster de OpenSearch administrado
Paso 1 – Instalar Logstash
Logstash se puede instalar mediante archivos binarios o a través de repositorios de paquetes. Para facilitar la administración y las actualizaciones, generalmente se recomienda usar repositorios de paquetes.
En esta sección, le guiaremos a través de la instalación de Logstash en su Droplet utilizando APT y el gestor de paquetes YUM.
Identifiquemos el sistema operativo:
cat /etc/os-release
Para sistemas basados en APT (Ubuntu/Debian)
Descarga e instala la clave de firma pública:
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elastic-keyring.gpg
Es posible que necesites instalar el paquete apt-transport-https en Debian antes de continuar:
sudo apt-get install apt-transport-https
Guarde la definición del repositorio en /etc/apt/sources.list.d/elastic-8.x.list:
echo "deb [signed-by=/usr/share/keyrings/elastic-keyring.gpg] https://artifacts.elastic.co/packages/8.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-8.x.list
Para añadir el repositorio de Logstash, utilice el método `echo` descrito anteriormente. No utilice `add-apt-repository`, ya que también añadirá una entrada `deb-src`, pero no proporcionamos un paquete fuente. Si ha añadido una entrada `deb-src`, verá el siguiente error:
Unable to find expected entry 'main/source/Sources' in Release file (Wrong sources.list entry or malformed file)
Simplemente elimine la entrada deb-src del archivo /etc/apt/sources.list y la instalación debería funcionar como se espera.
Ejecuta `sudo apt-get update` y el repositorio estará listo para usar. Puedes usarlo con:
sudo apt-get update && sudo apt-get install logstash
Para sistemas basados en YUM (CentOS/RHEL)
Descarga e instala la clave de firma pública:
sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
Añade lo siguiente a tu archivo /etc/yum.repos.d/logstash.repo. Puedes usar "t" para actualizar y crear el archivo.
sudo tee /etc/yum.repos.d/logstash.repo > /dev/null <<EOF
[logstash-8.x]
name=Elastic repository for 8.x packages
baseurl=https://artifacts.elastic.co/packages/8.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
EOFTu tanque está listo para usar. Puedes usarlo con:
sudo yum install logstash
Para obtener más información, consulte la guía de instalación de Logstash.
Paso 2: Configurar Logstash para enviar registros a OpenSearch
El pipeline de Logstash consta de tres etapas principales: entrada, filtrado y salida. Los pipelines de Logstash utilizan plugins. Puedes usar plugins de la comunidad o crear los tuyos propios.
- Entrada: Esta etapa recopila datos de diversas fuentes. Logstash admite múltiples complementos de entrada para administrar fuentes de datos como archivos de registro, bases de datos, colas de mensajes y servicios en la nube.
- Filtrado: Esta etapa procesa y transforma los datos recopilados en la etapa de entrada. Los filtros pueden modificar, enriquecer y estructurar los datos para hacerlos más útiles y analíticos.
- Salida: En esta etapa se envían los datos procesados a un destino. Los destinos pueden incluir bases de datos, archivos y almacenes de datos como OpenSearch.
Paso 3 – Instalar el complemento Open Search Output
El complemento de salida de OpenSearch se puede instalar ejecutando el siguiente comando:
/usr/share/logstash/bin/logstash-plugin install logstash-output-opensearch
Puede encontrar más información en este repositorio logstash-output-opensearch-plugin.
Ahora vamos a crear un pipeline:
Cree un nuevo archivo en la ruta /etc/logstash/conf.d/ llamado apache_pipeline.conf y copie el siguiente contenido.
input {
file {
path => "/var/log/apache2/access.log"
start_position => "beginning"
sincedb_path => "/dev/null"
tags => "apache_access"
}
file {
path => "/var/log/apache2/error.log"
start_position => "beginning"
sincedb_path => "/dev/null"
tags => "apache_error"
}
}
filter {
if "apache_access" in [tags] {
grok {
match => { "message" => "%{HTTPD_COMBINEDLOG}" }
}
mutate {
remove_field => [ "message","[log][file][path]","[event][original]" ]
}
} else {
grok {
match => { "message" => "%{HTTPD24_ERRORLOG}" }
}
}
}
output {
if "apache_access" in [tags] {
opensearch {
hosts => "https://<OpenSearch-Hostname>:25060"
user => "doadmin"
password => "<your_password>"
index => "apache_access"
ssl_certificate_verification => true
}
} else {
opensearch {
hosts => "https://<OpenSearch-Hostname>:25060"
user => "doadmin"
password => "<your_password>"
index => "apache_error"
ssl_certificate_verification => true
}
}
}con el nombre de host de su servidor OpenSearch y Reemplaza con tu contraseña de OpenSearch.
Analicemos la configuración anterior.
- ENTRADA: Se utiliza para configurar una fuente de eventos. Aquí se utiliza el plugin de entrada de archivos.
- ruta => “/var/log/apache2/access.log”: Especifica la ruta al archivo de registro de acceso de Apache desde el cual Logstash debe leer.
Asegúrese de que el servicio Logstash tenga acceso a la ruta de entrada.
- `start_position => “beginning”`: Especifica dónde debe comenzar Logstash a leer el archivo de registro. `“beginning”` indica que Logstash debe comenzar a procesar el archivo desde el principio, no desde el final.
- sincedb_path => “/dev/null”: Especifica la ruta al archivo sincedb. Logstash utiliza los archivos sincedb para mantener un registro de la posición actual en los archivos de registro, lo que le permite reanudar la ejecución desde donde se interrumpió en caso de reinicio o fallo del sistema.
- tags => “apache_access”: Asigna una etiqueta a los eventos leídos de esta entrada. Las etiquetas son útiles para identificar y filtrar eventos en Logstash, y se utilizan frecuentemente en etapas posteriores de salida o para el filtrado de configuración. En este caso, usamos etiquetas para este último fin.
- FILTRO: Se utiliza para procesar eventos.
Comenzando con las condicionales:
(if "apache_access" in [tags]):
Esta comprobación verifica si la etiqueta apache_access está presente en la sección [tags] de los eventos de registro entrantes. Usamos esta condición para aplicar el filtro GROK apropiado a los registros de acceso y error de Apache.
- Filtro Grok (para registros de acceso de Apache):
grok {
match => { "message" => "%{HTTPD_COMBINEDLOG}" }
}El filtro grok %{HTTPD_COMBINEDLOG} es un patrón predefinido en Logstash que se utiliza para analizar el formato de registro de acceso combinado de Apache. Extrae campos como la dirección IP, la marca de tiempo, el método HTTP, el URI, el código de estado, etc., del cuerpo del mensaje de los eventos recibidos.
- Eliminar filtro de mutación (opcional): Después de analizar los registros de Apache, utilizamos mutate-remove para eliminar algunos campos.
mutate {
remove_field => [ "message","[log][file][path]","[event][original]" ]
}- Otra condición: si la etiqueta apache_access no está en [tags], se ejecuta el bloque else. Este bloque else contiene otro filtro GROK para los registros de errores de Apache.
grok {
match => { "message" => "%{HTTPD24_ERRORLOG}" }
}
Este filtro %{HTTPD24_ERRORLOG} analiza los mensajes que coinciden con el formato de registro de errores de Apache. Extrae campos relacionados con los registros de errores, como la marca de tiempo, el nivel de registro, el mensaje de error, etc.
Puedes encontrar patrones GROK en: https://github.com/logstash-plugins/logstash-patterns-core/tree/main/patterns Encontrar.
- SALIDA: El plugin envía eventos de salida a un destino específico.
El bloque de salida comienza con una condición if. Aquí estamos utilizando la instrucción condicional.
if "apache_access" in [tags] {}
Si se utiliza una condición para enrutar los registros a OpenSearch a dos perfiles separados, apache_error y apache_access.
Vamos a ver el plugin de salida de OpenSearch:
hosts => "https://XXX:25060" Your Open search Hostname
user => "doadmin" Your Open search Username
password => "XXXXX" OpenSearch Password
index => "apache_error" Index name in OpenSearch
ssl_certificate_verification => true Enabled SSL certificate verificationPaso 4 – Iniciar Logstash
Tras configurar el pipeline, inicie el servicio Logstash:
systemctl enable logstash.service
systemctl start logstash.service
systemctl status logstash.servicePaso 5 – Solución de problemas
Comprueba la conexión.
Puedes verificar que Logstash puede conectarse a OpenSearch probando la conexión:
curl -u your_username:your_password -X GET "https://your-opensearch-server:25060/_cat/indices?v"
con el nombre de host del servidor OpenSearch y , Reemplaza con tus credenciales de OpenSearch.
Ingesta de datos
Asegúrese de que los datos estén correctamente indexados en OpenSearch:
curl -u your_username:your_password -X GET "http://your-opensearch-server:25060/<your-index-name>/_search?pretty"
con el nombre de host del servidor OpenSearch y , Sustituye tus credenciales de OpenSearch por las tuyas. Del mismo modo, Con el nombre Índice.
Configuración de firewall y red
Asegúrese de que las reglas de su firewall y la configuración de red permitan el tráfico entre Logstash y OpenSearch en el puerto 25060.
Registros
Los registros relacionados con Logstash se pueden encontrar en /var/log/logstash/logstash-plain.log.
Resultado
En esta guía, configuramos Logstash para recopilar y enviar los registros de Apache a OpenSearch. Aquí tienes un breve resumen de lo que hemos tratado:
Instalación de Logstash: Explicamos cómo usar los administradores de paquetes APT o YUM, según su distribución de Linux, para instalar Logstash en su Droplet.
Configuración de Logstash: Creamos y configuramos el archivo de configuración de Logstash para garantizar que los registros de Apache se analicen correctamente y se envíen a OpenSearch.
Verificación en OpenSearch: Configuramos una plantilla de listado en los paneles de OpenSearch para verificar que sus informes estén correctamente indexados y visibles para su análisis.
Una vez completados estos pasos, ya debería tener una configuración funcional en la que Logstash recopila los registros de Apache y los envía a OpenSearch.









