Pilote de logging Fluentd
Le pilote de logging fluentd
envoie les logs de conteneur au collecteur
Fluentd comme données de log structurées. Ensuite, les utilisateurs
peuvent utiliser n'importe lequel des divers plugins de sortie de
Fluentd pour écrire ces logs vers diverses
destinations.
En plus du message de log lui-même, le pilote de log fluentd
envoie les métadonnées suivantes dans le message de log structuré :
Champ | Description |
---|---|
container_id |
L'ID complet du conteneur de 64 caractères. |
container_name |
Le nom du conteneur au moment où il a été démarré. Si vous utilisez docker rename pour renommer un conteneur, le nouveau nom n'est pas reflété dans les entrées du journal. |
source |
stdout ou stderr |
log |
Le log du conteneur |
Utilisation
Certaines options sont supportées en spécifiant --log-opt
autant de fois que nécessaire :
fluentd-address
: spécifiez une adresse de socket pour se connecter au daemon Fluentd, exfluentdhost:24224
ouunix:///path/to/fluentd.sock
.tag
: spécifiez un tag pour les messages Fluentd. Supporte un certain balisage de modèle Go, ex{{.ID}}
,{{.FullID}}
ou{{.Name}}
docker.{{.ID}}
.
Pour utiliser le pilote fluentd
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 à fluentd
et définit l'option
fluentd-address
.
{
"log-driver": "fluentd",
"log-opts": {
"fluentd-address": "fluentdhost:24224"
}
}
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 booléennes et numériques (telles que la valeur pourfluentd-async
oufluentd-max-retries
) doivent donc être entourées de guillemets ("
).
Pour définir le pilote de logging pour un conteneur spécifique, passez l'option
--log-driver
à docker run
:
$ docker run --log-driver=fluentd ...
Avant d'utiliser ce pilote de logging, lancez un daemon Fluentd. Le pilote de logging
se connecte à ce daemon via localhost:24224
par défaut. Utilisez l'option
fluentd-address
pour se connecter à une adresse différente.
$ docker run --log-driver=fluentd --log-opt fluentd-address=fluentdhost:24224
Si le conteneur ne peut pas se connecter au daemon Fluentd, le conteneur s'arrête
immédiatement sauf si l'option fluentd-async
est utilisée.
Options
Les utilisateurs peuvent utiliser le drapeau --log-opt NAME=VALUE
pour spécifier des options supplémentaires du pilote de logging Fluentd.
fluentd-address
Par défaut, le pilote de logging se connecte à localhost:24224
. Fournissez l'option
fluentd-address
pour se connecter à une adresse différente. Les sockets tcp
(par défaut) et unix
sont supportés.
$ docker run --log-driver=fluentd --log-opt fluentd-address=fluentdhost:24224
$ docker run --log-driver=fluentd --log-opt fluentd-address=tcp://fluentdhost:24224
$ docker run --log-driver=fluentd --log-opt fluentd-address=unix:///path/to/fluentd.sock
Deux des éléments ci-dessus spécifient la même adresse, car tcp
est par défaut.
tag
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.
labels, labels-regex, env, et env-regex
Les options labels
et env
prennent chacune une liste séparée par des virgules de clés. S'il
y a collision entre les clés label
et env
, la valeur de env
prend la
précédence. Les deux options ajoutent des champs supplémentaires aux attributs extra d'un
message de logging.
Les options env-regex
et labels-regex
sont similaires et compatibles avec
respectivement env
et labels
. Leurs valeurs sont des expressions régulières pour correspondre
aux variables d'environnement et étiquettes liées au logging. C'est utilisé pour les
options avancées de tag de log.
fluentd-async
Docker se connecte à Fluentd en arrière-plan. Les messages sont mis en mémoire tampon jusqu'à ce que la
connexion soit établie. Par défaut false
.
fluentd-async-reconnect-interval
Quand fluentd-async
est activé, l'option fluentd-async-reconnect-interval
définit l'intervalle, en millisecondes, auquel la connexion à
fluentd-address
est rétablie. Cette option est utile si l'adresse
résout vers une ou plusieurs adresses IP, par exemple une adresse de service Consul.
fluentd-buffer-limit
Définit le nombre d'événements mis en mémoire tampon dans la mémoire. Les enregistrements seront stockés en mémoire jusqu'à ce nombre. Si la mémoire tampon est pleine, l'appel pour enregistrer les logs échouera. La valeur par défaut est 1048576. (https://github.com/fluent/fluent-logger-golang/tree/master#bufferlimit)
fluentd-retry-wait
Combien de temps attendre entre les tentatives. Par défaut 1 seconde.
fluentd-max-retries
Le nombre maximum de tentatives. Par défaut 4294967295
(2**32 - 1).
fluentd-sub-second-precision
Génère les logs d'événements en résolution nanoseconde. Par défaut false
.
Gestion du daemon Fluentd avec Docker
À propos de Fluentd
lui-même, voir la page web du projet
et ses documents.
Pour utiliser ce pilote de logging, démarrez le daemon fluentd
sur un hôte. Nous recommandons
que vous utilisiez l'image docker Fluentd. Cette image est
particulièrement utile si vous voulez agréger plusieurs logs de conteneur sur chaque
hôte puis, plus tard, transférer les logs vers un autre nœud Fluentd pour créer un
magasin d'agrégation.
Tester les loggers de conteneur
-
Écrivez un fichier de configuration (
test.conf
) pour dumper les logs d'entrée :<source> @type forward </source> <match *> @type stdout </match>
-
Lancez le conteneur Fluentd avec ce fichier de configuration :
$ docker run -it -p 24224:24224 -v /path/to/conf/test.conf:/fluentd/etc/test.conf -e FLUENTD_CONF=test.conf fluent/fluentd:latest
-
Démarrez un ou plusieurs conteneurs avec le pilote de logging
fluentd
:$ docker run --log-driver=fluentd your/application