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

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.

Note

Les options de configuration log-opts dans le fichier de configuration daemon.json doivent être fournies sous forme de chaînes. Les valeurs booléennes et numériques (telles que la valeur pour splunk-gzip ou splunk-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, modifiez daemon.json avec la clé, "log-opts": {"NAME": "VALUE", ...}.
  • Pour configurer le pilote splunk pour un conteneur individuel, utilisez docker 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.