Pilote de logging Splunk
Le pilote de logging splunk
envoie les logs de conteneur au
collecteur d'événements HTTP
dans Splunk Enterprise et Splunk Cloud.
Utilisation
Vous pouvez configurer le logging Docker pour utiliser le pilote splunk
par défaut ou sur une
base par conteneur.
Pour utiliser le pilote splunk
comme pilote de logging par défaut, définissez les clés
log-driver
et log-opts
aux valeurs appropriées dans le fichier de configuration daemon.json
et redémarrez Docker. Par exemple :
{
"log-driver": "splunk",
"log-opts": {
"splunk-token": "",
"splunk-url": "",
...
}
}
Le fichier daemon.json 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.
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 poursplunk-gzip
ousplunk-gzip-level
) doivent donc être entourées de guillemets ("
).
Pour utiliser le pilote splunk
pour un conteneur spécifique, utilisez les drapeaux en ligne de commande
--log-driver
et log-opt
avec docker run
:
$ docker run --log-driver=splunk --log-opt splunk-token=VALUE --log-opt splunk-url=VALUE ...
Options Splunk
Les propriétés suivantes vous permettent de configurer le pilote de logging Splunk.
- Pour configurer le pilote
splunk
à travers l'environnement Docker, modifiezdaemon.json
avec la clé,"log-opts": {"NAME": "VALUE", ...}
. - Pour configurer le pilote
splunk
pour un conteneur individuel, utilisezdocker run
avec le drapeau,--log-opt NAME=VALUE ...
.
Option | Requis | Description |
---|---|---|
splunk-token |
requis | Jeton Splunk HTTP Event Collector. |
splunk-url |
requis | Chemin vers votre Splunk Enterprise, instance Splunk Cloud en libre-service, ou cluster géré Splunk Cloud (incluant le port et le schéma utilisé par HTTP Event Collector) dans l'un des formats suivants : https://your_splunk_instance:8088 , https://input-prd-p-XXXXXXX.cloud.splunk.com:8088 , ou https://http-inputs-XXXXXXXX.splunkcloud.com . |
splunk-source |
optionnel | Source de l'événement. |
splunk-sourcetype |
optionnel | Type de source de l'événement. |
splunk-index |
optionnel | Index de l'événement. |
splunk-capath |
optionnel | Chemin vers le certificat racine. |
splunk-caname |
optionnel | Nom à utiliser pour valider le certificat du serveur ; par défaut le nom d'hôte de splunk-url est utilisé. |
splunk-insecureskipverify |
optionnel | Ignorer la validation du certificat du serveur. |
splunk-format |
optionnel | Format de message. Peut être inline , json ou raw . Par défaut inline . |
splunk-verify-connection |
optionnel | Vérifier au démarrage, que Docker peut se connecter au serveur Splunk. Par défaut true. |
splunk-gzip |
optionnel | Activer/désactiver la compression gzip pour envoyer des événements à l'instance Splunk Enterprise ou Splunk Cloud. Par défaut false. |
splunk-gzip-level |
optionnel | Définir le niveau de compression pour gzip. Les valeurs valides sont -1 (par défaut), 0 (pas de compression), 1 (meilleure vitesse) ... 9 (meilleure compression). Par défaut DefaultCompression. |
tag |
optionnel | Spécifier le tag pour le message, qui interprète un certain balisage. La valeur par défaut est {{.ID}} (12 caractères de l'ID du conteneur). Référez-vous à la documentation des options de tag de log pour personnaliser le format de tag de log. |
labels |
optionnel | Liste séparée par des virgules de clés d'étiquettes, qui devraient être incluses dans le message, si ces étiquettes sont spécifiées pour le conteneur. |
labels-regex |
optionnel | 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. |
env |
optionnel | Liste séparée par des virgules de clés de variables d'environnement, qui devraient être incluses dans le message, si ces variables sont spécifiées pour le conteneur. |
env-regex |
optionnel | 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. |
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 d'un
message de logging.
Ci-dessous est un exemple des options de logging spécifiées pour l'instance Splunk Enterprise. L'instance est installée localement sur la même machine sur laquelle le daemon Docker fonctionne.
Le chemin vers le certificat racine et le nom commun est spécifié en utilisant un
schéma HTTPS. Ceci est utilisé pour la vérification. Le SplunkServerDefaultCert
est
automatiquement généré par les certificats Splunk.
$ docker run \
--log-driver=splunk \
--log-opt splunk-token=176FCEBF-4CF5-4EDF-91BC-703796522D20 \
--log-opt splunk-url=https://splunkhost:8088 \
--log-opt splunk-capath=/path/to/cert/cacert.pem \
--log-opt splunk-caname=SplunkServerDefaultCert \
--log-opt tag="{{.Name}}/{{.FullID}}" \
--log-opt labels=location \
--log-opt env=TEST \
--env "TEST=false" \
--label location=west \
your/application
Le splunk-url
pour les instances Splunk hébergées sur Splunk Cloud est dans un format
comme https://http-inputs-XXXXXXXX.splunkcloud.com
et n'inclut pas de
spécificateur de port.
Formats de message
Il y a trois formats de message du pilote de logging : inline
(par défaut), json
,
et raw
.
Le format par défaut est inline
où chaque message de log est intégré comme une chaîne.
Par exemple :
{
"attrs": {
"env1": "val1",
"label1": "label1"
},
"tag": "MyImage/MyContainer",
"source": "stdout",
"line": "my message"
}
{
"attrs": {
"env1": "val1",
"label1": "label1"
},
"tag": "MyImage/MyContainer",
"source": "stdout",
"line": "{\"foo\": \"bar\"}"
}
Pour formater les messages comme objets json
, définissez --log-opt splunk-format=json
. Le
pilote tente d'analyser chaque ligne comme un objet JSON et l'envoie comme un objet
intégré. S'il ne peut pas analyser le message, il est envoyé inline
. Par exemple :
{
"attrs": {
"env1": "val1",
"label1": "label1"
},
"tag": "MyImage/MyContainer",
"source": "stdout",
"line": "my message"
}
{
"attrs": {
"env1": "val1",
"label1": "label1"
},
"tag": "MyImage/MyContainer",
"source": "stdout",
"line": {
"foo": "bar"
}
}
Pour formater les messages comme raw
, définissez --log-opt splunk-format=raw
. Les attributs
(variables d'environnement et étiquettes) et tags sont préfixés au message. Par
exemple :
MyImage/MyContainer env1=val1 label1=label1 my message
MyImage/MyContainer env1=val1 label1=label1 {"foo": "bar"}
Options avancées
Le pilote de logging Splunk vous permet de configurer quelques options avancées en définissant des variables d'environnement pour le daemon Docker.
Nom de variable d'environnement | Valeur par défaut | Description |
---|---|---|
SPLUNK_LOGGING_DRIVER_POST_MESSAGES_FREQUENCY |
5s |
Le temps d'attendre pour que plus de messages s'accumulent en lot. |
SPLUNK_LOGGING_DRIVER_POST_MESSAGES_BATCH_SIZE |
1000 |
Le nombre de messages qui devraient s'accumuler avant de les envoyer en un lot. |
SPLUNK_LOGGING_DRIVER_BUFFER_MAX |
10 * 1000 |
Le nombre maximum de messages conservés en mémoire tampon pour les tentatives. |
SPLUNK_LOGGING_DRIVER_CHANNEL_SIZE |
4 * 1000 |
Le nombre maximum de messages en attente qui peuvent être dans le canal utilisé pour envoyer des messages au worker logger d'arrière-plan, qui les met en lot. |