⚠️ Traduction non officielle - Cette documentation est une traduction communautaire non officielle de Docker.

Pilote de logging Syslog

Table des matières

Le pilote de logging syslog route les logs vers un serveur syslog. Le protocole syslog utilise une chaîne brute comme message de log et supporte un ensemble limité de métadonnées. Le message syslog doit être formaté d'une manière spécifique pour être valide. À partir d'un message valide, le récepteur peut extraire les informations suivantes :

  • Priorité : le niveau de logging, tel que debug, warning, error, info.
  • Horodatage : quand l'événement s'est produit.
  • Nom d'hôte : où l'événement s'est produit.
  • Facilité : quel sous-système a loggé le message, tel que mail ou kernel.
  • Nom de processus et ID de processus (PID) : Le nom et l'ID du processus qui a généré le log.

Le format est défini dans RFC 5424 et le pilote syslog de Docker implémente la référence ABNF de la manière suivante :

                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:}

Utilisation

Pour utiliser le pilote syslog comme pilote de logging par défaut, définissez les clés log-driver et log-opt aux valeurs appropriées dans le fichier daemon.json, qui se trouve dans /etc/docker/ sur les hôtes Linux ou C:\ProgramData\docker\config\daemon.json sur Windows Server. Pour plus d'informations sur la configuration de Docker en utilisant daemon.json, voir daemon.json.

L'exemple suivant définit le pilote de log à syslog et définit l'option syslog-address. Les options syslog-address supportent à la fois UDP et TCP ; cet exemple utilise UDP.

{
  "log-driver": "syslog",
  "log-opts": {
    "syslog-address": "udp://1.2.3.4:1111"
  }
}

Redémarrez Docker pour que les changements prennent effet.

Note

Les options de configuration log-opts dans le fichier de configuration daemon.json doivent être fournies sous forme de chaînes. Les valeurs numériques et booléennes (telles que la valeur pour syslog-tls-skip-verify) doivent donc être entourées de guillemets (").

Vous pouvez définir le pilote de logging pour un conteneur spécifique en utilisant le drapeau --log-driver avec docker container create ou docker run :

$ docker run \
      --log-driver syslog --log-opt syslog-address=udp://1.2.3.4:1111 \
      alpine echo hello world

Options

Les options de logging suivantes sont supportées comme options pour le pilote de logging syslog. Elles peuvent être définies comme valeurs par défaut dans le daemon.json, en les ajoutant comme paires clé-valeur au tableau JSON log-opts. Elles peuvent aussi être définies sur un conteneur donné en ajoutant un drapeau --log-opt <key>=<value> pour chaque option lors du démarrage du conteneur.

Option Description Valeur d'exemple
syslog-address L'adresse d'un serveur syslog externe. Le spécificateur URI peut être [tcp|udp|tcp+tls]://host:port, unix://path, ou unixgram://path. Si le transport est tcp, udp, ou tcp+tls, le port par défaut est 514. --log-opt syslog-address=tcp+tls://192.168.1.3:514, --log-opt syslog-address=unix:///tmp/syslog.sock
syslog-facility La facilité syslog à utiliser. Peut être le numéro ou le nom pour toute facilité syslog valide. Voir la documentation syslog. --log-opt syslog-facility=daemon
syslog-tls-ca-cert Le chemin absolu vers les certificats de confiance signés par le CA. Ignoré si le protocole d'adresse n'est pas tcp+tls. --log-opt syslog-tls-ca-cert=/etc/ca-certificates/custom/ca.pem
syslog-tls-cert Le chemin absolu vers le fichier de certificat TLS. Ignoré si le protocole d'adresse n'est pas tcp+tls. --log-opt syslog-tls-cert=/etc/ca-certificates/custom/cert.pem
syslog-tls-key Le chemin absolu vers le fichier de clé TLS. Ignoré si le protocole d'adresse n'est pas tcp+tls. --log-opt syslog-tls-key=/etc/ca-certificates/custom/key.pem
syslog-tls-skip-verify Si défini à true, la vérification TLS est ignorée lors de la connexion au daemon syslog. Par défaut false. Ignoré si le protocole d'adresse n'est pas tcp+tls. --log-opt syslog-tls-skip-verify=true
tag Une chaîne qui est ajoutée au APP-NAME dans le message syslog. Par défaut, Docker utilise les 12 premiers caractères de l'ID du conteneur pour marquer les messages de log. Référez-vous à la documentation des options de tag de log pour personnaliser le format de tag de log. --log-opt tag=mailer
syslog-format Le format de message syslog à utiliser. Si non spécifié, le format syslog Unix local est utilisé, sans nom d'hôte spécifié. Spécifiez rfc3164 pour le format compatible RFC-3164, rfc5424 pour le format compatible RFC-5424, ou rfc5424micro pour le format compatible RFC-5424 avec résolution d'horodatage en microsecondes. --log-opt syslog-format=rfc5424micro
labels S'applique lors du démarrage du daemon Docker. Une liste séparée par des virgules d'étiquettes liées au logging que ce daemon accepte. Utilisé pour les options avancées de tag de log. --log-opt labels=production_status,geo
labels-regex S'applique lors du démarrage du daemon Docker. Similaire et compatible avec labels. Une expression régulière pour correspondre aux étiquettes liées au logging. Utilisé pour les options avancées de tag de log. --log-opt labels-regex=^(production_status|geo)
env S'applique lors du démarrage du daemon Docker. Une liste séparée par des virgules de variables d'environnement liées au logging que ce daemon accepte. Utilisé pour les options avancées de tag de log. --log-opt env=os,customer
env-regex S'applique lors du démarrage du daemon Docker. Similaire et compatible avec env. Une expression régulière pour correspondre aux variables d'environnement liées au logging. Utilisé pour les options avancées de tag de log. --log-opt env-regex=^(os|customer)