Saltar al contenido

¿Cómo uso un controlador de registro de Splunk con una tarea de Amazon ECS en Fargate?

6 minutos de lectura
0

Quiero usar un controlador de registro de Splunk con una tarea de Amazon Elastic Container Service (Amazon ECS) en AWS Fargate

Descripción breve

Puedes usar el controlador de registro de Splunk, también llamado "logging driver," de Docker en Fargate, para enviar los registros de los contenedores al recopilador de registros de Enterprise Splunk o a Splunk Cloud.

Resolución

Configuración del entorno de Splunk Cloud para recibir los registros de Fargate

  1. Utiliza la opción Free Splunk para crear una cuenta de Splunk Cloud. Si ya tienes una cuenta de Splunk Cloud, continúa con el paso 2. Para obtener más información, consulta Free Splunk en el sitio web de Splunk.
  2. Inicia sesión en tu cuenta de Splunk Cloud.
    Nota: Después de crear una cuenta, usa la URL, el nombre de usuario y la contraseña de la nube de Splunk para iniciar sesión.
  3. En el panel de navegación, selecciona Settings (Configuración).
  4. En la sección DATA (DATOS), elige Data inputs (Entradas de datos).
  5. En la sección Local inputs (Entradas locales), en la columna Actions (Acciones), elige Add new (Añadir nueva).
    Nota: Creas un token de recopilador de eventos HTTP (HEC) para poder enviar datos y eventos de aplicaciones a una implementación de Splunk a través de los protocolos HTTP y HTTP seguro (HTTPS).
  6. En Name (Nombre), introduce un nombre para tu token y, a continuación, selecciona Next (Siguiente).
  7. Sigue los pasos del resto de las páginas del asistente de configuración y, a continuación, elige Submit (Enviar) para crear el token HEC.
    Nota: Puedes dejar los valores predeterminados en su lugar.
  8. Prueba el nuevo token con curl o Docker.
    Nota: De forma predeterminada, Splunk escucha en el puerto 8088 y acepta eventos en la ruta /services/collector.
    curl:
    curl -k  https://prd-p-9l79p.splunkcloud.com:8088/services/collector -H "Authorization: Splunk splunk-token" -d '{"event": "Put this message in Splunk"}'
    Nota: Sustituye splunk-token por el token HEC que creaste anteriormente.
    Docker:
    docker run --publish 80:80 --log-driver=splunk --log-opt splunk-token=splunk token --log-opt splunk-url=https://prd-p-u7z1u.splunkcloud.com:8088 --log-opt splunk-insecureskipverify=true --log-opt splunk-sourcetype=docker-test --log-opt splunk-index=main  nginx

Nota: Sustituye splunk-token por el token HEC que creaste anteriormente.

Configuración de AWS Secrets Manager para usar el token HEC

Nota: Si se muestran errores al ejecutar comandos de la Interfaz de la línea de comandos de AWS (AWS CLI), consulta Troubleshoot AWS CLI errors. Además, asegúrate de utilizar la versión más reciente de la AWS CLI.

Para almacenar tu token HEC en Secrets Manager para que Fargate pueda usarlo de forma segura, ejecuta el siguiente comando:

aws secretsmanager create-secret --name splunk-token --secret-string token-value

Nota: Sustituye splunk-token por tu token HEC. Sustituye token-value por el valor del token.

Configuración de un rol de ejecución de tareas con permiso para acceder a los secretos

  1. Abre la consola de AWS Identity and Access Management (IAM).
  2. En el panel de navegación, selecciona Roles.
  3. En la lista de roles, busca y elige ecsTaskExecutionRole.
  4. Elige Add inline policy (Añadir política insertada).
  5. Elige la pestaña JSON del editor y, a continuación, introduce la siguiente política:
    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "secretsmanager:GetSecretValue",
            "kms:Decrypt"
          ],
          "Resource": [
            "arn:aws:secretsmanager:<region>:<aws_account_id>:secret:<secret_name>",
            "arn:aws:kms:<region>:<aws_account_id>:key/<key_id>"
          ]
        }
      ]
    }
    Nota: Si utilizas una clave personalizada de AWS Key Management Service (AWS KMS) para cifrar los secretos, proporciona el permiso kms:Decrypt y el nombre de recurso de Amazon (ARN) de la clave de KMS.
  6. Elige Revisar política.
  7. En Nombre, introduce un nombre para la política.
  8. Selecciona Crear política.

Configuración de la definición de la tarea de Amazon ECS en Fargate

  1. Abre la consola de Amazon ECS.
  2. En el panel de navegación, en la sección Amazon ECS, selecciona Task Definitions (Definiciones de tareas).
  3. Elige Create new Task Definition (Crear una nueva definición de tarea).
  4. Elige Fargate y, a continuación, Paso siguiente.
  5. En el apartado Configure task and container definitions (Configuración de definiciones de tareas y contenedores), en Task definition name (Nombre de la definición de tarea), introduce un nombre para la definición de la tarea.
  6. En Rol de tarea, elige el rol que configuraste anteriormente.
  7. En la sección Task size (Tamaño de la tarea), en Task memory (GB) (Memoria de la tarea [GB]) y Task CPU (vCPU) (CPU de la tarea [vCPU]), introduce los valores adecuados para la tarea.
  8. En la sección Container Definitions (Definiciones de contenedores), elige Add container (Añadir contenedor).
  9. Elige las opciones adecuadas según las necesidades de tus contenedores.
  10. En la sección LOGGING (REGISTRO) del menú desplegable, selecciona Export logs to Splunk (Exportar registros a Splunk).
  11. En las opciones de clave y valor de Log options (Opciones de registro), introduce lo siguiente:
    Key (Clave): splunk-url
    Value (Valor): Tu punto de enlace de splunk (por ejemplo: https://prd-p-9l79p.splunkcloud.com:8088/)
    Key (Clave): splunk-insecureskipverify
    Value (Valor): True
    Key (Clave): splunk-token
    valueFrom: El ARN del secreto que creaste anteriormente
  12. Selecciona Add (Añadir).
    Nota: Para obtener más información sobre el código y las configuraciones de Splunk, consulta splunk.go en GitHub y Splunk options (Opciones de splunk) en el sitio web de Docker.
  13. Para crear la definición de la tarea, elige Create (Crear).
  14. Crea un servicio de Amazon ECS o ejecuta una tarea que utilice la definición de tarea que creaste anteriormente.

Comprobación de los registros en Splunk Cloud

Antes de comprobar los registros en Splunk Cloud, asegúrate de que la tarea se está ejecutando.

Nota: Como no has especificado splunk-index en la configuración de registro, los registros van a splunk-index en el índice main de forma predeterminada.

  1. Conéctate a la cuenta de Splunk Cloud.
  2. En el menú de navegación, selecciona Search (Buscar).
  3. Introduce index="main" en el cuadro de búsqueda.

Nota: Puedes seguir los pasos anteriores para crear una definición de tarea en Amazon ECS para un tipo de lanzamiento de Amazon ElasticCompute Cloud (Amazon EC2). Luego, puedes usar el controlador de registro de Splunk desde cualquiera de las tareas de ECS para enviar los registros al recopilador de registros de Splunk.

Información relacionada

Rol de IAM de ejecución de tareas de Amazon ECS

OFICIAL DE AWSActualizada hace 2 años