10.9. Transférer les journaux vers une instance Elasticsearch externe
Vous pouvez optionnellement transmettre les logs à une instance Elasticsearch externe en plus ou à la place de l'instance Elasticsearch interne d'OpenShift Container Platform. Vous êtes responsable de la configuration de l'agrégateur de logs externe pour recevoir les données de logs d'OpenShift Container Platform.
Pour configurer la redirection des journaux vers une instance Elasticsearch externe, vous devez créer une ressource personnalisée (CR) ClusterLogForwarder
avec une sortie vers cette instance et un pipeline qui utilise la sortie. La sortie Elasticsearch externe peut utiliser la connexion HTTP (non sécurisée) ou HTTPS (HTTP sécurisée).
Pour transmettre les journaux à une instance Elasticsearch externe et interne, créez des sorties et des pipelines vers l'instance externe et un pipeline qui utilise la sortie default
pour transmettre les journaux à l'instance interne. Il n'est pas nécessaire de créer une sortie default
. Si vous configurez une sortie default
, vous recevrez un message d'erreur car la sortie default
est réservée à Red Hat OpenShift Logging Operator.
Si vous souhaitez transmettre les logs à only l'instance Elasticsearch interne d'OpenShift Container Platform, vous n'avez pas besoin de créer un CR ClusterLogForwarder
.
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: elasticsearch-insecure 3 type: "elasticsearch" 4 url: http://elasticsearch.insecure.com:9200 5 - name: elasticsearch-secure type: "elasticsearch" url: https://elasticsearch.secure.com:9200 6 secret: name: es-secret 7 pipelines: - name: application-logs 8 inputRefs: 9 - application - audit outputRefs: - elasticsearch-secure 10 - default 11 parse: json 12 labels: myLabel: "myValue" 13 - name: infrastructure-audit-logs 14 inputRefs: - infrastructure outputRefs: - elasticsearch-insecure labels: logs: "audit-infra"
- 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
elasticsearch
. - 5
- Spécifiez l'URL et le port de l'instance Elasticsearch externe sous la forme d'une URL absolue valide. Vous pouvez utiliser le protocole
http
(non sécurisé) ouhttps
(HTTP 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
- Pour une connexion sécurisée, vous pouvez spécifier une URL
https
ouhttp
que vous authentifiez en spécifiant unsecret
. - 7
- Pour un préfixe
https
, indiquez le nom du secret requis par le point d'extrémité 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éfixeshttp
ethttps
, 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-" - 8
- Facultatif : Spécifiez un nom pour le pipeline.
- 9
- Spécifiez les types de journaux à transférer en utilisant le pipeline :
application,
infrastructure
ouaudit
. - 10
- Spécifiez le nom de la sortie à utiliser lors du transfert des journaux avec ce pipeline.
- 11
- Facultatif : Spécifiez la sortie
default
pour envoyer les journaux à l'instance Elasticsearch interne. - 12
- 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
. - 13
- Facultatif : Chaîne. Une ou plusieurs étiquettes à ajouter aux journaux.
- 14
- 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
Exemple : Définition d'un secret contenant un nom d'utilisateur et un mot de passe
Vous pouvez utiliser un secret contenant un nom d'utilisateur et un mot de passe pour authentifier une connexion sécurisée à une instance Elasticsearch externe.
Par exemple, si vous ne pouvez pas utiliser de clés TLS mutuelles (mTLS) 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 YAML
Secret
similaire à l'exemple suivant. Utilisez des valeurs encodées en base64 pour les champsusername
etpassword
. Le type de secret est opaque par défaut.apiVersion: v1 kind: Secret metadata: name: openshift-test-secret data: username: dGVzdHVzZXJuYW1lCg== password: dGVzdHBhc3N3b3JkCg==
Créer le secret :
$ oc create secret -n openshift-logging openshift-test-secret.yaml
Spécifiez le nom du secret dans le CR
ClusterLogForwarder
:kind: ClusterLogForwarder metadata: name: instance namespace: openshift-logging spec: outputs: - name: elasticsearch type: "elasticsearch" url: https://elasticsearch.secure.com:9200 secret: name: openshift-test-secret
NoteDans la valeur du champ
url
, le préfixe peut êtrehttp
ouhttps
.Créer l'objet CR :
oc create -f <nom-de-fichier>.yaml