Graylog: Comenzando

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 es el punto final donde Graylog recibe sus logs. Puede enviar logs usando TCP o UDP. Además, Graylog puede recopilar entradas de logs desde una API, una cola de Kafka, un servidor RabbitMQ y otros métodos.

En este ejemplo, crearemos una entrada UDP en bruto. 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 un terminal en su ordenador y envíe un mensaje UDP a su servidor Graylog. Recuerde reemplazar XXXXXX con 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, regrese a Graylog y haga clic en "Search". Debería ver su mensaje 🎉

¡Felicidades, ahora ha enviado su primer mensaje a Graylog! No dude en crear entradas y paneles adicionales adaptados a sus necesidades. Para obtener más orientación, puede encontrar útil la documentación oficial de Graylog.

Varios ejemplos de código están disponibles en nuestro repositorio Git. Este repositorio ofrece implementaciones prácticas y personalizaciones adicionales para ayudarle a aprovechar al máximo Graylog.

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

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

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

  2. Actualice su configuración de rsyslog como se indica a continuación. Reemplace <XXXXXX>.stackhero-network.com con 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á
    # caído, los mensajes se almacenan en disco y se envían cuando vuelve a estar disponible
    # Ver 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 de nombre único para 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 comando:

    logger This is a test
    

Esto completa la configuración. ¡Ahora está enviando logs de manera segura a Graylog usando cifrado TLS!

Puede encontrar un error como:

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

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

Este error indica que se envió 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 función de mapeo dinámico de OpenSearch. Cuando se envía un log por primera vez, OpenSearch intenta adivinar los tipos de campo. Por ejemplo, si un log incluye el campo time con el valor numérico 1234, OpenSearch lo define como un campo numérico. Si se envía otro log con el campo time establecido como "abcd", una cadena, OpenSearch lo rechazará porque espera un valor numérico.

Recuerde que el nombre del campo time se usa solo como ilustración. Puede ser cualquier nombre de campo y tipo.

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

Antes de continuar, habilite el acceso a OpenSearch en el panel de Stackhero. Navegue 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 configuraciones incorrectas pueden bloquear su clúster de OpenSearch y potencialmente resultar en pérdida de datos. Si no está seguro, no continúe.

  1. Defina su nuevo mapeo. En este ejemplo, redefinimos el campo time para que sea de tipo string. Puede encontrar 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. Publique este archivo usando el siguiente comando curl (reemplace <XXXXXX>.stackhero-network.com con el nombre de 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. Finalmente, verifique que el mapeo se haya actualizado con este comando (reemplace el dominio según sea necesario):

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

Manejar 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 ha sido activado sin una licencia válida. Si tiene una licencia, puede ingresarla en la interfaz de Graylog. Si no tiene una licencia, simplemente desactive Graylog Enterprise en el panel de Stackhero.