Graylog: Primeros pasos

Cómo empezar con Graylog

👋 ¡Bienvenido a la documentación de Stackhero!

Stackhero ofrece una solución Graylog cloud lista para usar que proporciona una serie de beneficios, incluyendo:

  • Servidor de correo electrónico SMTP ilimitado y dedicado incluido.
  • Actualizaciones sin esfuerzo con solo un clic.
  • Nombre de dominio personalizable asegurado con HTTPS (por ejemplo, https://logs.tu-empresa.com).
  • Rendimiento óptimo y seguridad robusta gracias a una VM privada y dedicada.

Ahorra tiempo y simplifica tu vida: ¡solo toma 5 minutos probar la solución de Graylog cloud hosting de Stackhero!

Una entrada (input) es el punto final donde Graylog recibe sus logs. Puede enviar logs utilizando TCP o UDP. Además, Graylog puede recopilar registros desde una API, una cola Kafka, un servidor RabbitMQ y otros métodos.

En este ejemplo, vamos a crear una entrada UDP sin formato. Para comenzar, abra la interfaz de Graylog y navegue a "System" y luego "Inputs". Elija "Raw/Plaintext UDP" y haga clic en "Launch new input". Configure su entrada con los siguientes valores y valide el formulario:

  1. Node: Seleccione su nodo
  2. Title: RAW UDP
  3. Port: 5555

A continuación, abra una terminal en su ordenador y envíe un mensaje UDP a su servidor Graylog. Recuerde reemplazar XXXXXX por el nombre de dominio de su servicio:

  • En macOS: echo "Hello Graylog from UDP" | nc -u -w1 -c <XXXXXX>.stackhero-network.com 5555
  • En Linux: echo "Hello Graylog from UDP" | nc -u -w1 <XXXXXX>.stackhero-network.com 5555

Después de enviar el mensaje, vuelva a Graylog y haga clic en "Search". Debería ver su mensaje 🎉

¡Enhorabuena, acaba de enviar su primer mensaje a Graylog! Si lo desea, puede crear entradas y paneles adicionales adaptados a sus necesidades. Para más información, puede consultar la documentación oficial de Graylog.

Hay varios ejemplos de código disponibles en nuestro repositorio Git. Este repositorio ofrece implementaciones prácticas y personalizaciones adicionales para ayudarle a sacar el máximo partido a Graylog.

Si dispone de un cliente rsyslog y desea enviar logs de forma segura a Graylog, siga estos pasos:

No active ninguna opción TLS en la entrada de Graylog. El TLS será gestionado directamente por un proxy inverso en su instancia, por lo que Graylog no lo gestionará.

  1. Acceda a la configuración de su servicio Graylog en el panel de Stackhero y active el "cifrado TLS" para el puerto Syslog TCP 514.

  2. Actualice la configuración de su rsyslog como se indica a continuación. Sustituya <XXXXXX>.stackhero-network.com por el nombre de host de su instancia:

    # Definir el certificado CA TLS
    global(
      DefaultNetstreamDriver="gtls"
      DefaultNetstreamDriverCAFile="/etc/ssl/certs/ca-certificates.crt"
    )
    
    # Enviar todos los logs a un servidor remoto
    # Se crea una cola en disco para esta acción. Si el host remoto
    # está inactivo, los mensajes se almacenan en disco y se envían cuando vuelva a estar disponible
    # Consulte https://www.rsyslog.com/doc/v8-stable/configuration/actions.html
    # y https://www.rsyslog.com/doc/v8-stable/configuration/modules/omfwd.html
    *.* action(
      type="omfwd"
      target="<XXXXXX>.stackhero-network.com"
      port="514"
      protocol="tcp"
      KeepAlive="on"
      KeepAlive.Interval="30"
      StreamDriver="gtls"
      StreamDriverMode="1"
      StreamDriverAuthMode="x509/name"
      ResendLastMSGOnReconnect="on"
      queue.filename="fwdRule1"  # prefijo único para los archivos de spool
      queue.type="LinkedList"
      queue.maxDiskSpace="256m"
      queue.saveOnShutdown="on"
      action.resumeRetryCount="-1"
      action.resumeInterval="30"
    )
    
  3. Reinicie su servicio rsyslog y verifique la configuración enviando un log con el siguiente comando:

    logger This is a test
    

La configuración está completa. ¡Ahora está enviando logs de forma segura a Graylog usando cifrado TLS!

Puede encontrarse con un error como el siguiente:

org.opensearch.index.mapper.MapperParsingException: failed to parse field [time] of type [long] in document with id 'xxxx'

Puede consultar este error en los logs disponibles en el panel de Stackhero o en el panel de administración de Graylog en System > Overview > Indexer failures.

Este error indica que se ha enviado un log con un valor para el campo time que no coincide con el tipo esperado (en este caso, un valor numérico de tipo "long"). Graylog utiliza la funcionalidad de mapeo dinámico de OpenSearch. Cuando se envía un log por primera vez, OpenSearch intenta adivinar el tipo de los campos. Por ejemplo, si un log incluye el campo time con el valor numérico 1234, OpenSearch lo define como un campo numérico. Si posteriormente se envía otro log con el campo time establecido como "abcd", una cadena de texto, OpenSearch lo rechazará porque espera un valor numérico.

Tenga en cuenta que el nombre del campo time se utiliza solo como ejemplo. Puede tratarse de cualquier nombre de campo y tipo.

Para resolver este problema, debe redefinir el tipo que espera OpenSearch. Para más información, consulte la documentación oficial de Graylog.

Antes de continuar, active el acceso a OpenSearch en el panel de Stackhero. Vaya a su servicio Graylog y haga clic en el botón "Configure" para activar el acceso a OpenSearch.

Tenga cuidado con estos cambios, ya que una configuración incorrecta puede bloquear su clúster de OpenSearch y provocar la pérdida de datos. Si tiene dudas, no continúe.

  1. Defina su nuevo mapping. En este ejemplo, redefinimos el campo time como tipo string. Puede consultar los tipos disponibles en la documentación de tipos de campo de OpenSearch.

  2. Guarde el siguiente contenido en un archivo llamado graylog-custom-mapping.json:

    {
      "template": "graylog_*",
      "mappings": {
        "message": {
          "properties": {
            "time": {
              "type": "string",
              "index": "not_analyzed"
            }
          }
        }
      }
    }
    
  3. Envíe este archivo utilizando el siguiente comando curl (sustituya <XXXXXX>.stackhero-network.com por el dominio de su instancia):

    curl -u 'admin' -X PUT -d @'graylog-custom-mapping.json' -H 'Content-Type: application/json' 'https://<XXXXXX>.stackhero-network.com/opensearch/_template/graylog-custom-mapping?pretty'
    

    Debería recibir una respuesta como:

    {
      "acknowledged": true
    }
    
  4. Por último, verifique que el mapping se ha actualizado con este comando (sustituya el dominio si es necesario):

    curl -u 'admin' -X GET 'https://<XXXXXX>.stackhero-network.com/opensearch/graylog_deflector/_mapping?pretty'
    

Gestionar el error "Unable to write audit log entry"

Si ve un error como:

Unable to write audit log entry because there is no valid license

o

Not running cleanup for auditlog entries in MongoDB because there is no valid license

esto ocurre porque Graylog Enterprise se ha activado sin una licencia válida. Si dispone de una licencia, puede introducirla en la interfaz de Graylog. Si no tiene licencia, simplemente desactive Graylog Enterprise en el panel de Stackhero.