10.10. Transférer les journaux en utilisant le protocole de transfert Fluentd
Vous pouvez utiliser le protocole Fluentd forward pour envoyer une copie de vos logs à un agrégateur de logs externe qui est configuré pour accepter le protocole à la place ou en plus du magasin de logs Elasticsearch par défaut. Vous êtes responsable de la configuration de l'agrégateur de logs externe pour recevoir les logs d'OpenShift Container Platform.
Pour configurer la transmission des journaux à l'aide du protocole forward, vous devez créer une ressource personnalisée (CR) ClusterLogForwarder
avec une ou plusieurs sorties vers les serveurs Fluentd, et des pipelines qui utilisent ces sorties. La sortie Fluentd peut utiliser une connexion TCP (non sécurisée) ou TLS (TCP sécurisée).
Vous pouvez également utiliser une carte de configuration pour transmettre les journaux à l'aide des protocoles forward. Cependant, cette méthode est obsolète dans OpenShift Container Platform et sera supprimée dans une prochaine version.
Conditions préalables
- Vous devez disposer d'un serveur de journalisation configuré pour recevoir les données de journalisation à l'aide du protocole ou du format spécifié.
Procédure
Créez ou modifiez un fichier YAML qui définit l'objet
ClusterLogForwarder
CR :apiVersion: logging.openshift.io/v1 kind: ClusterLogForwarder metadata: name: instance 1 namespace: openshift-logging 2 spec: outputs: - name: fluentd-server-secure 3 type: fluentdForward 4 url: 'tls://fluentdserver.security.example.com:24224' 5 secret: 6 name: fluentd-secret - name: fluentd-server-insecure type: fluentdForward url: 'tcp://fluentdserver.home.example.com:24224' pipelines: - name: forward-to-fluentd-secure 7 inputRefs: 8 - application - audit outputRefs: - fluentd-server-secure 9 - default 10 parse: json 11 labels: clusterId: "C1234" 12 - name: forward-to-fluentd-insecure 13 inputRefs: - infrastructure outputRefs: - fluentd-server-insecure labels: clusterId: "C1234"
- 1
- Le nom du CR
ClusterLogForwarder
doit êtreinstance
. - 2
- L'espace de noms pour le CR
ClusterLogForwarder
doit êtreopenshift-logging
. - 3
- Spécifiez un nom pour la sortie.
- 4
- Spécifiez le type de
fluentdForward
. - 5
- Spécifiez l'URL et le port de l'instance externe de Fluentd en tant qu'URL absolue valide. Vous pouvez utiliser le protocole
tcp
(non sécurisé) outls
(TCP sécurisé). Si le proxy à l'échelle du cluster utilisant l'annotation CIDR est activé, la sortie doit être un nom de serveur ou un FQDN, et non une adresse IP. - 6
- Si vous utilisez un préfixe
tls
, vous devez spécifier le nom du secret requis par le point final pour la communication TLS. Le secret doit exister dans le projetopenshift-logging
et doit avoir des clés de : tls.crt, tls.key, et ca-bundle.crt qui pointent vers les certificats respectifs qu'elles représentent. Sinon, pour les préfixes http et https, vous pouvez spécifier un secret contenant un nom d'utilisateur et un mot de passe. Pour plus d'informations, voir l'exemple suivant : "Exemple : Définition d'un secret contenant un nom d'utilisateur et un mot de passe.\N-" - 7
- Facultatif : Spécifiez un nom pour le pipeline.
- 8
- Spécifiez les types de journaux à transférer en utilisant le pipeline :
application,
infrastructure
ouaudit
. - 9
- Spécifiez le nom de la sortie à utiliser lors du transfert des journaux avec ce pipeline.
- 10
- Facultatif : Spécifiez la sortie
default
pour transmettre les journaux à l'instance Elasticsearch interne. - 11
- Facultatif : Indiquez si les entrées de log JSON structurées doivent être transmises en tant qu'objets JSON dans le champ
structured
. L'entrée de log doit contenir du JSON structuré valide ; sinon, OpenShift Logging supprime le champstructured
et envoie l'entrée de log à l'index par défaut,app-00000x
. - 12
- Facultatif : Chaîne. Une ou plusieurs étiquettes à ajouter aux journaux.
- 13
- Facultatif : Configurez plusieurs sorties pour transmettre les journaux à d'autres agrégateurs de journaux externes, quel que soit le type pris en charge :
- Un nom pour décrire le pipeline.
-
L'adresse
inputRefs
est le type de journal à transmettre en utilisant le pipeline :application,
infrastructure
, ouaudit
. -
outputRefs
est le nom de la sortie à utiliser. - Facultatif : Chaîne. Une ou plusieurs étiquettes à ajouter aux journaux.
Créer l'objet CR :
oc create -f <nom-de-fichier>.yaml
10.10.1. Permettre une précision de l'ordre de la nanoseconde pour Logstash afin d'ingérer les données de fluentd
Pour que Logstash puisse ingérer les données de fluentd, vous devez activer la précision de la nanoseconde dans le fichier de configuration de Logstash.
Procédure
-
Dans le fichier de configuration de Logstash, définissez
nanosecond_precision
commetrue
.
Exemple de fichier de configuration Logstash
input { tcp { codec => fluent { nanosecond_precision => true } port => 24114 } } filter { } output { stdout { codec => rubydebug } }