9.4. Configuration du transfert de journaux
Dans un déploiement de journalisation, les journaux de conteneurs et d’infrastructures sont transférés au log store interne défini dans la ressource personnalisée ClusterLogging (CR) par défaut.
Les journaux d’audit ne sont pas transmis au log store interne par défaut, car cela ne fournit pas de stockage sécurisé. Il vous incombe de vous assurer que le système vers lequel vous transmettez les journaux d’audit est conforme à vos réglementations organisationnelles et gouvernementales et qu’il est correctement sécurisé.
Lorsque cette configuration par défaut répond à vos besoins, vous n’avez pas besoin de configurer un ClusterLogForwarder CR. En cas d’existence d’un ClusterLogForwarder CR, les journaux ne sont pas transmis au log store interne à moins qu’un pipeline ne soit défini qui contient la sortie par défaut.
9.4.1. À propos de l’envoi de journaux vers des systèmes tiers Copier lienLien copié sur presse-papiers!
Afin d’envoyer des journaux à des points de terminaison spécifiques à l’intérieur et à l’extérieur de votre service OpenShift Red Hat sur le cluster AWS, vous spécifiez une combinaison de sorties et de pipelines dans une ressource personnalisée ClusterLogForwarder (CR). Il est également possible d’utiliser des entrées pour transmettre les journaux d’applications associés à un projet spécifique vers un point de terminaison. L’authentification est fournie par un objet Kubernetes Secret.
- gazoduc
Définit le routage simple d’un type de journal vers une ou plusieurs sorties, ou les journaux que vous souhaitez envoyer. Les types de journaux sont l’un des suivants:
- demande. Journaux de conteneurs générés par les applications utilisateur s’exécutant dans le cluster, à l’exception des applications de conteneurs d’infrastructure.
- C) Infrastructures. Journaux de conteneurs à partir des pods qui s’exécutent dans les projets openshift*, kube* ou par défaut et journaux de journal provenant du système de fichiers de nœuds.
- audit. Journaux d’audit générés par le système d’audit des nœuds, audité, serveur API Kubernetes, serveur API OpenShift et réseau OVN.
Il est possible d’ajouter des étiquettes aux messages de log sortants en utilisant des paires key:value dans le pipeline. À titre d’exemple, vous pouvez ajouter une étiquette aux messages qui sont transférés à d’autres centres de données ou étiqueter les journaux par type. Les étiquettes qui sont ajoutées aux objets sont également transmises avec le message journal.
- entrée
Transmet les journaux d’application associés à un projet spécifique à un pipeline.
Dans le pipeline, vous définissez les types de journaux à transmettre à l’aide d’un paramètre inputRef et où transférer les journaux à l’aide d’un paramètre outputRef.
- Le secret
- Carte key:value qui contient des données confidentielles telles que les identifiants d’utilisateur.
À noter ce qui suit:
- Lorsque vous ne définissez pas de pipeline pour un type de journal, les journaux des types non définis sont supprimés. À titre d’exemple, si vous spécifiez un pipeline pour les types d’application et d’audit, mais que vous ne spécifiez pas un pipeline pour le type d’infrastructure, les journaux d’infrastructure sont supprimés.
- Il est possible d’utiliser plusieurs types de sorties dans la ressource personnalisée ClusterLogForwarder (CR) pour envoyer des journaux à des serveurs prenant en charge différents protocoles.
L’exemple suivant transmet les journaux d’audit à une instance externe sécurisée Elasticsearch, les journaux d’infrastructure à une instance externe Elasticsearch non sécurisée, les journaux des applications à un courtier Kafka et les journaux d’applications du projet my-apps-logs à l’instance interne Elasticsearch.
Exemple de sortie de journal et de pipelines
- 1
- Dans les implémentations antérieures, le nom CR doit être instance. Dans les implémentations de transbordeur de journaux multiples, vous pouvez utiliser n’importe quel nom.
- 2
- Dans les implémentations héritées, l’espace de noms CR doit être ouvert-logging. Dans les implémentations de transfert de journaux multiples, vous pouvez utiliser n’importe quel espace de noms.
- 3
- Le nom de votre compte de service. Le compte de service n’est requis que dans les implémentations de transbordeur de journaux multiples si l’expéditeur de journaux n’est pas déployé dans l’espace de noms openshift-logging.
- 4
- Configuration pour une sortie Elasticsearch sécurisée à l’aide d’un secret avec une URL sécurisée.
- Il s’agit d’un nom pour décrire la sortie.
- Le type de sortie: la recherche élastique.
- L’URL sécurisée et le port de l’instance Elasticsearch en tant qu’URL absolue valide, y compris le préfixe.
- Le secret requis par le point de terminaison pour la communication TLS. Le secret doit exister dans le projet openshift-logging.
- 5
- Configuration pour une sortie Elasticsearch non sécurisée:
- Il s’agit d’un nom pour décrire la sortie.
- Le type de sortie: la recherche élastique.
- L’URL et le port non sécurisés de l’instance Elasticsearch en tant qu’URL absolue valide, y compris le préfixe.
- 6
- Configuration d’une sortie Kafka à l’aide d’une communication TLS authentifiée par le client via une URL sécurisée:
- Il s’agit d’un nom pour décrire la sortie.
- Le type de sortie: kafka.
- Indiquez l’URL et le port du courtier Kafka comme URL absolue valide, y compris le préfixe.
- 7
- Configuration pour une entrée pour filtrer les journaux des applications à partir de l’espace de noms de mon projet.
- 8
- Configuration d’un pipeline pour envoyer des journaux d’audit à l’instance externe sécurisée Elasticsearch:
- C’est un nom pour décrire le pipeline.
- L’entréeRefs est le type de journal, dans cet exemple d’audit.
- La sortieRefs est le nom de la sortie à utiliser, dans cet exemple élastique-sécurisé pour transmettre à l’instance sécurisée Elasticsearch et par défaut pour transmettre à l’instance interne Elasticsearch.
- Facultatif: Étiquettes à ajouter aux journaux.
- 9
- Facultatif: String. Il y a une ou plusieurs étiquettes à ajouter aux journaux. Citez des valeurs comme "vrai" afin qu’elles soient reconnues comme des valeurs de chaîne, et non comme un booléen.
- 10
- Configuration d’un pipeline pour envoyer des journaux d’infrastructure à l’instance externe Elasticsearch non sécurisée.
- 11
- Configuration d’un pipeline pour envoyer des journaux du projet de mon projet à l’instance interne Elasticsearch.
- C’est un nom pour décrire le pipeline.
- L’entréeRefs est une entrée spécifique: my-app-logs.
- La sortieRefs est par défaut.
- Facultatif: String. Il y a une ou plusieurs étiquettes à ajouter aux journaux.
- 12
- Configuration d’un pipeline pour envoyer des journaux au courtier Kafka, sans nom de pipeline:
- L’entréeRefs est le type de journal, dans cet exemple d’application.
- La sortieRefs est le nom de la sortie à utiliser.
- Facultatif: String. Il y a une ou plusieurs étiquettes à ajouter aux journaux.
Gestion du journal Fluentd lorsque l’agrégateur de journal externe n’est pas disponible
Lorsque votre agrégateur de journalisation externe devient indisponible et ne peut pas recevoir de journaux, Fluentd continue de collecter des journaux et de les stocker dans un tampon. Lorsque l’agrégateur de journal devient disponible, le transfert de journaux reprend, y compris les journaux tamponnés. Lorsque le tampon se remplit complètement, Fluentd cesse de collecter les journaux. Le service Red Hat OpenShift sur AWS tourne les journaux et les supprime. Il n’est pas possible d’ajuster la taille du tampon ou d’ajouter une revendication de volume persistant (PVC) à l’ensemble ou aux pods Fluentd daemon.
Clés d’autorisation prises en charge
Les types de clés communs sont fournis ici. Certains types de sortie prennent en charge d’autres clés spécialisées, documentées avec le champ de configuration spécifique à la sortie. Les clés secrètes sont facultatives. Activez les fonctions de sécurité que vous souhaitez en définissant les clés pertinentes. Il vous incombe de créer et de maintenir toute configuration supplémentaire que des destinations externes pourraient nécessiter, telles que des clés et des secrets, des comptes de service, des ouvertures de ports ou une configuration proxy globale. L’enregistrement de décalage ouvert ne tentera pas de vérifier une inadéquation entre les combinaisons d’autorisation.
- La sécurité des couches de transport (TLS)
L’utilisation d’une URL TLS (http://... ou ssl://...) sans secret permet une authentification basique côté serveur TLS. Des fonctionnalités TLS supplémentaires sont activées en incluant un secret et en définissant les champs optionnels suivants:
- phrase de passe: (string) Passphrase pour décoder une clé privée TLS codée. J’ai besoin de tls.key.
- ca-bundle.crt: (string) Nom du fichier d’une CA client pour l’authentification du serveur.
- Nom d’utilisateur et mot de passe
- nom d’utilisateur: (string) Nom d’utilisateur d’authentification. Demande un mot de passe.
- mot de passe: (string) Mot de passe d’authentification. Nécessite un nom d’utilisateur.
- Couche de sécurité d’authentification simple (SASL)
- activez ou désactivez explicitement SASL.enable (boolean). En cas de manque, SASL est automatiquement activé lorsque l’une des autres touches sasl.
- liste des noms de mécanisme SASL.Mécanismes: (array) Liste des noms de mécanisme SASL autorisés. En cas de manque ou de vide, le système par défaut est utilisé.
- (boolean) Autoriser les mécanismes qui envoient des mots de passe en texte clair. Défaut à false.
9.4.1.1. Créer un secret Copier lienLien copié sur presse-papiers!
Il est possible de créer un secret dans le répertoire qui contient votre certificat et vos fichiers clés à l’aide de la commande suivante:
oc create secret generic -n <namespace> <secret_name> \ --from-file=ca-bundle.crt=<your_bundle_file> \ --from-literal=username=<your_username> \ --from-literal=password=<your_password>
$ oc create secret generic -n <namespace> <secret_name> \
--from-file=ca-bundle.crt=<your_bundle_file> \
--from-literal=username=<your_username> \
--from-literal=password=<your_password>
Les secrets génériques ou opaques sont recommandés pour les meilleurs résultats.
9.4.2. Création d’un transmetteur de journaux Copier lienLien copié sur presse-papiers!
Afin de créer un transmetteur de journaux, vous devez créer un ClusterLogForwarder CR qui spécifie les types d’entrée de journal que le compte de service peut collecter. Il est également possible de spécifier les sorties vers lesquelles les journaux peuvent être transférés. Lorsque vous utilisez la fonction d’expéditeur multi log, vous devez également consulter le compte de service dans le ClusterLogForwarder CR.
Dans n’importe quel nom, vous pouvez créer des ressources personnalisées ClusterLogForwarder (CRs) dans n’importe quel espace de noms. Lorsque vous utilisez une implémentation héritée, le ClusterLogForwarder CR doit être nommé instance, et doit être créé dans l’espace de noms openshift-logging.
Il vous faut des autorisations d’administrateur pour l’espace de noms où vous créez le ClusterLogForwarder CR.
Exemple de ressource ClusterLogForwarder
- 1
- Dans les implémentations antérieures, le nom CR doit être instance. Dans les implémentations de transbordeur de journaux multiples, vous pouvez utiliser n’importe quel nom.
- 2
- Dans les implémentations héritées, l’espace de noms CR doit être ouvert-logging. Dans les implémentations de transfert de journaux multiples, vous pouvez utiliser n’importe quel espace de noms.
- 3
- Le nom de votre compte de service. Le compte de service n’est requis que dans les implémentations de transbordeur de journaux multiples si l’expéditeur de journaux n’est pas déployé dans l’espace de noms openshift-logging.
- 4
- Les types de journaux qui sont collectés. La valeur de ce champ peut être l’audit pour les journaux d’audit, les applications pour les journaux d’applications, l’infrastructure pour les journaux d’infrastructure ou une entrée nommée qui a été définie pour votre application.
- 5 7
- Le type de sortie vers lequel vous souhaitez transférer les journaux. La valeur de ce champ peut être par défaut, loki, kafka, élastique, fluentdForward, syslog ou cloudwatch.Note
Le type de sortie par défaut n’est pas pris en charge dans les implémentations mutli log forwarder.
- 6
- Le nom de la sortie vers laquelle vous souhaitez transférer les journaux.
- 8
- L’URL de la sortie vers laquelle vous souhaitez transférer les journaux.
9.4.3. Charge utile du journal de réglage et livraison Copier lienLien copié sur presse-papiers!
Dans l’enregistrement des versions 5.9 et plus récentes, la spécification de réglage de la ressource personnalisée ClusterLogForwarder (CR) fournit un moyen de configurer votre déploiement pour prioriser le débit ou la durabilité des journaux.
Ainsi, si vous devez réduire la possibilité de perte de journal lorsque le collecteur redémarre, ou si vous avez besoin de messages de journal recueillis pour survivre à un redémarrage du collecteur pour soutenir les mandats réglementaires, vous pouvez régler votre déploiement pour prioriser la durabilité des journaux. Lorsque vous utilisez des sorties qui ont des limites strictes sur la taille des lots qu’ils peuvent recevoir, vous voudrez peut-être régler votre déploiement pour prioriser le débit des journaux.
Afin d’utiliser cette fonctionnalité, votre déploiement de journalisation doit être configuré pour utiliser le collecteur vectoriel. La spécification de réglage dans le ClusterLogForwarder CR n’est pas prise en charge lors de l’utilisation du collecteur Fluentd.
L’exemple suivant montre les options ClusterLogForwarder CR que vous pouvez modifier pour régler les sorties de l’expéditeur journal:
Exemple ClusterLogForwarder CR options de réglage
- 1
- Indiquez le mode de livraison pour le transfert de journaux.
- La livraison AtLeastOnce signifie que si l’expéditeur de journaux se bloque ou est redémarré, tous les journaux qui ont été lus avant le crash mais qui n’ont pas été envoyés à leur destination sont réenvoyés. Il est possible que certains journaux soient dupliqués après un crash.
- La livraison AtMostOnce signifie que l’expéditeur de journaux ne fait aucun effort pour récupérer les journaux perdus lors d’un accident. Ce mode donne un meilleur débit, mais peut entraîner une plus grande perte de log.
- 2
- En spécifiant une configuration de compression, les données sont compressées avant qu’elles ne soient envoyées sur le réseau. Il est à noter que tous les types de sortie ne supportent pas la compression, et si le type de compression spécifié n’est pas pris en charge par la sortie, cela entraîne une erreur. Les valeurs possibles pour cette configuration ne sont pas pour aucune compression, gzip, snappy, zlib ou zstd. la compression lz4 est également disponible si vous utilisez une sortie Kafka. Consultez le tableau « Types de compression soutenus pour les sorties de réglage » pour plus d’informations.
- 3
- Indique une limite pour la charge utile maximale d’une seule opération d’envoi à la sortie.
- 4
- Indique une durée minimale d’attente entre les tentatives avant de réessayer la livraison après un échec. Cette valeur est une chaîne de caractères, et peut être spécifiée comme millisecondes (ms), secondes (s) ou minutes (m).
- 5
- Indique une durée maximale d’attente entre les tentatives avant de réessayer la livraison après un échec. Cette valeur est une chaîne de caractères, et peut être spécifiée comme millisecondes (ms), secondes (s) ou minutes (m).
Algorithme de compression | À propos de Splunk | Amazon Cloudwatch | Elasticsearch 8 | LokiStack | Apache Kafka | HTTP | Le syslog | Google Cloud | La surveillance Microsoft Azure |
---|---|---|---|---|---|---|---|---|---|
| A) X | A) X | A) X | A) X | A) X | ||||
| A) X | A) X | A) X | A) X | |||||
| A) X | A) X | A) X | ||||||
| A) X | A) X | A) X | ||||||
| A) X |
9.4.4. Activer la détection d’exceptions multilignes Copier lienLien copié sur presse-papiers!
Active la détection d’erreurs multilignes des journaux de conteneurs.
L’activation de cette fonctionnalité pourrait avoir des répercussions sur les performances et peut nécessiter des ressources informatiques supplémentaires ou des solutions de journalisation alternatives.
Les analyseurs de journaux identifient souvent de manière incorrecte des lignes distinctes de la même exception que des exceptions distinctes. Cela conduit à des entrées de journal supplémentaires et une vue incomplète ou inexacte des informations tracées.
Exemple d’exception Java
java.lang.NullPointerException: Cannot invoke "String.toString()" because "<param1>" is null at testjava.Main.handle(Main.java:47) at testjava.Main.printMe(Main.java:19) at testjava.Main.main(Main.java:10)
java.lang.NullPointerException: Cannot invoke "String.toString()" because "<param1>" is null
at testjava.Main.handle(Main.java:47)
at testjava.Main.printMe(Main.java:19)
at testjava.Main.main(Main.java:10)
- Afin de permettre à l’enregistrement de détecter des exceptions multilignes et de les réassembler en une seule entrée de journal, assurez-vous que la ressource personnalisée ClusterLogForwarder (CR) contient un champ DétecterMultilineErrors, avec une valeur de true.
Exemple ClusterLogForwarder CR
9.4.4.1. Détails Copier lienLien copié sur presse-papiers!
Lorsque les messages de log apparaissent comme une séquence consécutive formant une trace de pile d’exception, ils sont combinés en un seul enregistrement de journal unifié. Le contenu du premier message journal est remplacé par le contenu concaténé de tous les champs de message de la séquence.
Langue | Fluentd | Le vecteur |
---|---|---|
Java | ✓ | ✓ |
JS | ✓ | ✓ |
♪ Ruby ♪ | ✓ | ✓ |
À propos de Python | ✓ | ✓ |
Golang | ✓ | ✓ |
À PROPOS DE PHP | ✓ | ✓ |
Dart | ✓ | ✓ |
9.4.4.2. Résolution de problèmes Copier lienLien copié sur presse-papiers!
Lorsqu’elle est activée, la configuration du collecteur inclura une nouvelle section avec type:
Exemple de section de configuration vectorielle
Exemple de section de configuration fluide
9.4.5. Les journaux de transfert vers Splunk Copier lienLien copié sur presse-papiers!
Il est possible d’envoyer les journaux vers le collecteur d’événements Splunk HTTP (HEC) en plus ou au lieu du service interne Red Hat OpenShift sur AWS log store.
Cette fonctionnalité avec Fluentd n’est pas prise en charge.
Conditions préalables
- L’opérateur de journalisation de Red Hat OpenShift 5.6 ou supérieur
- Instance ClusterLogging avec vecteur spécifié comme collecteur
- Base64 encodée jeton HEC Splunk
Procédure
Créez un secret à l’aide de votre jeton Splunk HEC codé Base64.
oc -n openshift-logging create secret generic vector-splunk-secret --from-literal hecToken=<HEC_Token>
$ oc -n openshift-logging create secret generic vector-splunk-secret --from-literal hecToken=<HEC_Token>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Créez ou modifiez la ressource personnalisée ClusterLogForwarder (CR) en utilisant le modèle ci-dessous:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Dans les implémentations antérieures, le nom CR doit être instance. Dans les implémentations de transbordeur de journaux multiples, vous pouvez utiliser n’importe quel nom.
- 2
- Dans les implémentations héritées, l’espace de noms CR doit être ouvert-logging. Dans les implémentations de transfert de journaux multiples, vous pouvez utiliser n’importe quel espace de noms.
- 3
- Le nom de votre compte de service. Le compte de service n’est requis que dans les implémentations de transbordeur de journaux multiples si l’expéditeur de journaux n’est pas déployé dans l’espace de noms openshift-logging.
- 4
- Indiquez un nom pour la sortie.
- 5
- Indiquez le nom du secret qui contient votre jeton HEC.
- 6
- Indiquez le type de sortie comme splunk.
- 7
- Indiquez l’URL (y compris le port) de votre Splunk HEC.
- 8
- Indiquez les types de journaux à transmettre en utilisant le pipeline : application, infrastructure ou vérification.
- 9
- Facultatif : Spécifiez un nom pour le pipeline.
- 10
- Indiquez le nom de la sortie à utiliser lors de la transmission des journaux avec ce pipeline.
9.4.6. Envoi des journaux sur HTTP Copier lienLien copié sur presse-papiers!
Les journaux de transfert sur HTTP sont pris en charge pour les collecteurs de journaux Fluentd et Vector. Afin d’activer, spécifiez http comme type de sortie dans la ressource personnalisée ClusterLogForwarder (CR).
Procédure
Créez ou modifiez le ClusterLogForwarder CR en utilisant le modèle ci-dessous:
Exemple ClusterLogForwarder CR
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Dans les implémentations antérieures, le nom CR doit être instance. Dans les implémentations de transbordeur de journaux multiples, vous pouvez utiliser n’importe quel nom.
- 2
- Dans les implémentations héritées, l’espace de noms CR doit être ouvert-logging. Dans les implémentations de transfert de journaux multiples, vous pouvez utiliser n’importe quel espace de noms.
- 3
- Le nom de votre compte de service. Le compte de service n’est requis que dans les implémentations de transbordeur de journaux multiples si l’expéditeur de journaux n’est pas déployé dans l’espace de noms openshift-logging.
- 4
- Adresse de destination pour les journaux.
- 5
- En-têtes supplémentaires à envoyer avec l’enregistrement du journal.
- 6
- Le nom secret des informations d’identification de destination.
- 7
- Les valeurs sont vraies ou fausses.
- 8
- Cette valeur devrait être la même que le nom de sortie.
9.4.7. Envoi vers Azure Monitor Logs Copier lienLien copié sur presse-papiers!
Avec l’enregistrement 5.9 et ultérieur, vous pouvez transférer les journaux vers Azure Monitor Logs en plus ou à la place du log store par défaut. Cette fonctionnalité est fournie par l’évier Vector Azure Monitor Logs.
Conditions préalables
- Il est familier avec la façon d’administrer et de créer une instance ClusterLogging de ressource personnalisée (CR).
- Il est familier avec la façon d’administrer et de créer une instance ClusterLogForwarder CR.
- Les spécifications ClusterLogForwarder CR sont bien comprises.
- Familiarité de base avec les services Azure.
- Il y a un compte Azure configuré pour l’accès Azure Portal ou Azure CLI.
- Le fichier Azure Monitor Logs vous permet d’obtenir la clé de sécurité primaire ou secondaire.
- C’est vous qui avez déterminé les types de journaux à transmettre.
Activer le transfert de journaux vers Azure Monitor Logs via l’API HTTP Data Collector:
Créez un secret avec votre clé partagée:
- 1
- Doit contenir une clé primaire ou secondaire pour l’espace de travail Log Analytics faisant la demande.
Afin d’obtenir une clé partagée, vous pouvez utiliser cette commande dans Azure CLI:
Get-AzOperationalInsightsWorkspaceSharedKey -ResourceGroupName "<resource_name>" -Name "<workspace_name>”
Get-AzOperationalInsightsWorkspaceSharedKey -ResourceGroupName "<resource_name>" -Name "<workspace_name>”
Créez ou modifiez votre ClusterLogForwarder CR en utilisant le modèle correspondant à votre sélection de journal.
Envoyer tous les journaux
Journaux d’applications et d’infrastructures
- 1
- Azure enregistre le type de données soumises. Il ne peut contenir que des lettres, des chiffres et des accents (_), et ne peut pas dépasser 100 caractères.
Des options de configuration avancées
9.4.8. Envoi de journaux d’applications à partir de projets spécifiques Copier lienLien copié sur presse-papiers!
Il est possible d’envoyer une copie des journaux de l’application de projets spécifiques à un agrégateur de journaux externe, en plus ou au lieu d’utiliser le log store interne. Il faut également configurer l’agrégateur de journal externe pour recevoir les données de journal de Red Hat OpenShift Service sur AWS.
Afin de configurer les journaux d’applications d’un projet, vous devez créer une ressource personnalisée ClusterLogForwarder (CR) avec au moins une entrée d’un projet, des sorties optionnelles pour d’autres agrégateurs de journaux et des pipelines qui utilisent ces entrées et sorties.
Conditions préalables
- Il faut avoir un serveur de journalisation configuré pour recevoir les données de journalisation à l’aide du protocole ou du format spécifié.
Procédure
Créer ou modifier un fichier YAML qui définit le ClusterLogForwarder CR:
Exemple ClusterLogForwarder CR
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Le nom du ClusterLogForwarder CR doit être instance.
- 2
- L’espace de noms du ClusterLogForwarder CR doit être ouvert-logging.
- 3
- Le nom de la sortie.
- 4
- Le type de sortie: recherche élastique, fluentdForward, syslog, ou kafka.
- 5
- L’URL et le port de l’agrégateur de journal externe en tant qu’URL absolue valide. Lorsque 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
- En utilisant un préfixe tls, vous devez spécifier le nom du secret requis par le point de terminaison pour la communication TLS. Le secret doit exister dans le projet openshift-logging et avoir des touches tls.crt, tls.key et ca-bundle.crt qui pointent vers les certificats qu’ils représentent.
- 7
- La configuration d’une entrée pour filtrer les journaux des applications à partir des projets spécifiés.
- 8
- En l’absence d’espace de noms, les journaux sont recueillis dans tous les espaces de noms.
- 9
- La configuration du pipeline dirige les journaux d’une entrée nommée vers une sortie nommée. Dans cet exemple, un pipeline nommé forward-to-fluentd-insécurité enregistre des logs d’une entrée nommée my-app-logs à un produit nommé couramment serveur non sécurisé.
- 10
- Liste des entrées.
- 11
- Le nom de la sortie à utiliser.
- 12
- Facultatif: String. Il y a une ou plusieurs étiquettes à ajouter aux journaux.
- 13
- Configuration pour qu’un pipeline envoie des journaux à d’autres agrégateurs de journaux.
- Facultatif : Spécifiez un nom pour le pipeline.
- Indiquez les types de journaux à transmettre en utilisant le pipeline : application, infrastructure ou vérification.
- Indiquez le nom de la sortie à utiliser lors de la transmission des journaux avec ce pipeline.
- Facultatif : Spécifiez la sortie par défaut pour transférer les journaux vers le log store par défaut.
- Facultatif: String. Il y a une ou plusieurs étiquettes à ajouter aux journaux.
- 14
- Les journaux d’applications de tous les espaces de noms sont recueillis lors de l’utilisation de cette configuration.
Appliquez le ClusterLogForwarder CR en exécutant la commande suivante:
oc apply -f <filename>.yaml
$ oc apply -f <filename>.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
9.4.9. Envoi de journaux d’applications à partir de pods spécifiques Copier lienLien copié sur presse-papiers!
En tant qu’administrateur de cluster, vous pouvez utiliser les étiquettes de pod Kubernetes pour recueillir des données de log à partir de pods spécifiques et les transmettre à un collecteur de journaux.
Imaginez que vous avez une application composée de pods fonctionnant aux côtés d’autres pods dans divers espaces de noms. Lorsque ces pods ont des étiquettes qui identifient l’application, vous pouvez collecter et afficher leurs données de journal à un collecteur de journaux spécifique.
Afin de spécifier les étiquettes de pod, vous utilisez une ou plusieurs paires de clés-valeur matchLabels. Lorsque vous spécifiez plusieurs paires de clés-valeur, les gousses doivent correspondre à toutes les paires pour être sélectionnées.
Procédure
Créez ou modifiez un fichier YAML qui définit l’objet ClusterLogForwarder CR. Dans le fichier, spécifiez les étiquettes de pod en utilisant des sélecteurs simples basés sur l’égalité sous input[].name.application.selector.matchLabels, comme indiqué dans l’exemple suivant.
Exemple de fichier ClusterLogForwarder CR YAML
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Dans les implémentations antérieures, le nom CR doit être instance. Dans les implémentations de transbordeur de journaux multiples, vous pouvez utiliser n’importe quel nom.
- 2
- Dans les implémentations héritées, l’espace de noms CR doit être ouvert-logging. Dans les implémentations de transfert de journaux multiples, vous pouvez utiliser n’importe quel espace de noms.
- 3
- Indiquez une ou plusieurs valeurs séparées par des virgules à partir des entrées[].name.
- 4
- Indiquez une ou plusieurs valeurs séparées par les virgules des sorties[].
- 5
- Définissez une entrée unique[].nom pour chaque application qui a un ensemble unique d’étiquettes de pod.
- 6
- Indiquez les paires clés-valeur d’étiquettes de pod dont vous souhaitez recueillir les données de journal. Il faut spécifier à la fois une clé et une valeur, pas seulement une clé. Afin d’être sélectionnés, les gousses doivent correspondre à toutes les paires clé-valeur.
- 7
- Facultatif : Spécifiez un ou plusieurs espaces de noms.
- 8
- Indiquez une ou plusieurs sorties pour transmettre vos données de journal.
- Facultatif: Pour limiter la collecte de données de journal à des espaces de noms spécifiques, utilisez les entrées[].name.application.namespaces, comme indiqué dans l’exemple précédent.
Facultatif: Vous pouvez envoyer des données de log à partir d’applications supplémentaires qui ont des étiquettes de pod différentes vers le même pipeline.
- Dans chaque combinaison unique d’étiquettes de pod, créez une section d’entrées supplémentaires similaire à celle affichée.
- Actualisez les sélecteurs pour correspondre aux étiquettes de pod de cette application.
Ajoutez la nouvelle valeur d’entrée[].name à inputRefs. À titre d’exemple:
- inputRefs: [ myAppLogData, myOtherAppLogData ]
- inputRefs: [ myAppLogData, myOtherAppLogData ]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Créer l’objet CR:
oc create -f <file-name>.yaml
$ oc create -f <file-name>.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
9.4.10. Aperçu du filtre d’audit API Copier lienLien copié sur presse-papiers!
Les serveurs API OpenShift génèrent des événements d’audit pour chaque appel API, en détaillant la demande, la réponse et l’identité du demandeur, ce qui conduit à de grands volumes de données. Le filtre API Audit utilise des règles pour permettre l’exclusion des événements non essentiels et la réduction de la taille des événements, facilitant ainsi une piste d’audit plus gérable. Les règles sont vérifiées dans l’ordre, vérifier les arrêts au premier match. La quantité de données incluses dans un événement est déterminée par la valeur du champ de niveau:
- Aucun : L’événement est abandonné.
- Les métadonnées de l’audit sont incluses, les organismes de demande et de réponse sont supprimés.
- Demande : Les métadonnées d’audit et l’organisme de demande sont inclus, le corps de réponse est supprimé.
- RequestResponse: Toutes les données sont incluses: métadonnées, corps de requête et corps de réponse. Le corps de réponse peut être très grand. À titre d’exemple, oc get pods -A génère un corps de réponse contenant la description YAML de chaque pod dans le cluster.
Cette fonctionnalité ne peut être utilisée que si le collecteur vectoriel est configuré dans votre déploiement de journalisation.
Dans l’enregistrement 5.8 et ultérieur, la ressource personnalisée ClusterLogForwarder (CR) utilise le même format que la politique d’audit standard Kubernetes, tout en fournissant les fonctions supplémentaires suivantes:
- Les wildcards
- Les noms d’utilisateurs, de groupes, d’espaces de noms et de ressources peuvent avoir un caractère d’astérisque principal ou suivi *. À titre d’exemple, namespace openshift-\* correspond à openshift-apiserver ou openshift-authentication. La ressource \*/status correspond à Pod/status ou Déploiement/status.
- Les règles par défaut
Les événements qui ne correspondent à aucune règle de la politique sont filtrés comme suit:
- Les événements système en lecture seule tels que get, list, watch sont supprimés.
- Les événements d’écriture de compte de service qui se produisent dans le même espace de noms que le compte de service sont supprimés.
- Les autres événements sont transmis, sous réserve des limites de taux configurées.
Afin de désactiver ces valeurs par défaut, terminez votre liste de règles avec une règle qui n’a qu’un champ de niveau ou ajoutez une règle vide.
- Omettre les codes de réponse
- Liste des codes de statut entiers à omettre. Dans la réponse, vous pouvez supprimer les événements en fonction du code d’état HTTP en utilisant le champ OmitResponseCodes, une liste de code d’état HTTP pour lequel aucun événement n’est créé. La valeur par défaut est [404, 409, 422, 429]. Lorsque la valeur est une liste vide, [], alors aucun code d’état n’est omis.
La politique d’audit ClusterLogForwarder CR agit en plus du Red Hat OpenShift Service sur la politique d’audit AWS. Le filtre d’audit ClusterLogForwarder CR modifie ce que le collecteur de journaux avance et permet de filtrer par verbe, utilisateur, groupe, espace de noms ou ressource. Il est possible de créer plusieurs filtres pour envoyer différents résumés du même flux d’audit à différents endroits. À titre d’exemple, vous pouvez envoyer un flux détaillé au magasin de journal de cluster local et un flux moins détaillé vers un site distant.
L’exemple fourni vise à illustrer l’éventail des règles possibles dans une politique d’audit et n’est pas une configuration recommandée.
Exemple de politique d’audit
- 1
- Les types de journaux qui sont collectés. La valeur de ce champ peut être l’audit pour les journaux d’audit, les applications pour les journaux d’applications, l’infrastructure pour les journaux d’infrastructure ou une entrée nommée qui a été définie pour votre application.
- 2
- Le nom de votre politique d’audit.
9.4.11. Envoi des journaux vers un système d’enregistrement Loki externe Copier lienLien copié sur presse-papiers!
Les journaux peuvent être transférés vers un système d’enregistrement Loki externe en plus ou au lieu du log store par défaut.
Afin de configurer le transfert de journaux vers Loki, vous devez créer une ressource personnalisée ClusterLogForwarder (CR) avec une sortie vers Loki, et un pipeline qui utilise la sortie. La sortie vers Loki peut utiliser la connexion HTTP (non sécurisée) ou HTTPS (sécurisé HTTP).
Conditions préalables
- Il faut avoir un système d’enregistrement Loki en cours d’exécution à l’URL que vous spécifiez avec le champ url dans le CR.
Procédure
Créer ou modifier un fichier YAML qui définit l’objet ClusterLogForwarder CR:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Dans les implémentations antérieures, le nom CR doit être instance. Dans les implémentations de transbordeur de journaux multiples, vous pouvez utiliser n’importe quel nom.
- 2
- Dans les implémentations héritées, l’espace de noms CR doit être ouvert-logging. Dans les implémentations de transfert de journaux multiples, vous pouvez utiliser n’importe quel espace de noms.
- 3
- Le nom de votre compte de service. Le compte de service n’est requis que dans les implémentations de transbordeur de journaux multiples si l’expéditeur de journaux n’est pas déployé dans l’espace de noms openshift-logging.
- 4
- Indiquez un nom pour la sortie.
- 5
- Indiquez le type comme "loki".
- 6
- Indiquez l’URL et le port du système Loki en tant qu’URL absolue valide. Il est possible d’utiliser le protocole http (non sécurisé) ou https (sécurisé HTTP). Lorsque 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. Le port par défaut de Loki pour la communication HTTP(S) est 3100.
- 7
- Dans le cas d’une connexion sécurisée, vous pouvez spécifier une URL https ou http que vous authentifiez en spécifiant un secret.
- 8
- Dans le cas d’un préfixe https, spécifiez le nom du secret requis par le point de terminaison pour la communication TLS. Le secret doit contenir une clé ca-bundle.crt qui pointe vers les certificats qu’il représente. Autrement, pour les préfixes http et https, vous pouvez spécifier un secret qui contient un nom d’utilisateur et un mot de passe. Dans les implémentations héritées, le secret doit exister dans le projet d’exploitation en openshift. En savoir plus, voir « Exemple : Configurer un secret qui contient un nom d’utilisateur et un mot de passe ».
- 9
- Facultatif : Spécifiez un champ clé de métadonnées pour générer des valeurs pour le champ TenantID dans Loki. À titre d’exemple, le paramètre tenantKey: kubernetes.namespace_name utilise les noms des espaces de noms Kubernetes comme valeurs pour les identifiants de locataire dans Loki. Afin de voir les autres champs d’enregistrement de journaux que vous pouvez spécifier, consultez le lien « Champs d’enregistrement de registre » dans la section suivante « Ressources supplémentaires ».
- 10
- Facultatif: Spécifiez une liste de touches de champ de métadonnées pour remplacer les étiquettes Loki par défaut. Les noms d’étiquettes Loki doivent correspondre à l’expression régulière [a-zA-Z_:][a-zA-Z0-9_:]*. Les caractères illégaux dans les clés de métadonnées sont remplacés par _ pour former le nom de l’étiquette. Ainsi, la clé de métadonnées kubernetes.labels.foo devient le label Loki kubernetes_labels_foo. Dans le cas où vous ne définissez pas de baliseKeys, la valeur par défaut est : [log_type, kubernetes.namespace_name, kubernetes.pod_name, kubernetes_host]. Gardez l’ensemble d’étiquettes petit car Loki limite la taille et le nombre d’étiquettes autorisées. Consultez Configuring Loki, limit_config. Cependant, vous pouvez toujours interroger en fonction de n’importe quel champ d’enregistrement de journal à l’aide de filtres de requête.
- 11
- Facultatif : Spécifiez un nom pour le pipeline.
- 12
- Indiquez les types de journaux à transmettre en utilisant le pipeline : application, infrastructure ou vérification.
- 13
- Indiquez le nom de la sortie à utiliser lors de la transmission des journaux avec ce pipeline.
NoteÉtant donné que Loki exige que les flux de journaux soient correctement commandés par horodatage, labelKeys inclut toujours l’ensemble d’étiquettes kubernetes_host, même si vous ne le spécifiez pas. Cette inclusion garantit que chaque flux provient d’un seul hôte, ce qui empêche les horodatages de devenir désordonnés en raison des différences d’horloge sur différents hôtes.
Appliquez l’objet ClusterLogForwarder CR en exécutant la commande suivante:
oc apply -f <filename>.yaml
$ oc apply -f <filename>.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
9.4.12. Envoi de journaux vers une instance externe Elasticsearch Copier lienLien copié sur presse-papiers!
Les journaux peuvent être transférés vers une instance externe Elasticsearch en plus ou au lieu du log store interne. Il vous incombe de configurer l’agrégateur de journaux externe pour recevoir les données de log de Red Hat OpenShift Service sur AWS.
Afin de configurer le transfert de journaux vers une instance externe Elasticsearch, vous devez créer une ressource personnalisée ClusterLogForwarder (CR) avec une sortie vers cette instance, et un pipeline qui utilise la sortie. La sortie externe Elasticsearch peut utiliser la connexion HTTP (non sécurisée) ou HTTPS (sécurisé HTTP).
Afin de transmettre les journaux à une instance externe et interne d’Elasticsearch, créez des sorties et des pipelines vers l’instance externe et un pipeline qui utilise la sortie par défaut pour transmettre les journaux à l’instance interne.
Il n’est pas nécessaire de créer un ClusterLogForwarder CR si vous voulez seulement transférer les journaux vers une instance interne Elasticsearch.
Conditions préalables
- Il faut avoir un serveur de journalisation configuré pour recevoir les données de journalisation à l’aide du protocole ou du format spécifié.
Procédure
Créer ou modifier un fichier YAML qui définit le ClusterLogForwarder CR:
Exemple ClusterLogForwarder CR
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Dans les implémentations antérieures, le nom CR doit être instance. Dans les implémentations de transbordeur de journaux multiples, vous pouvez utiliser n’importe quel nom.
- 2
- Dans les implémentations héritées, l’espace de noms CR doit être ouvert-logging. Dans les implémentations de transfert de journaux multiples, vous pouvez utiliser n’importe quel espace de noms.
- 3
- Le nom de votre compte de service. Le compte de service n’est requis que dans les implémentations de transbordeur de journaux multiples si l’expéditeur de journaux n’est pas déployé dans l’espace de noms openshift-logging.
- 4
- Indiquez un nom pour la sortie.
- 5
- Indiquez le type de recherche élastique.
- 6
- Indiquez la version Elasticsearch. Cela peut être 6, 7 ou 8.
- 7
- Indiquez l’URL et le port de l’instance externe Elasticsearch comme URL absolue valide. Il est possible d’utiliser le protocole http (non sécurisé) ou https (sécurisé HTTP). Lorsque 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.
- 8
- Dans le cas d’un préfixe https, spécifiez le nom du secret requis par le point de terminaison pour la communication TLS. Le secret doit contenir une clé ca-bundle.crt qui pointe vers le certificat qu’il représente. Autrement, pour les préfixes http et https, vous pouvez spécifier un secret qui contient un nom d’utilisateur et un mot de passe. Dans les implémentations héritées, le secret doit exister dans le projet d’exploitation en openshift. En savoir plus, voir « Exemple : Configurer un secret qui contient un nom d’utilisateur et un mot de passe ».
- 9
- Facultatif : Spécifiez un nom pour le pipeline.
- 10
- Indiquez les types de journaux à transmettre en utilisant le pipeline : application, infrastructure ou vérification.
- 11
- Indiquez le nom de la sortie à utiliser lors de la transmission des journaux avec ce pipeline.
- 12
- Facultatif : Spécifiez la sortie par défaut pour envoyer les journaux à l’instance interne Elasticsearch.
- 13
- Facultatif: String. Il y a une ou plusieurs étiquettes à ajouter aux journaux.
Appliquer le ClusterLogForwarder CR:
oc apply -f <filename>.yaml
$ oc apply -f <filename>.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Exemple : Définir un secret contenant un nom d’utilisateur et un mot de passe
Il est possible d’utiliser un secret contenant un nom d’utilisateur et un mot de passe pour authentifier une connexion sécurisée à une instance externe Elasticsearch.
Ainsi, si vous ne pouvez pas utiliser les touches TLS (mTLS) mutuelles parce qu’un tiers exploite l’instance Elasticsearch, vous pouvez utiliser HTTP ou HTTPS et définir un secret contenant le nom d’utilisateur et le mot de passe.
Créez un fichier Secret YAML similaire à l’exemple suivant. Les valeurs encodées base64 sont utilisées pour les champs nom d’utilisateur et mot de passe. Le type secret est opaque par défaut.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Créer le secret:
oc create secret -n openshift-logging openshift-test-secret.yaml
$ oc create secret -n openshift-logging openshift-test-secret.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Indiquez le nom du secret dans le ClusterLogForwarder CR:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow NoteDans la valeur du champ url, le préfixe peut être http ou https.
Appliquer l’objet CR:
oc apply -f <filename>.yaml
$ oc apply -f <filename>.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
9.4.13. Journaux de transfert à l’aide du protocole Fluentd forward Copier lienLien copié sur presse-papiers!
Il est possible d’utiliser le protocole Fluentd forward pour envoyer une copie de vos journaux à un agrégateur de journal externe configuré pour accepter le protocole au lieu du magasin de journal Elasticsearch par défaut ou en plus. Il vous incombe de configurer l’agrégateur de journaux externe pour recevoir les journaux de Red Hat OpenShift Service sur AWS.
Afin de configurer le transfert de journaux à l’aide du protocole avant, vous devez créer une ressource personnalisée ClusterLogForwarder (CR) 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é).
Conditions préalables
- Il faut avoir un serveur de journalisation configuré pour recevoir les données de journalisation à l’aide du protocole ou du format spécifié.
Procédure
Créer ou modifier un fichier YAML qui définit l’objet ClusterLogForwarder CR:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Le nom du ClusterLogForwarder CR doit être instance.
- 2
- L’espace de noms du ClusterLogForwarder CR doit être ouvert-logging.
- 3
- Indiquez un nom pour la sortie.
- 4
- Indiquez le type fluentdForward.
- 5
- Indiquez l’URL et le port de l’instance Fluentd externe comme URL absolue valide. Il est possible d’utiliser le protocole tcp (non sécurisé) ou tls (TCP sécurisé). Lorsque 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
- Lorsque vous utilisez un préfixe tls, vous devez spécifier le nom du secret requis par le point de terminaison pour la communication TLS. Le secret doit exister dans le projet openshift-logging et doit contenir une clé ca-bundle.crt qui pointe vers le certificat qu’il représente.
- 7
- Facultatif : Spécifiez un nom pour le pipeline.
- 8
- Indiquez les types de journaux à transmettre en utilisant le pipeline : application, infrastructure ou vérification.
- 9
- Indiquez le nom de la sortie à utiliser lors de la transmission des journaux avec ce pipeline.
- 10
- Facultatif : Spécifiez la sortie par défaut pour transmettre les journaux à l’instance interne Elasticsearch.
- 11
- Facultatif: String. Il y a une ou plusieurs étiquettes à ajouter aux journaux.
- 12
- Facultatif: Configurez plusieurs sorties pour transmettre les journaux à d’autres agrégateurs de journaux externes de tout type pris en charge:
- C’est un nom pour décrire le pipeline.
- L’entréeRefs est le type de journal à transmettre en utilisant le pipeline : application, infrastructure ou vérification.
- La sortieRefs est le nom de la sortie à utiliser.
- Facultatif: String. Il y a une ou plusieurs étiquettes à ajouter aux journaux.
Créer l’objet CR:
oc create -f <file-name>.yaml
$ oc create -f <file-name>.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
9.4.13.1. Activer la précision de nanoseconde pour Logstash à ingérer des données de fluentd Copier lienLien copié sur presse-papiers!
Afin que Logstash puisse ingérer des données de log à partir de fluentd, vous devez activer la précision nanoseconde dans le fichier de configuration Logstash.
Procédure
- Dans le fichier de configuration Logstash, définissez nanosecond_précision sur true.
Exemple de fichier de configuration Logstash
input { tcp { codec => fluent { nanosecond_precision => true } port => 24114 } } filter { } output { stdout { codec => rubydebug } }
input { tcp { codec => fluent { nanosecond_precision => true } port => 24114 } }
filter { }
output { stdout { codec => rubydebug } }
9.4.14. Journaux de transfert à l’aide du protocole syslog Copier lienLien copié sur presse-papiers!
Il est possible d’utiliser le protocole syslog RFC3164 ou RFC5424 pour envoyer une copie de vos journaux à un agrégateur de journal externe configuré pour accepter le protocole au lieu du magasin de journal Elasticsearch par défaut ou en plus. Il vous incombe de configurer l’agrégateur de journal externe, tel qu’un serveur syslog, pour recevoir les journaux de Red Hat OpenShift Service sur AWS.
Afin de configurer le transfert de journaux à l’aide du protocole syslog, vous devez créer une ressource personnalisée ClusterLogForwarder (CR) avec une ou plusieurs sorties vers les serveurs syslog, et des pipelines qui utilisent ces sorties. La sortie syslog peut utiliser une connexion UDP, TCP ou TLS.
Conditions préalables
- Il faut avoir un serveur de journalisation configuré pour recevoir les données de journalisation à l’aide du protocole ou du format spécifié.
Procédure
Créer ou modifier un fichier YAML qui définit l’objet ClusterLogForwarder CR:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Dans les implémentations antérieures, le nom CR doit être instance. Dans les implémentations de transbordeur de journaux multiples, vous pouvez utiliser n’importe quel nom.
- 2
- Dans les implémentations héritées, l’espace de noms CR doit être ouvert-logging. Dans les implémentations de transfert de journaux multiples, vous pouvez utiliser n’importe quel espace de noms.
- 3
- Le nom de votre compte de service. Le compte de service n’est requis que dans les implémentations de transbordeur de journaux multiples si l’expéditeur de journaux n’est pas déployé dans l’espace de noms openshift-logging.
- 4
- Indiquez un nom pour la sortie.
- 5
- Indiquez le type de syslog.
- 6
- Facultatif: Spécifiez les paramètres de syslog, énumérés ci-dessous.
- 7
- Indiquez l’URL et le port de l’instance syslog externe. Il est possible d’utiliser le protocole udp (non sécurisé), tcp (non sécurisé) ou tls (TCP sécurisé). Lorsque 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.
- 8
- En utilisant un préfixe tls, vous devez spécifier le nom du secret requis par le point de terminaison pour la communication TLS. Le secret doit contenir une clé ca-bundle.crt qui pointe vers le certificat qu’il représente. Dans les implémentations héritées, le secret doit exister dans le projet d’exploitation en openshift.
- 9
- Facultatif : Spécifiez un nom pour le pipeline.
- 10
- Indiquez les types de journaux à transmettre en utilisant le pipeline : application, infrastructure ou vérification.
- 11
- Indiquez le nom de la sortie à utiliser lors de la transmission des journaux avec ce pipeline.
- 12
- Facultatif : Spécifiez la sortie par défaut pour transmettre les journaux à l’instance interne Elasticsearch.
- 13
- Facultatif: String. Il y a une ou plusieurs étiquettes à ajouter aux journaux. Citez des valeurs comme "vrai" afin qu’elles soient reconnues comme des valeurs de chaîne, et non comme un booléen.
- 14
- Facultatif: Configurez plusieurs sorties pour transmettre les journaux à d’autres agrégateurs de journaux externes de tout type pris en charge:
- C’est un nom pour décrire le pipeline.
- L’entréeRefs est le type de journal à transmettre en utilisant le pipeline : application, infrastructure ou vérification.
- La sortieRefs est le nom de la sortie à utiliser.
- Facultatif: String. Il y a une ou plusieurs étiquettes à ajouter aux journaux.
Créer l’objet CR:
oc create -f <filename>.yaml
$ oc create -f <filename>.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
9.4.14.1. Ajout d’informations source de journal à la sortie du message Copier lienLien copié sur presse-papiers!
Il est possible d’ajouter des éléments namespace_name, pod_name et container_name au champ de message de l’enregistrement en ajoutant le champ AddLogSource à votre ressource personnalisée ClusterLogForwarder (CR).
Cette configuration est compatible avec les RFC3164 et RFC5424.
Exemple de sortie de message syslog sans AddLogSource
<15>1 2020-11-15T17:06:14+00:00 fluentd-9hkb4 mytag - - - {"msgcontent"=>"Message Contents", "timestamp"=>"2020-11-15 17:06:09", "tag_key"=>"rec_tag", "index"=>56}
<15>1 2020-11-15T17:06:14+00:00 fluentd-9hkb4 mytag - - - {"msgcontent"=>"Message Contents", "timestamp"=>"2020-11-15 17:06:09", "tag_key"=>"rec_tag", "index"=>56}
Exemple de sortie de message syslog avec AddLogSource
<15>1 2020-11-16T10:49:37+00:00 crc-j55b9-master-0 mytag - - - namespace_name=clo-test-6327,pod_name=log-generator-ff9746c49-qxm7l,container_name=log-generator,message={"msgcontent":"My life is my message", "timestamp":"2020-11-16 10:49:36", "tag_key":"rec_tag", "index":76}
<15>1 2020-11-16T10:49:37+00:00 crc-j55b9-master-0 mytag - - - namespace_name=clo-test-6327,pod_name=log-generator-ff9746c49-qxm7l,container_name=log-generator,message={"msgcontent":"My life is my message", "timestamp":"2020-11-16 10:49:36", "tag_key":"rec_tag", "index":76}
9.4.14.2. Les paramètres de syslog Copier lienLien copié sur presse-papiers!
Il est possible de configurer ce qui suit pour les sorties syslog. Consultez le syslog RFC3164 ou RFC5424 RFC pour plus d’informations.
facilité: L’installation de syslog. La valeur peut être un entier décimal ou un mot-clé insensible à la casse:
- 0 ou kern pour les messages du noyau
- 1 ou utilisateur pour les messages de niveau utilisateur, par défaut.
- 2 ou courrier pour le système de courrier
- 3 ou démon pour les démons système
- 4 ou auth pour les messages de sécurité / d’authentification
- 5 ou syslog pour les messages générés en interne par syslogd
- 6 ou lpr pour le sous-système d’imprimante de ligne
- 7 ou nouvelles pour le sous-système d’actualités réseau
- 8 ou uucp pour le sous-système UUCP
- 9 ou cron pour le démon d’horloge
- 10 ou authpriv pour les messages d’authentification de sécurité
- 11 ou ftp pour le démon FTP
- 12 ou ntp pour le sous-système NTP
- 13 ou sécurité pour le journal d’audit syslog
- 14 ou console pour le journal d’alerte syslog
- 15 ou solaris-cron pour le démon de planification
- 16-23 ou local0 - local7 pour les installations d’utilisation locale
Facultatif: payloadKey: Le champ d’enregistrement à utiliser comme charge utile pour le message syslog.
NoteLa configuration du paramètre PayloadKey empêche d’autres paramètres d’être transmis au syslog.
- la RFC à utiliser pour l’envoi de journaux à l’aide de syslog. La valeur par défaut est RFC5424.
gravité: La sévérité du syslog à établir sur les enregistrements de syslog sortants. La valeur peut être un entier décimal ou un mot-clé insensible à la casse:
- 0 ou urgence pour les messages indiquant que le système est inutilisable
- 1 ou Alerte pour les messages indiquant les actions doivent être prises immédiatement
- 2 ou critique pour les messages indiquant des conditions critiques
- 3 ou Erreur pour les messages indiquant les conditions d’erreur
- 4 ou avertissement pour les messages indiquant les conditions d’avertissement
- 5 ou Avis pour les messages indiquant des conditions normales mais significatives
- 6 ou Information pour les messages indiquant des messages d’information
- 7 ou Debug pour les messages indiquant le niveau de débogage, la valeur par défaut
- balise: Tag spécifie un champ d’enregistrement à utiliser comme balise sur le message syslog.
- trimPrefix: Supprimer le préfixe spécifié de la balise.
9.4.14.3. Autres paramètres RFC5424 syslog Copier lienLien copié sur presse-papiers!
Les paramètres suivants s’appliquent à la RFC5424:
- Appname: L’APP-NAME est une chaîne de texte libre qui identifie l’application qui a envoyé le journal. Doit être spécifié pour la RFC5424.
- Le MSGID est une chaîne de texte libre qui identifie le type de message. Doit être spécifié pour la RFC5424.
- le PROCID est une chaîne de texte libre. La modification de la valeur indique une discontinuité dans le rapport syslog. Doit être spécifié pour la RFC5424.
9.4.15. Envoi de journaux à un courtier Kafka Copier lienLien copié sur presse-papiers!
Les journaux peuvent être transférés à un courtier Kafka externe en plus ou à la place du log store par défaut.
Afin de configurer le transfert de journaux vers une instance Kafka externe, vous devez créer une ressource personnalisée ClusterLogForwarder (CR) avec une sortie vers cette instance, et un pipeline qui utilise la sortie. Il est possible d’inclure un sujet Kafka spécifique dans la sortie ou d’utiliser la valeur par défaut. La sortie Kafka peut utiliser une connexion TCP (non sécurisée) ou TLS (TCP sécurisé).
Procédure
Créer ou modifier un fichier YAML qui définit l’objet ClusterLogForwarder CR:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Dans les implémentations antérieures, le nom CR doit être instance. Dans les implémentations de transbordeur de journaux multiples, vous pouvez utiliser n’importe quel nom.
- 2
- Dans les implémentations héritées, l’espace de noms CR doit être ouvert-logging. Dans les implémentations de transfert de journaux multiples, vous pouvez utiliser n’importe quel espace de noms.
- 3
- Le nom de votre compte de service. Le compte de service n’est requis que dans les implémentations de transbordeur de journaux multiples si l’expéditeur de journaux n’est pas déployé dans l’espace de noms openshift-logging.
- 4
- Indiquez un nom pour la sortie.
- 5
- Indiquez le type kafka.
- 6
- Indiquez l’URL et le port du courtier Kafka en tant qu’URL absolue valide, éventuellement avec un sujet spécifique. Il est possible d’utiliser le protocole tcp (non sécurisé) ou tls (TCP sécurisé). Lorsque 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.
- 7
- Lorsque vous utilisez un préfixe tls, vous devez spécifier le nom du secret requis par le point de terminaison pour la communication TLS. Le secret doit contenir une clé ca-bundle.crt qui pointe vers le certificat qu’il représente. Dans les implémentations héritées, le secret doit exister dans le projet d’exploitation en openshift.
- 8
- Facultatif: Pour envoyer une sortie non sécurisée, utilisez un préfixe tcp devant l’URL. Également omettre la clé secrète et son nom de cette sortie.
- 9
- Facultatif : Spécifiez un nom pour le pipeline.
- 10
- Indiquez les types de journaux à transmettre en utilisant le pipeline : application, infrastructure ou vérification.
- 11
- Indiquez le nom de la sortie à utiliser lors de la transmission des journaux avec ce pipeline.
- 12
- Facultatif: String. Il y a une ou plusieurs étiquettes à ajouter aux journaux.
- 13
- Facultatif: Configurez plusieurs sorties pour transmettre les journaux à d’autres agrégateurs de journaux externes de tout type pris en charge:
- C’est un nom pour décrire le pipeline.
- L’entréeRefs est le type de journal à transmettre en utilisant le pipeline : application, infrastructure ou vérification.
- La sortieRefs est le nom de la sortie à utiliser.
- Facultatif: String. Il y a une ou plusieurs étiquettes à ajouter aux journaux.
Facultatif: Pour transférer une seule sortie à plusieurs courtiers Kafka, spécifiez un éventail de courtiers Kafka comme indiqué dans l’exemple suivant:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Appliquez le ClusterLogForwarder CR en exécutant la commande suivante:
oc apply -f <filename>.yaml
$ oc apply -f <filename>.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
9.4.16. Envoi de journaux vers Amazon CloudWatch Copier lienLien copié sur presse-papiers!
Les journaux peuvent être transmis à Amazon CloudWatch, un service de surveillance et de stockage log hébergé par Amazon Web Services (AWS). Les journaux peuvent être transférés vers CloudWatch en plus ou au lieu du log store par défaut.
Afin de configurer le transfert de journaux vers CloudWatch, vous devez créer une ressource personnalisée ClusterLogForwarder (CR) avec une sortie pour CloudWatch et un pipeline qui utilise la sortie.
Procédure
Créez un fichier Secret YAML qui utilise les champs aws_access_key_id et aws_secret_access_key pour spécifier vos identifiants AWS codés base64. À titre d’exemple:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Créez le secret. À titre d’exemple:
oc apply -f cw-secret.yaml
$ oc apply -f cw-secret.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Créez ou modifiez un fichier YAML qui définit l’objet ClusterLogForwarder CR. Dans le fichier, spécifiez le nom du secret. À titre d’exemple:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Dans les implémentations antérieures, le nom CR doit être instance. Dans les implémentations de transbordeur de journaux multiples, vous pouvez utiliser n’importe quel nom.
- 2
- Dans les implémentations héritées, l’espace de noms CR doit être ouvert-logging. Dans les implémentations de transfert de journaux multiples, vous pouvez utiliser n’importe quel espace de noms.
- 3
- Le nom de votre compte de service. Le compte de service n’est requis que dans les implémentations de transbordeur de journaux multiples si l’expéditeur de journaux n’est pas déployé dans l’espace de noms openshift-logging.
- 4
- Indiquez un nom pour la sortie.
- 5
- Indiquez le type de cloudwatch.
- 6
- Facultatif: Spécifiez comment regrouper les journaux:
- logType crée des groupes de journaux pour chaque type de journal.
- namespaceName crée un groupe de journal pour chaque espace de noms d’application. Il crée également des groupes de journaux distincts pour l’infrastructure et les journaux d’audit.
- namespaceUUID crée un nouveau groupe de journaux pour chaque espace de noms d’application UUID. Il crée également des groupes de journaux distincts pour l’infrastructure et les journaux d’audit.
- 7
- Facultatif : Spécifiez une chaîne de caractères pour remplacer le préfixe par défaut d’infrastructureName dans les noms des groupes de journaux.
- 8
- Indiquez la région AWS.
- 9
- Indiquez le nom du secret qui contient vos identifiants AWS.
- 10
- Facultatif : Spécifiez un nom pour le pipeline.
- 11
- Indiquez les types de journaux à transmettre en utilisant le pipeline : application, infrastructure ou vérification.
- 12
- Indiquez le nom de la sortie à utiliser lors de la transmission des journaux avec ce pipeline.
Créer l’objet CR:
oc create -f <file-name>.yaml
$ oc create -f <file-name>.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Exemple : Utiliser ClusterLogForwarder avec Amazon CloudWatch
Ici, vous voyez un exemple de ressource personnalisée ClusterLogForwarder (CR) et les données de log qu’elle génère sur Amazon CloudWatch.
Imaginez que vous dirigez un cluster ROSA nommé mycluster. La commande suivante renvoie l’infrastructure du clusterName, que vous utiliserez pour composer des commandes aws plus tard:
oc get Infrastructure/cluster -ojson | jq .status.infrastructureName
$ oc get Infrastructure/cluster -ojson | jq .status.infrastructureName
"mycluster-7977k"
Afin de générer des données de journal pour cet exemple, vous exécutez un pod de boîte de travail dans un espace de noms appelé application. Le pod busybox écrit un message à stdout toutes les trois secondes:
Consultez l’UUID de l’espace de noms de l’application où s’exécute le pod busybox:
oc get ns/app -ojson | jq .metadata.uid
$ oc get ns/app -ojson | jq .metadata.uid
"794e1e1a-b9f5-4958-a190-e76a9b53d7bf"
Dans votre ressource personnalisée ClusterLogForwarder (CR), vous configurez les types d’infrastructure, d’audit et de journal des applications en tant qu’entrées dans le pipeline de tous les journaux. En outre, vous connectez ce pipeline à la sortie cw, qui transmet les journaux à une instance CloudWatch dans la région us-est-2:
Chaque région de CloudWatch contient trois niveaux d’objets:
groupe de journal
flux de journal
- événement de log
Avec groupBy: logType dans le ClusterLogForwarding CR, les trois types de log dans l’entréeRefs produisent trois groupes de log dans Amazon Cloudwatch:
aws --output json logs describe-log-groups | jq .logGroups[].logGroupName
$ aws --output json logs describe-log-groups | jq .logGroups[].logGroupName
"mycluster-7977k.application"
"mycluster-7977k.audit"
"mycluster-7977k.infrastructure"
Chacun des groupes de journaux contient des flux de journaux:
aws --output json logs describe-log-streams --log-group-name mycluster-7977k.application | jq .logStreams[].logStreamName
$ aws --output json logs describe-log-streams --log-group-name mycluster-7977k.application | jq .logStreams[].logStreamName
"kubernetes.var.log.containers.busybox_app_busybox-da085893053e20beddd6747acdbaf98e77c37718f85a7f6a4facf09ca195ad76.log"
aws --output json logs describe-log-streams --log-group-name mycluster-7977k.audit | jq .logStreams[].logStreamName
$ aws --output json logs describe-log-streams --log-group-name mycluster-7977k.audit | jq .logStreams[].logStreamName
"ip-10-0-131-228.us-east-2.compute.internal.k8s-audit.log"
"ip-10-0-131-228.us-east-2.compute.internal.linux-audit.log"
"ip-10-0-131-228.us-east-2.compute.internal.openshift-audit.log"
...
aws --output json logs describe-log-streams --log-group-name mycluster-7977k.infrastructure | jq .logStreams[].logStreamName
$ aws --output json logs describe-log-streams --log-group-name mycluster-7977k.infrastructure | jq .logStreams[].logStreamName
"ip-10-0-131-228.us-east-2.compute.internal.kubernetes.var.log.containers.apiserver-69f9fd9b58-zqzw5_openshift-oauth-apiserver_oauth-apiserver-453c5c4ee026fe20a6139ba6b1cdd1bed25989c905bf5ac5ca211b7cbb5c3d7b.log"
"ip-10-0-131-228.us-east-2.compute.internal.kubernetes.var.log.containers.apiserver-797774f7c5-lftrx_openshift-apiserver_openshift-apiserver-ce51532df7d4e4d5f21c4f4be05f6575b93196336be0027067fd7d93d70f66a4.log"
"ip-10-0-131-228.us-east-2.compute.internal.kubernetes.var.log.containers.apiserver-797774f7c5-lftrx_openshift-apiserver_openshift-apiserver-check-endpoints-82a9096b5931b5c3b1d6dc4b66113252da4a6472c9fff48623baee761911a9ef.log"
...
Chaque flux de journal contient des événements de journal. Afin de voir un événement journal à partir du Pod de la boîte de données, vous spécifiez son flux de journal à partir du groupe de journal de l’application:
Exemple : Personnaliser le préfixe dans les noms de groupes de journaux
Dans les noms de groupe de journaux, vous pouvez remplacer le préfixe par défaut InfrastructureName, mycluster-7977k, par une chaîne arbitraire comme demo-group-prefix. Afin d’effectuer cette modification, vous mettez à jour le champ groupPrefix dans le ClusterLogForwarding CR:
cloudwatch: groupBy: logType groupPrefix: demo-group-prefix region: us-east-2
cloudwatch:
groupBy: logType
groupPrefix: demo-group-prefix
region: us-east-2
La valeur de groupPrefix remplace le préfixe infrastructure par défautName:
aws --output json logs describe-log-groups | jq .logGroups[].logGroupName
$ aws --output json logs describe-log-groups | jq .logGroups[].logGroupName
"demo-group-prefix.application"
"demo-group-prefix.audit"
"demo-group-prefix.infrastructure"
Exemple: Nom des groupes de journaux après les noms de l’espace de noms de l’application
Dans chaque espace de noms d’applications de votre cluster, vous pouvez créer un groupe de journaux dans CloudWatch dont le nom est basé sur le nom de l’espace de noms de l’application.
Lorsque vous supprimez un objet d’espace de noms d’application et créez un nouvel objet portant le même nom, CloudWatch continue d’utiliser le même groupe de journaux qu’auparavant.
Lorsque vous considérez des objets d’espace de noms d’application successifs qui ont le même nom comme équivalents les uns aux autres, utilisez l’approche décrite dans cet exemple. Dans le cas contraire, si vous devez distinguer les groupes de journaux résultants les uns des autres, consultez la section suivante "Noming log groups for application namespace UUIDs" section à la place.
Afin de créer des groupes de journaux d’applications dont les noms sont basés sur les noms des espaces de noms de l’application, vous définissez la valeur du groupePar le champ namespaceName dans le ClusterLogForwarder CR:
cloudwatch: groupBy: namespaceName region: us-east-2
cloudwatch:
groupBy: namespaceName
region: us-east-2
Le groupe de configurationPar à namespaceName affecte uniquement le groupe de journal de l’application. Cela n’affecte pas les groupes d’audit et de journal de l’infrastructure.
Dans Amazon Cloudwatch, le nom de l’espace de noms apparaît à la fin de chaque nom de groupe de journal. Comme il y a un seul espace de noms d’application, "app", la sortie suivante montre un nouveau groupe de journaux mycluster-7977k.app au lieu de mycluster-7977k.application:
aws --output json logs describe-log-groups | jq .logGroups[].logGroupName
$ aws --output json logs describe-log-groups | jq .logGroups[].logGroupName
"mycluster-7977k.app"
"mycluster-7977k.audit"
"mycluster-7977k.infrastructure"
Lorsque le cluster de cet exemple contenait plusieurs espaces de noms d’applications, la sortie afficherait plusieurs groupes de journaux, un pour chaque espace de noms.
Le champ groupBy affecte uniquement le groupe de journal des applications. Cela n’affecte pas les groupes d’audit et de journal de l’infrastructure.
Exemple: Nom des groupes de journaux après l’espace de noms de l’application UUIDs
Dans chaque espace de noms d’applications de votre cluster, vous pouvez créer un groupe de journaux dans CloudWatch dont le nom est basé sur l’UUID de l’espace de noms de l’application.
Lorsque vous supprimez un objet d’espace de noms d’application et créez un nouvel objet, CloudWatch crée un nouveau groupe de journaux.
Lorsque vous considérez des objets d’espace de noms d’application successifs avec le même nom comme différents les uns des autres, utilisez l’approche décrite dans cet exemple. Dans le cas contraire, voir la section « Exemple : Nom des groupes de journaux pour les noms d’espace de noms d’applications » à la place.
Afin de nommer les groupes de journaux après les UUIDs de l’espace de noms de l’application, vous définissez la valeur du groupePar le champ namespaceUUID dans le ClusterLogForwarder CR:
cloudwatch: groupBy: namespaceUUID region: us-east-2
cloudwatch:
groupBy: namespaceUUID
region: us-east-2
Dans Amazon Cloudwatch, l’UUID de namespace apparaît à la fin de chaque nom de groupe de journal. Comme il y a un seul espace de noms d’application, "app", la sortie suivante montre un nouveau groupe de journaux mycluster-7977k.794e1a-b9f5-4958-a190-e76a9b53d7bf au lieu de mycluster-7977k.application:
aws --output json logs describe-log-groups | jq .logGroups[].logGroupName
$ aws --output json logs describe-log-groups | jq .logGroups[].logGroupName
"mycluster-7977k.794e1e1a-b9f5-4958-a190-e76a9b53d7bf" // uid of the "app" namespace
"mycluster-7977k.audit"
"mycluster-7977k.infrastructure"
Le champ groupBy affecte uniquement le groupe de journal des applications. Cela n’affecte pas les groupes d’audit et de journal de l’infrastructure.
9.4.17. Créer un secret pour AWS CloudWatch avec un rôle AWS existant Copier lienLien copié sur presse-papiers!
Lorsque vous avez un rôle existant pour AWS, vous pouvez créer un secret pour AWS avec STS en utilisant la commande oc create secret -- from-littéral.
Procédure
Dans le CLI, entrez ce qui suit pour générer un secret pour AWS:
oc create secret generic cw-sts-secret -n openshift-logging --from-literal=role_arn=arn:aws:iam::123456789012:role/my-role_with-permissions
$ oc create secret generic cw-sts-secret -n openshift-logging --from-literal=role_arn=arn:aws:iam::123456789012:role/my-role_with-permissions
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple secret
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
9.4.18. Envoi de journaux vers Amazon CloudWatch à partir de clusters activés STS Copier lienLien copié sur presse-papiers!
Dans le cas des clusters avec AWS Security Token Service (STS) activés, vous devez créer les rôles et les politiques AWS IAM qui permettent le transfert de journaux, et une ressource personnalisée ClusterLogForwarder (CR) avec une sortie pour CloudWatch.
Conditions préalables
- Journalisation pour Red Hat OpenShift: 5.5 et versions ultérieures
Procédure
Créer le compte AWS:
Créez un fichier JSON de stratégie IAM avec le contenu suivant:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Créez un fichier JSON de confiance IAM avec le contenu suivant:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Indiquez votre identifiant de compte AWS et le point de terminaison du fournisseur OpenShift OIDC. Obtenez le point de terminaison en exécutant la commande suivante:
rosa describe cluster \ -c $(oc get clusterversion -o jsonpath='{.items[].spec.clusterID}{"\n"}') \ -o yaml | awk '/oidc_endpoint_url/ {print $2}' | cut -d '/' -f 3,4
$ rosa describe cluster \ -c $(oc get clusterversion -o jsonpath='{.items[].spec.clusterID}{"\n"}') \ -o yaml | awk '/oidc_endpoint_url/ {print $2}' | cut -d '/' -f 3,4
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 2
- Indiquez à nouveau le point de terminaison OpenShift OIDC.
Créer le rôle de l’IAM:
aws iam create-role
$ aws iam create-role --role-name “<your_rosa_cluster_name>-RosaCloudWatch” \ --assume-role-policy-document file://<your_trust_file_name>.json \ --query Role.Arn \ --output text
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Enregistrez la sortie. Dans les prochaines étapes, vous l’utiliserez.
Créer la politique IAM:
aws iam create-policy \ --policy-name "RosaCloudWatch" \ --policy-document file:///<your_policy_file_name>.json \ --query Policy.Arn \ --output text
$ aws iam create-policy \ --policy-name "RosaCloudWatch" \ --policy-document file:///<your_policy_file_name>.json \ --query Policy.Arn \ --output text
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Enregistrez la sortie. Dans les prochaines étapes, vous l’utiliserez.
Attacher la politique de l’IAM au rôle de l’IAM:
aws iam attach-role-policy \ --role-name “<your_rosa_cluster_name>-RosaCloudWatch” \ --policy-arn <policy_ARN>
$ aws iam attach-role-policy \ --role-name “<your_rosa_cluster_name>-RosaCloudWatch” \ --policy-arn <policy_ARN>
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Remplace policy_ARN par la sortie que vous avez enregistrée lors de la création de la stratégie.
Créer un fichier Secret YAML pour le Red Hat OpenShift Logging Operator:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Il suffit de remplacer role_ARN par la sortie que vous avez enregistrée lors de la création du rôle.
Créer le secret:
oc apply -f cloudwatch-credentials.yaml
$ oc apply -f cloudwatch-credentials.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Créer ou modifier une ressource personnalisée ClusterLogForwarder:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Dans les implémentations antérieures, le nom CR doit être instance. Dans les implémentations de transbordeur de journaux multiples, vous pouvez utiliser n’importe quel nom.
- 2
- Dans les implémentations héritées, l’espace de noms CR doit être ouvert-logging. Dans les implémentations de transfert de journaux multiples, vous pouvez utiliser n’importe quel espace de noms.
- 3
- Le nom de votre compte de service. Le compte de service n’est requis que dans les implémentations de transbordeur de journaux multiples si l’expéditeur de journaux n’est pas déployé dans l’espace de noms openshift-logging.
- 4
- Indiquez un nom pour la sortie.
- 5
- Indiquez le type de cloudwatch.
- 6
- Facultatif: Spécifiez comment regrouper les journaux:
- logType crée des groupes de journaux pour chaque type de journal
- namespaceName crée un groupe de journal pour chaque espace de noms d’application. Les journaux d’infrastructure et d’audit ne sont pas affectés, restant regroupés par logType.
- namespaceUUID crée un nouveau groupe de journaux pour chaque espace de noms d’application UUID. Il crée également des groupes de journaux distincts pour l’infrastructure et les journaux d’audit.
- 7
- Facultatif : Spécifiez une chaîne de caractères pour remplacer le préfixe par défaut d’infrastructureName dans les noms des groupes de journaux.
- 8
- Indiquez la région AWS.
- 9
- Indiquez le nom du secret que vous avez créé précédemment.
- 10
- Facultatif : Spécifiez un nom pour le pipeline.
- 11
- Indiquez les types de journaux à transmettre en utilisant le pipeline : application, infrastructure ou vérification.
- 12
- Indiquez le nom de la sortie à utiliser lors de la transmission des journaux avec ce pipeline.