Recopila registros en Anthos con Splunk Connect

En este instructivo, se describe cómo instalar y usar Splunk Connect para Kubernetes a fin de recopilar registros de aplicaciones de Kubernetes que se ejecutan en Anthos en Google Cloud. Con Anthos podrás aprovechar Kubernetes y la tecnología de nube en tus inversiones locales existentes o en la nube pública. Obtendrás la experiencia de Google Kubernetes Engine (GKE) mediante instalaciones y actualizaciones rápidas, administradas y sencillas, validadas por Google. Splunk Connect puede indexar, almacenar y analizar tus registros locales, como se muestra en el siguiente diagrama:

Arquitectura para registrar Anthos implementado en VMware con Splunk

El instructivo está dirigido a los administradores que configuran la integración de registros y métricas de Anthos a Splunk. En este instructivo, configurarás un recopilador de eventos HTTP para Splunk Enterprise, implementarás Splunk Connect para Kubernetes en el clúster de Anthos y también implementarás una aplicación de muestra.

En este instructivo, se supone que estás familiarizado con Kubernetes y que también cumples con los siguientes requisitos técnicos:

  • Eres cliente de Anthos o participas en el programa de prueba gratuita de Anthos.
  • Tienes una instalación de Anthos ya configurada con un clúster de usuario en ejecución.
  • En este momento, ejecutas Splunk Enterprise (7.0 o una versión posterior) en tu organización a nivel local.

Si ejecutas Anthos en Google Cloud o en otras nubes públicas y deseas conectarte a una instancia de Splunk que se ejecuta de forma local, debes tener conectividad híbrida entre los dos entornos, como se muestra en el siguiente diagrama:

Arquitectura para registrar Anthos en Google Cloud o en otras nubes públicas

Objetivos

  • Instalar y usar Splunk Connect para Kubernetes a fin de recopilar registros de aplicaciones de Kubernetes que se ejecutan en Anthos en Google Cloud
  • Configurar un recopilador de eventos HTTP para Splunk Enterprise
  • Implementar Splunk Connect para Kubernetes en el clúster de Anthos
  • Implementar una aplicación de muestra

Costos

En este instructivo, se usan los siguientes componentes facturables de Google Cloud:

Para generar una estimación de costos en función del uso previsto, usa la calculadora de precios. Es posible que los usuarios nuevos de Google Cloud sean aptos para obtener una prueba gratuita.

Antes de comenzar

  1. Accede a tu Cuenta de Google.

    Si todavía no tienes una cuenta, regístrate para obtener una nueva.

  2. En la página de selección de proyectos de Cloud Console, selecciona o crea un proyecto de Cloud.

    Ir a la página Selector de proyectos

  3. Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud. Obtén información sobre cómo confirmar que tienes habilitada la facturación para tu proyecto.

  4. Asegúrate de haber implementado y configurado Splunk. Consulta Getting started with Splunk (Comienza a usar Splunk).
  5. Asegúrate de tener un clúster de usuario de Anthos implementado y registrado en Google Cloud Console. En este instructivo, suponemos que hay tres nodos en el clúster, pero esto no es obligatorio. Sigue la documentación de Anthos para implementar este componente.
  6. Asegúrate de que haya conectividad de red entre el clúster de Anthos y Splunk.

Configura Splunk Enterprise

Configura índices

Splunk Connect necesita un mínimo de dos índices a fin de exportar datos, uno para eventos y otro para métricas. En este instructivo, también crearás un índice de eventos diferente para objetos (un total de tres índices).

  1. Accede a Splunk como administrador.
  2. Ve a Settings > Indexes.
  3. Haz clic en New Index.
    1. En el cuadro de texto Index Name, ingresa events.
    2. Configura Index Data Type en Events.
  4. Haz clic en Save.
  5. Haz clic en New Index.
    1. En el cuadro de texto Index Name, ingresa objects.
    2. Configura Index Data Type en Events.
  6. Haz clic en Save.
  7. Haz clic en New Index.
    1. En el cuadro de texto Index Name, ingresa metrics.
    2. Establece el Index Data Type en Metrics.
  8. Haz clic en Save.

Configura un recopilador de eventos HTTP (HEC)

Para exportar los registros y las métricas de Anthos a Splunk, debes configurar el recopilador de eventos HTTP (HEC) de Splunk.

  1. Ve a Settings > Data inputs.
  2. Haz clic en Global Settings.
    1. Configura All tokens como Enabled.
    2. Selecciona Enable SSL.
    3. Haz clic en Save.
  3. En el cuadro de diálogo HTTP Event Collector, selecciona +Add New.
  4. En el cuadro de texto Name, ingresa anthos-hec y, luego, selecciona Next.
  5. En el cuadro de diálogo Input Settings, haz lo siguiente:
    1. Configura App Context como Search & Reporting (search).
    2. En el menú Select Allowed Indexes, selecciona events, metrics y objects.
    3. Haz clic en Next.
  6. Aparecerá la página Review. Verifica que la página se vea de esta manera:

    Página de revisión del recopilador de HEC

  7. Haz clic en Submit para crear el HEC. Copia el valor del token resultante para usarlo más tarde.

  8. Para verificar la conectividad, accede a un nodo en el clúster de Anthos y envía un evento de prueba a Splunk. Reemplaza hec-token con el valor del token creado anteriormente y reemplaza splunk-ip por la IP de tu servidor de Splunk Enterprise, como se muestra en el siguiente código:

    curl -k http://splunk-ip:8088/services/collector/event \
    -H "Authorization: Splunk hec-token" -d '{"event": "hello splunk"}'
    

    Si la solicitud se realiza de forma correcta, en el servidor se mostrará una respuesta como la siguiente:

    {"text":"Success","code":0}
    

