Compartir comentarios
Las respuestas se generan en base a la documentación.

Controlador de registro Syslog

Tabla de contenidos

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 mail o kernel.
  • 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.

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.

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.

Note

Las opciones de configuración de log-opts en el archivo de configuración daemon.json deben proporcionarse como cadenas. Los valores numéricos y booleanos (como el valor para syslog-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ónDescripciónValor de ejemplo
syslog-addressLa 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-facilityEl 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-certLa 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-certLa 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-keyLa 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-verifySi 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
tagUna 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-formatEl 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
labelsAplica 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-regexAplica 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)
envAplica 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-regexAplica 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)