Compartir a través de


Realizar ingesta de mensajes de Azure Redis Caché en clúster de Elasticsearch, Logstash y Kibana en Azure Kubernetes (AKS) (es-MX)

 Artículo Original: https://blogs.msdn.microsoft.com/atverma/2018/10/14/ingest-azure-redis-cache-messages-into-elasticsearch-logstash-and-kibana-cluster-deployed-in-azure-kubernetes-service-aks/

 Este es el tercer artículo de la serie sobre la implementación de Elasticsearch, Logstash y Kibana (ELK) en el clúster de servicios de Azure Kubernetes (AKS). El primer artículo cubrió la implementación de ELK sin SSL en AKS y el consumo de mensajes desde el Centro de eventos de Azure. El segundo artículo describió cómo proteger las comunicaciones en ELK y usar el SSO basado en Azure AD SAML para Kibana y Elasticsearch. En este artículo voy a compartir los pasos necesarios para ingerir los mensajes de Azure Redis Cache en Elasticsearch utilizando el complemento Redis de Logstash.

Azure Redis Caché se basa en el popular Redis Caché  de código abierto. Normalmente se usa como caché para mejorar el rendimiento y la escalabilidad de los sistemas que dependen en gran medida de los almacenes de datos de back-end. El complemento Redis de Logstash leerá los eventos de la instancia de Redis. Crearemos una cola de procesamiento de eventos de Logstash donde definiremos Redis como entrada y Elasticsearch como salida. El diagrama de componentes se ha actualizado para agregar la integración de Azure Redis Cache.

https://msdnshared.blob.core.windows.net/media/2018/10/Screen-Shot-2018-10-14-at-6.10.13-PM-1024x565.png

Las herramientas de desarrollo utilizadas para desarrollar estos componentes son Visual Studio para Mac / VS Code, AKS Dashboard, kubectl, bash y openssl. Los fragmentos de código en este artículo son en su mayoría fragmentos yaml y se incluyen solo como referencia ya que el formato puede distorsionarse, por lo tanto, consulte el repositorio de GitHub para obtener recursos con formato.

Crear Azure Redis Cache

Creamos Azure Redis Cache usando Portal o el comando de CLI de Azure "az redis create"

https://msdnshared.blob.core.windows.net/media/2018/10/Screen-Shot-2018-10-14-at-11.49.57-AM-516x1024.png

Vaya a este recurso y tome nota de las configuraciones que se enumeran a continuación, ya que las necesitará en las secciones siguientes

  1. Nombre de host: deberá especificar que el nombre de host sea pipeline de Logstash.
  2. Clave de acceso secundario: deberá especificar la contraseña en la canalización de Logstash.
  3. Cadena de conexión StackExchange.Redis: deberá especificar la cadena de conexión en AzureRedisCacheSample para publicar mensajes en Redis.
  4. Puerto: el puerto no SSL predeterminado es 6379. De forma predeterminada, el puerto no SSL está deshabilitado, por lo que el puerto al que se conectará la canalización de Logstash es 6380.

https://msdnshared.blob.core.windows.net/media/2018/10/Screen-Shot-2018-10-14-at-11.54.44-AM-1024x470.png

Logstash Redis entrada plugin

Como mencionamos anteriormente, crearemos una canalización de Logstash que usará el complemento de entrada Logstash Redis. Esta entrada leerá eventos de una instancia de Redis; Es compatible con ambos canales y listas de Redis. Puedes leer más sobre el plugin de entrada Redis. Puede obtener la lista de complementos instalados siguiendo los pasos que se enumeran a continuación

Ejecute el comando kubectl exec -ti {Logstash_Pod_Name}  bash para conectarse a Logstash POD.
Ejecute el comando bin/logstash-plugin list para ver los plugins instalados

https://msdnshared.blob.core.windows.net/media/2018/10/Screen-Shot-2018-10-14-at-5.34.40-PM.png

Implementar Logstash en el servicio de Azure Kubernetes

Logstash es una cola de procesamiento de datos que ingiere datos de una multitud de fuentes simultáneamente, los transforma y luego los envía a Elasticsearch. Logstash utilizará el complemento de Azure Event Hub y el complemento de entrada Redis para ingerir datos en Elasticsearch. En este artículo, vamos a compartir los punteros principales sobre los cambios necesarios para los recursos de Logstash, es decir, ConfigMap y la implementación, con el fin de suscribirse solo a Azure Redis Cache. Puede consultar las dos primeras partes de esta serie para obtener más detalles.

Los pasos necesarios para implementar Logstash en AKS se enumeran a continuación

Crear un ConfigMap Kubernetes