Implementa Splunk Connect para Kubernetes

A fin de implementar Splunk Connect para Kubernetes, debes crear una cuenta de servicio de Splunk, instalar Helm e implementar Splunk Connect.

Accede al clúster de usuario de Anthos como administrador

  • Desde una shell en la estación de trabajo de administrador de Anthos, asegúrate de que la herramienta de kubectl esté configurada para apuntar al clúster de Anthos de forma predeterminada:
  • kubectl config current-context
  • El comando anterior mostrará el clúster de Anthos. Si no es así, vincula el archivo kubeconfig principal a un archivo de configuración local y vuelve a intentarlo:
  • mkdir .kube
    ln -s /kubeconfig ~/.kube/config
    

Instale Helm

Instala Splunk Connect con el administrador de paquetes Helm.

  1. Instala el cliente Helm y asegúrate de que esté en tu ruta de acceso:

    helm version
    

    El resultado es similar al siguiente, aunque la versión y los números de confirmación pueden variar:

    version.BuildInfo{Version:"v3.2.3", GitCommit:"8f832046e258e2cb800894579b1b3b50c2d83492", GitTreeState:"clean", GoVersion:"go1.13.12"}
    

Implementa Splunk Connect

  1. Crea un espacio de nombres de Splunk. Este espacio de nombres se usa para aislar Splunk Connect del resto del clúster:

    kubectl create namespace splunk
    
  1. Crea un archivo YAML que contenga la configuración de Splunk Connect para leer los registros, los objetos y las métricas. Reemplaza hec-token con el valor del token que creaste antes y reemplaza splunk-ip por la IP de tu servidor de Splunk Enterprise:

    cat <<EOF >values.yaml
    global:
      splunk:
        hec:
          protocol: https
          insecureSSL: true
          token: hec-token
          host: splunk-ip
          port: 8088
          indexName: events
    
    splunk-kubernetes-logging:
      journalLogPath: /run/log/journal
      splunk:
        hec:
          indexName: events
    
    splunk-kubernetes-objects:
      objects:
        core:
          v1:
            - name: pods
            - name: namespaces
            - name: nodes
            - name: services
            - name: config_maps
            - name: persistent_volumes
            - name: service_accounts
            - name: persistent_volume_claims
            - name: resource_quotas
            - name: component_statuses
            - name: events
              mode: watch
        apps:
          v1:
            - name: deployments
            - name: daemon_sets
            - name: replica_sets
            - name: stateful_sets
      splunk:
        hec:
          indexName: objects
    
    splunk-kubernetes-metrics:
      kubernetes:
        insecureSSL: true
      splunk:
        hec:
          indexName: metrics
    EOF
    
  2. Instala Splunk Connect para Kubernetes en el espacio de nombres splunk:

    helm install anthos-splunk -f values.yaml --namespace splunk \
    https://github.com/splunk/splunk-connect-for-kubernetes/releases/downlo
    ad/1.4.1/splunk-connect-for-kubernetes-1.4.1.tgz
    
  3. Verifica que Splunk Connect se haya iniciado de forma correcta.

    kubectl -n splunk get pods
    

    Deberías ver 3 Pods de registro, 3 Pods de métricas, 1 Pod agregador de métricas y 1 Pod de objetos en ejecución, como se muestra a continuación:

    NAME                                                          READY   STATUS    RESTARTS   AGE
    anthos-splunk-splunk-kubernetes-logging-46srr                  1/1     Running   0          2m
    anthos-splunk-splunk-kubernetes-logging-gkgkm                  1/1     Running   0          2m
    anthos-splunk-splunk-kubernetes-logging-r52nz                  1/1     Running   0          2m
    anthos-splunk-splunk-kubernetes-metrics-agg-595946f874-vjzmb   1/1     Running   0          2m
    anthos-splunk-splunk-kubernetes-metrics-gbkb8                  1/1     Running   0          2m
    anthos-splunk-splunk-kubernetes-metrics-k6ksn                  1/1     Running   0          2m
    anthos-splunk-splunk-kubernetes-metrics-vg5wn                  1/1     Running   0          2m
    anthos-splunk-splunk-kubernetes-objects-7c5cd8cf7d-csvw6       1/1     Running   0          2m
    
  4. Ve a Settings > Indexes en la IU de Splunk. Si la conexión se realiza de forma correcta, en la columna Latest Event, se muestra una hora reciente para los índices events, metrics y objects.

