Controlador de registro Syslog
El controlador de registro syslog redirige los registros a un servidor syslog. El protocolo syslog utiliza una cadena de texto sin formato como mensaje de registro y admite un conjunto limitado de metadatos. El mensaje de syslog debe tener un formato específico para ser válido. A partir de un mensaje válido, el receptor puede extraer la siguiente información:
- Prioridad (Priority): el nivel de registro, como
debug,warning,error,info. - Marca de tiempo (Timestamp): cuándo ocurrió el evento.
- Nombre de host (Hostname): dónde ocurrió el evento.
- Servicio (Facility): qué subsistema registró el mensaje, como
mailokernel. - Nombre de proceso e ID de proceso (PID): El nombre e ID del proceso que generó el registro.
El formato se define en RFC 5424 y el controlador syslog de Docker implementa la referencia ABNF de la siguiente manera:
TIMESTAMP SP HOSTNAME SP APP-NAME SP PROCID SP MSGID
+ + + | +
| | | | |
| | | | |
+-----------+ +----+ | +----+ +---------+
v v v v v
2017-04-01T17:41:05.616647+08:00 a.vm {taskid:aa,version:} 1787791 {taskid:aa,version:}Uso
Para usar el controlador syslog como el controlador de registro predeterminado, establece las claves log-driver y log-opts 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 syslog y configura la opción syslog-address. Las opciones de syslog-address admiten tanto UDP como TCP; este ejemplo utiliza UDP.
{
"log-driver": "syslog",
"log-opts": {
"syslog-address": "udp://1.2.3.4:1111"
}
}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 numéricos y booleanos (como el valor parasyslog-tls-skip-verify) deben, por lo tanto, estar entre comillas (").
Puedes establecer el controlador de registro para un contenedor específico utilizando la opción --log-driver al emplear docker container create o docker run:
$ docker run \
--log-driver syslog --log-opt syslog-address=udp://1.2.3.4:1111 \
alpine echo hello world
Opciones
Las siguientes opciones de registro son compatibles como opciones para el controlador de registro syslog. Se pueden establecer por defecto en daemon.json añadiéndolas como pares clave-valor a la matriz JSON log-opts. También se pueden configurar en un contenedor determinado agregando una opción --log-opt <clave>=<valor> para cada opción al iniciar el contenedor.
| Opción | Descripción | Valor de ejemplo |
|---|---|---|
syslog-address | La dirección de un servidor syslog externo. El especificador de URI puede ser [tcp|udp|tcp+tls]://host:port, unix://path o unixgram://path. Si el transporte es tcp, udp o tcp+tls, el puerto predeterminado es 514. | --log-opt syslog-address=tcp+tls://192.168.1.3:514, --log-opt syslog-address=unix:///tmp/syslog.sock |
syslog-facility | El servicio syslog a utilizar. Puede ser el número o el nombre de cualquier servicio syslog válido. Consulta la documentación de syslog. | --log-opt syslog-facility=daemon |
syslog-tls-ca-cert | La ruta absoluta a los certificados de confianza firmados por la CA. Se ignora si el protocolo de la dirección no es tcp+tls. | --log-opt syslog-tls-ca-cert=/etc/ca-certificates/custom/ca.pem |
syslog-tls-cert | La ruta absoluta al archivo de certificado TLS. Se ignora si el protocolo de la dirección no es tcp+tls. | --log-opt syslog-tls-cert=/etc/ca-certificates/custom/cert.pem |
syslog-tls-key | La ruta absoluta al archivo de clave TLS. Se ignora si el protocolo de la dirección no es tcp+tls. | --log-opt syslog-tls-key=/etc/ca-certificates/custom/key.pem |
syslog-tls-skip-verify | Si se establece en true, se omite la verificación TLS al conectarse al demonio syslog. El valor predeterminado es false. Se ignora si el protocolo de la dirección no es tcp+tls. | --log-opt syslog-tls-skip-verify=true |
tag | Una cadena que se añade al APP-NAME en el mensaje syslog. 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 |
syslog-format | El formato del mensaje syslog a utilizar. Si no se especifica, se utiliza el formato Unix syslog local, sin un nombre de host especificado. Especifica rfc3164 para el formato compatible con RFC-3164, rfc5424 para el formato compatible con RFC-5424, o rfc5424micro para el formato compatible con RFC-5424 con resolución de marca de tiempo en microsegundos. | --log-opt syslog-format=rfc5424micro |
labels | Aplica al iniciar el demonio de Docker. Una lista separada por comas de etiquetas relacionadas con el registro que este demonio acepta. Se utiliza para opciones avanzadas de etiquetas de registro. | --log-opt labels=production_status,geo |
labels-regex | Aplica al iniciar el demonio de Docker. 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 | Aplica al iniciar el demonio de Docker. Una lista separada por comas de variables de entorno relacionadas con el registro que este demonio acepta. Se utiliza para opciones avanzadas de etiquetas de registro. | --log-opt env=os,customer |
env-regex | Aplica al iniciar el demonio de Docker. 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) |