Controlador de registro Graylog Extended Format (GELF)
El controlador de registro gelf es un formato conveniente entendido por una serie de herramientas como Graylog, Logstash y Fluentd. 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.
NoteSi 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.
El siguiente ejemplo establece el controlador de registro en gelf y configura la opción gelf-address.
{
"log-driver": "gelf",
"log-opts": {
"gelf-address": "udp://1.2.3.4:12201"
}
}Reinicia Docker para que los cambios surtan efecto.
NoteLas opciones de configuración de
log-optsen el archivo de configuracióndaemon.jsondeben proporcionarse como cadenas. Los valores booleanos y numéricos (como el valor paragelf-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:
$ 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 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. | --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. | --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. | --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. | --log-opt env-regex=^(os|customer) |
NoteEl controlador
gelfno 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.
$ docker run -dit \
--log-driver=gelf \
--log-opt gelf-address=udp://192.168.0.42:12201 \
alpine sh