# Controlador de registro Graylog Extended Format (GELF)


El controlador de registro `gelf` es un formato conveniente entendido por una serie de herramientas como [Graylog](https://www.graylog.org/), [Logstash](https://www.elastic.co/products/logstash) y [Fluentd](https://www.fluentd.org). Muchas herramientas utilizan este formato.

En GELF, cada mensaje de registro es un diccionario con los siguientes campos:

- Versión
- Host (quien envió el mensaje originalmente)
- Marca de tiempo
- Versión corta y larga del mensaje
- Cualquier campo personalizado que tú mismo configures

## Uso

Para usar el controlador `gelf` como el controlador de registro predeterminado, establece las claves `log-driver` y `log-opt` con los valores adecuados en el archivo `daemon.json`. Para obtener más información sobre cómo configurar Docker mediante `daemon.json`, consulta [daemon.json](/reference/cli/dockerd/#daemon-configuration-file).



> [!NOTE]
>
> Si usas Docker Desktop, edita la configuración del demonio a través del
> panel de Docker Desktop. Abre **Settings** y selecciona **Docker Engine**.
> Para más detalles, consulta
> [Configuración de Docker Engine](/desktop/settings-and-maintenance/settings/#docker-engine).


El siguiente ejemplo establece el controlador de registro en `gelf` y configura la opción `gelf-address`.

```json
{
  "log-driver": "gelf",
  "log-opts": {
    "gelf-address": "udp://1.2.3.4:12201"
  }
}
```

Reinicia Docker para que los cambios surtan efecto.

> [!NOTE]
>
> Las opciones de configuración de `log-opts` en el archivo de configuración `daemon.json` deben proporcionarse como cadenas. Los valores booleanos y numéricos (como el valor para `gelf-tcp-max-reconnect`) deben, por lo tanto, estar entre comillas (`"`).

Puedes establecer el controlador de registro para un contenedor específico configurando la opción `--log-driver` al utilizar `docker container create` o `docker run`:

```console
$ docker run \
      --log-driver gelf --log-opt gelf-address=udp://1.2.3.4:12201 \
      alpine echo hello world
```

### Opciones de GELF

El controlador de registro `gelf` admite las siguientes opciones:

| Opción                     | Requerido | Descripción                                                                                                                                                                                                                                                                                                                 | Valor de ejemplo                                   |
| :------------------------- | :-------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------- |
| `gelf-address`             | requerido | La dirección del servidor GELF. `tcp` y `udp` son los únicos especificadores de URI admitidos y debes especificar el puerto.                                                                                                                                                                                                | `--log-opt gelf-address=udp://192.168.0.42:12201`  |
| `gelf-compression-type`    | opcional  | `Solo UDP` El tipo de compresión que utiliza el controlador GELF para comprimir cada mensaje de registro. Los valores permitidos son `gzip`, `zlib` y `none`. El valor predeterminado es `gzip`. Ten en cuenta que la compresión habilitada conlleva un uso de CPU elevado, por lo que se recomienda establecerlo en `none`. | `--log-opt gelf-compression-type=gzip`             |
| `gelf-compression-level`   | opcional  | `Solo UDP` El nivel de compresión cuando el tipo de compresión es `gzip` o `zlib`. Un entero en el rango de `-1` a `9` (máxima compresión). El valor predeterminado es 1 (máxima velocidad). Los niveles más altos proporcionan más compresión a menor velocidad. Tanto `-1` como `0` deshabilitan la compresión.          | `--log-opt gelf-compression-level=2`               |
| `gelf-tcp-max-reconnect`   | opcional  | `Solo TCP` El número máximo de intentos de reconexión cuando se cae la conexión. Un entero positivo. El valor predeterminado es 3.                                                                                                                                                                                          | `--log-opt gelf-tcp-max-reconnect=3`               |
| `gelf-tcp-reconnect-delay` | opcional  | `Solo TCP` El número de segundos a esperar entre los intentos de reconexión. Un entero positivo. El valor predeterminado es 1.                                                                                                                                                                                              | `--log-opt gelf-tcp-reconnect-delay=1`             |
| `tag`                      | opcional  | Una cadena que se añade al `APP-NAME` en el mensaje `gelf`. Por defecto, Docker utiliza los primeros 12 caracteres del ID del contenedor para etiquetar los mensajes de registro. Consulta la [documentación de la opción de etiqueta de registro](/engine/logging/drivers/gelf/log_tags/) para personalizar el formato.                              | `--log-opt tag=mailer`                             |
| `labels`                   | opcional  | Aplica al iniciar el demonio de Docker. Una lista separada por comas de etiquetas relacionadas con el registro que este demonio acepta. Añade una clave adicional en los campos `extra`, precedida por un guion bajo (`_`). Se utiliza para opciones avanzadas de [etiquetas de registro](/engine/logging/drivers/gelf/log_tags/).                    | `--log-opt labels=production_status,geo`           |
| `labels-regex`             | opcional  | Similar y compatible con `labels`. Una expresión regular para hacer coincidir etiquetas relacionadas con el registro. Se utiliza para opciones avanzadas de [etiquetas de registro](/engine/logging/drivers/gelf/log_tags/).                                                                                                                           | `--log-opt labels-regex=^(production_status\|geo)` |
| `env`                      | opcional  | Aplica al iniciar el demonio de Docker. Una lista separada por comas de variables de entorno relacionadas con el registro que este demonio acepta. Añade una clave adicional en los campos `extra`, precedida por un guion bajo (`_`). Se utiliza para opciones avanzadas de [etiquetas de registro](/engine/logging/drivers/gelf/log_tags/).          | `--log-opt env=os,customer`                        |
| `env-regex`                | opcional  | Similar y compatible con `env`. Una expresión regular para hacer coincidir variables de entorno relacionadas con el registro. Se utiliza para opciones avanzadas de [etiquetas de registro](/engine/logging/drivers/gelf/log_tags/).                                                                                                                   | `--log-opt env-regex=^(os\|customer)`              |

> [!NOTE]
>
> El controlador `gelf` no admite TLS para conexiones TCP. Los mensajes enviados a entradas protegidas por TLS pueden fallar silenciosamente.

### Ejemplos

Este ejemplo configura el contenedor para utilizar el servidor GELF que se ejecuta en `192.168.0.42` en el puerto `12201`.

```console
$ docker run -dit \
    --log-driver=gelf \
    --log-opt gelf-address=udp://192.168.0.42:12201 \
    alpine sh
```