Soluciona problemas y realiza cambios

  • Si un Pod no se inicia o los datos no llegan, inspecciona los registros del Pod en busca de errores:

    kubectl -n splunk logs pod-name
    
  • Si necesitas actualizar tu archivo config.yaml y volver a intentarlo, ejecuta los siguientes comandos para volver a implementar Splunk Connect y volver a crear sus pods:

    helm upgrade --namespace splunk -f values.yaml anthos-splunk \
    https://github.com/splunk/splunk-connect-for-kubernetes/releases/downlo
    ad/1.4.1/splunk-connect-for-kubernetes-1.4.1.tgz
    kubectl delete pods -n splunk --all
    

Implementa y prueba una app de muestra

A continuación, implementarás una app de muestra y verás sus registros, metadatos y métricas en Splunk.

Implementa una app de muestra

  1. Implementa una app “Hello World” simple en Anthos:

    kubectl create deployment hello-kubernetes --image=paulbouwer/hello-kubernetes:1.5
    
  2. Expone la app en el puerto 8080 y redirecciona el puerto para que se pueda acceder a ella de forma local:

    kubectl expose deployment hello-kubernetes --port=8080 --type=ClusterIP
    kubectl port-forward deployment/hello-kubernetes 8080:8080
    
  3. Prueba la app mediante la herramienta de línea de comandos de curl:

    curl http://localhost:8080/
    

    Si la solicitud se realiza de forma correcta, en el servidor se mostrará una respuesta como la siguiente:

      <!DOCTYPE html>
      <html>
      <head>
          <title>Hello Kubernetes!</title>
      [...]
    

Consulta los registros de la app

  • Navega a Search en la IU web de Splunk y busca los registros de la app de muestra en el índice events:

    index=events sourcetype="kube:container:hello-kubernetes"
    

    Esta búsqueda muestra eventos de registro de la app en orden cronológico inverso (los más nuevos primero), que comienza con la solicitud de prueba y la entrada que indica que la app escucha y está lista para el servicio, como se muestra en la siguiente captura de pantalla:

    Entradas de eventos de registro

Visualiza los metadatos de la app

  • En el panel Search, busca objetos de metadatos para la app de muestra:

    index="objects" "hello-kubernetes"
    

    Esta búsqueda muestra una lista de instantáneas de metadatos para varios objetos de Kubernetes. Por ejemplo, si seleccionas sourcetype="kube:objects:deployments" y expandes metadata y status, puedes verificar el estado de la implementación de hello-kubernetes en un momento específico, incluida la cantidad de réplicas disponibles, como se muestra en la siguiente captura de pantalla:

    Instantáneas de metadatos de objetos de Kubernetes

    De forma predeterminada, los metadatos se sondean cada 15 minutos. Esto se puede ajustar con la configuración de intervalos en el archivo values.yaml.

    Los metadatos también incluyen un flujo de eventos de la API de Kubernetes. La siguiente búsqueda muestra todos los eventos de la app de muestra:

    index="objects" sourcetype="kube:objects:events*" "hello-kubernetes"
    

Consulta las métricas del sistema y de la app

  1. Ve a Metrics en la IU de Splunk y escribe cpu en el cuadro de búsqueda.

  2. En el menú desplegable, selecciona Metrics > kube > namespace > cpu > usage.

  3. En el panel Analysis de la derecha, selecciona Split by y, luego, name. Verás un gráfico de uso de CPU categorizado por espacio de nombres, como se muestra en la siguiente captura de pantalla:

    Gráfico de uso de CPU

Implementa Splunk App for Infrastructure

Splunk App for Infrastructure (SAI) proporciona estadísticas del rendimiento de los servidores de Linux y Microsoft Windows, los clústeres de Kubernetes, los contenedores de OpenShift y Docker, y las instancias de Amazon EC2, ELB y EBS. SAI usa métricas a fin de supervisar el rendimiento y usa datos de registro para comprender en profundidad y solucionar problemas de la infraestructura del servidor.

Para una instalación de configuración simplificada que sea totalmente compatible con las funciones que se proporcionan en Splunk App for Infrastructure, instala el Splunk Add-on for Infrastructure y la app de Splunk en tu entorno de Splunk. Luego, sigue estos pasos para generar una secuencia de comandos de instalación a fin de generar una secuencia de comandos que configure la entrega de datos a Splunk.

Realiza una limpieza

Sigue estos pasos para evitar que se apliquen cargos a tu cuenta de Google Cloud Platform por los recursos que usaste en este instructivo:

Borra el proyecto de Cloud

La manera más fácil de eliminar la facturación es borrar el proyecto de Cloud que creaste para el instructivo.

  1. En Cloud Console, ve a la página Administrar recursos.

    Ir a la página Administrar recursos

  2. En la lista de proyectos, selecciona el proyecto que deseas borrar y haz clic en Borrar .
  3. En el cuadro de diálogo, escribe el ID del proyecto y haz clic en Cerrar para borrar el proyecto.

Borra los recursos

Después de completar el instructivo, ejecuta estos comandos para quitar los recursos que creaste:

   helm delete --namespace splunk anthos-splunk
   kubectl delete deployment hello-kubernetes

Próximos pasos