Pilote de logging Syslog
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
oukernel
. - 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.
NoteLes options de configuration
log-opts
dans le fichier de configurationdaemon.json
doivent être fournies sous forme de chaînes. Les valeurs numériques et booléennes (telles que la valeur poursyslog-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) |