10.17. Transférer les journaux d'application de pods spécifiques
En tant qu'administrateur de cluster, vous pouvez utiliser les étiquettes de pods Kubernetes pour collecter des données de journal à partir de pods spécifiques et les transmettre à un collecteur de journaux.
Supposons que vous ayez une application composée de pods fonctionnant avec d'autres pods dans différents espaces de noms. Si ces pods ont des étiquettes qui identifient l'application, vous pouvez collecter et envoyer leurs données de journalisation vers un collecteur de journaux spécifique.
Pour spécifier les étiquettes de pods, vous utilisez une ou plusieurs paires clé-valeur matchLabels
. Si vous spécifiez plusieurs paires clé-valeur, les pods doivent tous correspondre à ces paires pour être sélectionnés.
Procédure
Créez ou modifiez un fichier YAML qui définit l'objet
ClusterLogForwarder
CR. Dans le fichier, spécifiez les étiquettes de pods à l'aide de sélecteurs simples basés sur l'égalité sousinputs[].name.application.selector.matchLabels
, comme le montre l'exemple suivant.Exemple
ClusterLogForwarder
Fichier YAML de CRapiVersion: logging.openshift.io/v1 kind: ClusterLogForwarder metadata: name: instance 1 namespace: openshift-logging 2 spec: pipelines: - inputRefs: [ myAppLogData ] 3 outputRefs: [ default ] 4 parse: json 5 inputs: 6 - name: myAppLogData application: selector: matchLabels: 7 environment: production app: nginx namespaces: 8 - app1 - app2 outputs: 9 - default ...
- 1
- Le nom du CR
ClusterLogForwarder
doit êtreinstance
. - 2
- L'espace de noms pour le CR
ClusterLogForwarder
doit êtreopenshift-logging
. - 3
- Spécifiez une ou plusieurs valeurs séparées par des virgules à partir de
inputs[].name
. - 4
- Spécifiez une ou plusieurs valeurs séparées par des virgules à partir de
outputs[]
. - 5
- 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
. - 6
- Définir un site
inputs[].name
unique pour chaque application qui possède un ensemble unique d'étiquettes de pods. - 7
- Indiquez les paires clé-valeur des étiquettes de pods dont vous souhaitez collecter les données de journalisation. Vous devez spécifier à la fois une clé et une valeur, et pas seulement une clé. Pour être sélectionnés, les modules doivent correspondre à toutes les paires clé-valeur.
- 8
- Facultatif : Indiquez un ou plusieurs espaces de noms.
- 9
- Spécifiez une ou plusieurs sorties pour transmettre vos données de journalisation. La sortie optionnelle
default
montrée ici envoie les données de log à l'instance Elasticsearch interne.
-
Facultatif : Pour limiter la collecte de données de journalisation à des espaces de noms spécifiques, utilisez
inputs[].name.application.namespaces
, comme indiqué dans l'exemple précédent. Facultatif : vous pouvez envoyer des données de journal provenant d'applications supplémentaires ayant des étiquettes de pods différentes vers le même pipeline.
-
Pour chaque combinaison unique d'étiquettes de gousses, créez une section supplémentaire
inputs[].name
semblable à celle illustrée. -
Mettre à jour le site
selectors
pour qu'il corresponde aux étiquettes de la capsule de cette demande. Ajoutez la nouvelle valeur
inputs[].name
àinputRefs
. Par exemple :- inputRefs: [ myAppLogData, myOtherAppLogData ]
-
Pour chaque combinaison unique d'étiquettes de gousses, créez une section supplémentaire
Créer l'objet CR :
oc create -f <nom-de-fichier>.yaml
Ressources complémentaires
-
Pour plus d'informations sur
matchLabels
dans Kubernetes, voir Ressources qui prennent en charge les exigences basées sur des ensembles.
Ressources complémentaires