Creamos una nueva cola de procesamiento en Logstash para la integración de la caché Redis de Azure y los principales indicadores sobre los cambios necesarios para este recurso en comparación con las partes anteriores de esta serie son:

  • Se ha definido una nueva cola de procesamiento, por ejemplo, azureredis es el ID de la tubería y azureredis.cfg es la ruta del archivo de configuración para la integración del caché de Redis. El archivo azureredis.cfg se montará desde ConfigMap. El proceso de procesamiento de eventos de Logstash tiene tres etapas: entradas → filtros → salidas. Este archivo define la tubería de logstash para Redis Cache.
    • Especifique host => "{YOUR_REDIS_HOST_NAME}" en función del nombre de host de su instancia de Redis
    • El cliente Redis de muestra está publicando mensajes en el canal, por lo que data_type es channel data_type => "channel"
    • El nombre del canal que he especificado es 'mensajes'. Actualizar la clave del nombre del canal key => "messages" según el nombre del canal especificado.
    • Especifique la contraseña según el valor de la clave secundaria de Redis Cache password => "{YOUR_REDIS_SECONDARY_KEY}"
    • Dado que HTTPS está habilitado, he especificado el puerto como 6380 port => 6380. La configuración predeterminada es un puerto no SSL, es decir, 6379.
    • SSL está habilitado ssl => true
    • La salida es Elasticsearch y el nombre del índice se define como index => "azureredis-%{+YYYY.MM.dd}

El fragmento de código yaml para crear este recurso se muestra a continuación

apiVersion: v1
kind: ConfigMap
metadata:
name: sample-logstash-configmap
namespace: default
data:
logstash.yml: |
xpack.monitoring.elasticsearch.url: https://sample-elasticsearch:9200
dead_letter_queue.enable: true
xpack.monitoring.enabled: true
xpack.monitoring.elasticsearch.username: logstash_system
xpack.monitoring.elasticsearch.password: Password1$
xpack.monitoring.elasticsearch.ssl.ca: "/usr/share/logstash/config/elastic-stack-ca.pem"
pipelines.yml: |
- pipeline.id: azureeventhubs
path.config: "/usr/share/logstash/azureeventhubs.cfg"
- pipeline.id: azureredis
path.config: "/usr/share/logstash/azureredis.cfg"
azureeventhubs.cfg: |
input {
azure_event_hubs {
event_hub_connections => ["{AZURE_EVENT_HUB_CONNECTION_STRING};EntityPath=logstash"]
threads => 2
decorate_events => true
consumer_group => "$Default"
storage_connection => "{STORAGE_ACCOUNT_CONNECTION_STRING}"
storage_container => "logstash"
}
}
filter {
}
output {
elasticsearch {
hosts => ["sample-elasticsearch:9200" ]
user => "elastic"
password => "Password1$"
index => "azureeventhub-%{+YYYY.MM.dd}"
ssl => true
cacert => "/usr/share/logstash/config/elastic-stack-ca.pem"
}
}
azureredis.cfg: |
input {
redis {
host => "{YOUR_REDIS_HOST_NAME}"
key => "messages"
data_type => "channel"
password => "{YOUR_REDIS_SECONDARY_KEY}"
port => 6380
ssl => true
}
}
filter {
}
output {
elasticsearch {
hosts => ["sample-elasticsearch:9200" ]
user => "elastic"
password => "Password1$"
index => "azureredis-%{+YYYY.MM.dd}"
ssl => true
cacert => "/usr/share/logstash/config/elastic-stack-ca.pem"
}
}
logstash.conf: |

Crear un despliegue de Kubernetes

El único cambio necesario para Logstash_Deployment.yaml es montar la nueva configuración de canalización para Redis, es decir, azureredis.cfg. Puede consultar los artículos anteriores de esta serie para obtener más detalles sobre este recurso.

volumeMounts:
- name: sample-logstash-configmap
mountPath: /usr/share/logstash/azureredis.cfg
subPath: azureredis.cfg

Implementar los recursos de Logstash a AKS

Implementar los recursos de Logstash a AKS. Una vez implementado, ejecute AzureRedisCacheSample para publicar mensajes en Redis. Este es un cliente de muestra (.NET Core 2.1) para enviar mensajes al canal Redis. Esta muestra también se suscribe al canal Redis localmente e imprime los mensajes. Debe actualizar la cadena de conexión y el nombre del canal StackExchange.Redis.

https://msdnshared.blob.core.windows.net/media/2018/10/Screen-Shot-2018-10-14-at-6.37.22-PM.png

Después de enviar algunos mensajes, navegue hasta el punto final de Kibana y verá los eventos recibidos y los eventos emitidos en la sección de monitoreo

https://msdnshared.blob.core.windows.net/media/2018/10/Screen-Shot-2018-10-14-at-5.56.49-PM-1024x212.png

También puede crear un filtro de índice en Kibana y se mostrarán los mensajes enviados a Redis

https://msdnshared.blob.core.windows.net/media/2018/10/Screen-Shot-2018-10-14-at-1.29.00-PM-1024x438.png

Esto completa el artículo sobre la ingestión de mensajes de Azure Redis Cache en Elasticsearch utilizando el complemento Redis de Logstash. El código de ejemplo para este artículo se puede descargar desde GitHub.