10.4. Configuration du log store Elasticsearch
Elasticsearch 6 vous permet de stocker et d’organiser les données de log.
Il est possible d’apporter des modifications à votre log store, y compris:
- Entreposage pour votre cluster Elasticsearch
- La réplication partagée entre les nœuds de données dans le cluster, de la réplication complète à l’absence de réplication
- Accès externe aux données Elasticsearch
10.4.1. Configuration du stockage des journaux Copier lienLien copié sur presse-papiers!
Il est possible de configurer le type de stockage de journal utilisé par votre journal en modifiant la ressource personnalisée ClusterLogging (CR).
Conditions préalables
- Il y a des autorisations d’administrateur.
- L’OpenShift CLI (oc) a été installé.
- L’opérateur de journalisation Red Hat OpenShift et un log store interne sont soit le LokiStack, soit Elasticsearch.
- C’est vous qui avez créé un ClusterLogging CR.
La version Logging 5.9 ne contient pas une version mise à jour de l’opérateur OpenShift Elasticsearch. Actuellement, si vous utilisez l’opérateur OpenShift Elasticsearch publié avec Logging 5.8, il continuera à fonctionner avec Logging jusqu’à ce que l’EOL de Logging 5.8. Comme alternative à l’utilisation de l’opérateur OpenShift Elasticsearch pour gérer le stockage de journaux par défaut, vous pouvez utiliser l’opérateur Loki. Consultez Platform Agnostic Operators pour plus d’informations sur les dates du cycle de vie de l’enregistrement.
Procédure
ClusterLogging CR logStore Spécification:
Exemple de ClusterLogging CR
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Indiquez le type de log store. Cela peut être soit le lokistack ou la recherche élastique.
- 2
- Des options de configuration optionnelles pour la boutique de journal Elasticsearch.
- 3
- Indiquez le type de redondance. Cette valeur peut être ZeroRedundancy, SingleRedundancy, MultipleRedundancy ou FullRedundancy.
- 4
- Configuration optionnelle pour LokiStack.
Exemple ClusterLogging CR pour spécifier LokiStack comme log store
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Appliquez le ClusterLogging 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
10.4.2. Envoi des journaux d’audit au log store Copier lienLien copié sur presse-papiers!
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.
Procédure
D’utiliser l’API Log Forward pour transmettre les journaux d’audit à l’instance interne Elasticsearch:
Créer ou modifier un fichier YAML qui définit l’objet ClusterLogForwarder CR:
Créez un CR pour envoyer tous les types de journaux à l’instance interne Elasticsearch. Il est possible d’utiliser l’exemple suivant sans apporter de modifications:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Le pipeline définit le type de logs à transmettre à l’aide de la sortie spécifiée. La sortie par défaut transmet les journaux à l’instance interne Elasticsearch.
NoteDans le pipeline, vous devez spécifier les trois types de logs : application, infrastructure et audit. Dans le cas où vous ne spécifiez pas un type de journal, ces journaux ne sont pas stockés et seront perdus.
Lorsque vous avez un ClusterLogForwarder CR existant, ajoutez un pipeline à la sortie par défaut pour les journaux d’audit. Il n’est pas nécessaire de définir la sortie par défaut. À titre d’exemple:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Ce pipeline envoie les journaux d’audit à l’instance interne Elasticsearch en plus d’une instance externe.
10.4.3. Configuration du temps de rétention du journal Copier lienLien copié sur presse-papiers!
Il est possible de configurer une stratégie de rétention qui spécifie combien de temps le magasin de journal Elasticsearch par défaut conserve des indices pour chacune des trois sources de journaux : journaux d’infrastructures, journaux d’applications et journaux d’audit.
Afin de configurer la stratégie de rétention, vous définissez un paramètre maxAge pour chaque source de journal de la ressource personnalisée ClusterLogging (CR). Le CR applique ces valeurs au calendrier de roulement Elasticsearch, qui détermine quand Elasticsearch supprime les indices reportés.
Elasticsearch roule sur un index, en déplaçant l’index actuel et en créant un nouvel index, lorsqu’un index correspond à l’une des conditions suivantes:
- L’indice est plus ancien que la valeur rollover.maxAge dans le CR Elasticsearch.
- La taille de l’indice est supérieure à 40 Go × le nombre de fragments primaires.
- Le nombre de doc index est supérieur à 40960 KB × le nombre de fragments primaires.
Elasticsearch supprime les indices en fonction de la stratégie de rétention que vous configurez. Lorsque vous ne créez pas de stratégie de rétention pour les sources de journaux, les journaux sont supprimés après sept jours par défaut.
Conditions préalables
- L’opérateur de journalisation Red Hat OpenShift et l’opérateur OpenShift Elasticsearch doivent être installés.
Procédure
Configurer le temps de rétention du journal:
Modifiez le ClusterLogging CR pour ajouter ou modifier le paramètre de rétentionPolicy:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Indiquez l’heure à laquelle Elasticsearch doit conserver chaque source de journal. Entrez un entier et une désignation de temps: semaines (w), heures (h/H), minutes(m) et secondes(s). A titre d’exemple, 1d pour une journée. Les journaux plus anciens que le maxAge sont supprimés. Les journaux sont conservés par défaut pendant sept jours.
Il est possible de vérifier les paramètres de la ressource personnalisée Elasticsearch (CR).
À titre d’exemple, le Red Hat OpenShift Logging Operator a mis à jour la version suivante d’Elasticsearch CR pour configurer une politique de rétention qui inclut des paramètres permettant de renverser les indices actifs pour les journaux d’infrastructure toutes les huit heures et les indices enroulés sont supprimés sept jours après le roulement. Le service OpenShift Red Hat sur AWS vérifie toutes les 15 minutes pour déterminer si les indices doivent être reportés.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Dans chaque source de journal, la stratégie de rétention indique quand supprimer et retourner les journaux pour cette source.
- 2
- Lorsque Red Hat OpenShift Service sur AWS supprime les indices laminés. Ce paramètre est le maxAge que vous définissez dans le ClusterLogging CR.
- 3
- L’âge de l’index pour Red Hat OpenShift Service sur AWS à prendre en compte lors du roulement sur les indices. Cette valeur est déterminée à partir du maxAge que vous définissez dans le ClusterLogging CR.
- 4
- Lorsque Red Hat OpenShift Service sur AWS vérifie si les indices doivent être reportés. Ce paramètre est le paramètre par défaut et ne peut pas être modifié.
NoteLa modification du CR Elasticsearch n’est pas prise en charge. Les modifications apportées aux politiques de conservation doivent être apportées dans le ClusterLogging CR.
L’opérateur OpenShift Elasticsearch déploie une tâche cron pour déplacer les indices de chaque mappage à l’aide de la stratégie définie, programmée à l’aide du pollInterval.
oc get cronjob
$ oc get cronjob
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE elasticsearch-im-app */15 * * * * False 0 <none> 4s elasticsearch-im-audit */15 * * * * False 0 <none> 4s elasticsearch-im-infra */15 * * * * False 0 <none> 4s
NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE elasticsearch-im-app */15 * * * * False 0 <none> 4s elasticsearch-im-audit */15 * * * * False 0 <none> 4s elasticsearch-im-infra */15 * * * * False 0 <none> 4s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
10.4.4. Configuration des requêtes CPU et mémoire pour le log store Copier lienLien copié sur presse-papiers!
Chaque spécification de composant permet d’ajuster à la fois le CPU et les demandes de mémoire. Il ne faut pas avoir à ajuster manuellement ces valeurs car l’opérateur OpenShift Elasticsearch définit des valeurs suffisantes pour votre environnement.
Dans les clusters à grande échelle, la limite de mémoire par défaut pour le conteneur proxy Elasticsearch pourrait ne pas être suffisante, ce qui rend le conteneur proxy OOMKilled. Lorsque vous rencontrez ce problème, augmentez les demandes de mémoire et les limites pour le proxy Elasticsearch.
Chaque nœud Elasticsearch peut fonctionner avec un réglage de mémoire inférieur, mais cela n’est pas recommandé pour les déploiements de production. En production, vous ne devriez pas avoir moins que le 16Gi par défaut alloué à chaque pod. De préférence, vous devriez allouer autant que possible, jusqu’à 64Gi par dose.
Conditions préalables
- Les opérateurs Red Hat OpenShift Logging et Elasticsearch doivent être installés.
Procédure
Éditer la ressource personnalisée ClusterLogging (CR) dans le projet openshift-logging:
oc edit ClusterLogging instance
$ oc edit ClusterLogging instance
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Indiquez les requêtes CPU et mémoire pour Elasticsearch au besoin. Lorsque vous laissez ces valeurs vides, l’opérateur OpenShift Elasticsearch définit des valeurs par défaut qui devraient être suffisantes pour la plupart des déploiements. Les valeurs par défaut sont 16Gi pour la requête mémoire et 1 pour la requête CPU.
- 2
- La quantité maximale de ressources qu’un pod peut utiliser.
- 3
- Les ressources minimales requises pour planifier un pod.
- 4
- Indiquez les requêtes CPU et mémoire pour le proxy Elasticsearch au besoin. Lorsque vous laissez ces valeurs vides, l’opérateur OpenShift Elasticsearch définit des valeurs par défaut suffisantes pour la plupart des déploiements. Les valeurs par défaut sont 256Mi pour la requête mémoire et 100m pour la requête CPU.
Lors de l’ajustement de la quantité de mémoire Elasticsearch, la même valeur doit être utilisée pour les requêtes et les limites.
À titre d’exemple:
Kubernetes adhère généralement à la configuration du nœud et ne permet pas à Elasticsearch d’utiliser les limites spécifiées. La définition de la même valeur pour les requêtes et les limites garantit qu’Elasticsearch peut utiliser la mémoire que vous voulez, en supposant que le nœud dispose de la mémoire disponible.
10.4.5. Configuration de la stratégie de réplication pour le log store Copier lienLien copié sur presse-papiers!
Il est possible de définir comment les fragments Elasticsearch sont reproduits sur les nœuds de données du cluster.
Conditions préalables
- Les opérateurs Red Hat OpenShift Logging et Elasticsearch doivent être installés.
Procédure
Éditer la ressource personnalisée ClusterLogging (CR) dans le projet openshift-logging:
oc -n openshift-logging edit ClusterLogging instance
$ oc -n openshift-logging edit ClusterLogging instance
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Indiquez une politique de redondance pour les fragments. Le changement est appliqué lors de la sauvegarde des changements.
- FullRedundancy. Elasticsearch réplique complètement les fragments primaires de chaque index à chaque nœud de données. Cela offre la sécurité la plus élevée, mais au coût de la plus grande quantité de disque requise et des performances les plus pauvres.
- De multiplesRedundancy. Elasticsearch reproduit complètement les fragments primaires de chaque index à la moitié des nœuds de données. Cela offre un bon compromis entre la sécurité et la performance.
- Le singleRedundancy. Elasticsearch fait une copie des fragments primaires pour chaque index. Les journaux sont toujours disponibles et récupérables tant qu’il existe au moins deux nœuds de données. De meilleures performances que MultipleRedundancy, lorsque vous utilisez 5 nœuds ou plus. Il est impossible d’appliquer cette politique sur les déploiements d’un nœud Elasticsearch unique.
- Le ZeroRedundancy. Elasticsearch ne fait pas de copies des fragments primaires. Les journaux peuvent être indisponibles ou perdus en cas de panne ou d’échec d’un nœud. Lorsque vous êtes plus préoccupé par les performances que par la sécurité, utilisez ce mode ou avez mis en œuvre votre propre stratégie de sauvegarde/restauration de disque/PVC.
Le nombre de fragments primaires pour les modèles d’index est égal au nombre de nœuds de données Elasticsearch.
10.4.6. Évoluant vers le bas des pods Elasticsearch Copier lienLien copié sur presse-papiers!
La réduction du nombre de pods Elasticsearch dans votre cluster peut entraîner une perte de données ou une dégradation des performances d’Elasticsearch.
Lorsque vous baissez, vous devriez réduire d’une dose à la fois et permettre au cluster de rééquilibrer les éclats et les répliques. Après le retour de l’état de santé Elasticsearch au vert, vous pouvez réduire par une autre dose.
Lorsque votre cluster Elasticsearch est défini sur ZeroRedundancy, vous ne devriez pas réduire vos pods Elasticsearch.
10.4.7. Configuration du stockage persistant pour le log store Copier lienLien copié sur presse-papiers!
Elasticsearch nécessite un stockage persistant. Le stockage est rapide, plus la performance Elasticsearch est rapide.
L’utilisation du stockage NFS comme volume ou volume persistant (ou via un NAS tel que Gluster) n’est pas prise en charge pour le stockage Elasticsearch, car Lucene s’appuie sur le comportement du système de fichiers que NFS ne fournit pas. La corruption des données et d’autres problèmes peuvent survenir.
Conditions préalables
- Les opérateurs Red Hat OpenShift Logging et Elasticsearch doivent être installés.
Procédure
Éditez le ClusterLogging CR pour spécifier que chaque nœud de données dans le cluster est lié à une revendication de volume persistant.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Cet exemple spécifie chaque nœud de données dans le cluster est lié à une revendication de volume persistant qui demande le stockage "200G" d’AWS General Purpose SSD (gp2).
Lorsque vous utilisez un volume local pour le stockage persistant, n’utilisez pas de volume de bloc brut, qui est décrit avec volumeMode: bloc dans l’objet LocalVolume. Elasticsearch ne peut pas utiliser les volumes de blocs bruts.
10.4.8. Configuration du log store pour le stockage emptyDir Copier lienLien copié sur presse-papiers!
Il est possible d’utiliser emptyDir avec votre log store, ce qui crée un déploiement éphémère dans lequel toutes les données d’un pod sont perdues lors du redémarrage.
Lorsque vous utilisez emptyDir, si le stockage du journal est redémarré ou redéployé, vous perdrez des données.
Conditions préalables
- Les opérateurs Red Hat OpenShift Logging et Elasticsearch doivent être installés.
Procédure
Éditez le ClusterLogging CR pour spécifier emptyDir:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
10.4.9. Effectuer un redémarrage du cluster roulant Elasticsearch Copier lienLien copié sur presse-papiers!
Effectuez un redémarrage roulant lorsque vous modifiez la carte de configuration de la recherche élastique ou l’une des configurations de déploiement élastiquesearch-*.
En outre, un redémarrage roulant est recommandé si les nœuds sur lesquels fonctionne un pod Elasticsearch nécessitent un redémarrage.
Conditions préalables
- Les opérateurs Red Hat OpenShift Logging et Elasticsearch doivent être installés.
Procédure
Effectuer un redémarrage du cluster roulant:
Changement au projet openshift-logging:
oc project openshift-logging
$ oc project openshift-logging
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Les noms des pods Elasticsearch:
oc get pods -l component=elasticsearch
$ oc get pods -l component=elasticsearch
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Faites baisser les pods de collecteurs afin qu’ils arrêtent d’envoyer de nouveaux journaux à Elasticsearch:
oc -n openshift-logging patch daemonset/collector -p '{"spec":{"template":{"spec":{"nodeSelector":{"logging-infra-collector": "false"}}}}}'
$ oc -n openshift-logging patch daemonset/collector -p '{"spec":{"template":{"spec":{"nodeSelector":{"logging-infra-collector": "false"}}}}}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Effectuez une flush synchronisée en utilisant le service OpenShift Red Hat sur AWS es_util pour s’assurer qu’il n’y a pas d’opérations en attente d’être écrites sur le disque avant d’arrêter:
oc exec <any_es_pod_in_the_cluster> -c elasticsearch -- es_util --query="_flush/synced" -XPOST
$ oc exec <any_es_pod_in_the_cluster> -c elasticsearch -- es_util --query="_flush/synced" -XPOST
Copy to Clipboard Copied! Toggle word wrap Toggle overflow À titre d’exemple:
oc exec -c elasticsearch-cdm-5ceex6ts-1-dcd6c4c7c-jpw6 -c elasticsearch -- es_util --query="_flush/synced" -XPOST
$ oc exec -c elasticsearch-cdm-5ceex6ts-1-dcd6c4c7c-jpw6 -c elasticsearch -- es_util --query="_flush/synced" -XPOST
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
{"_shards":{"total":4,"successful":4,"failed":0},".security":{"total":2,"successful":2,"failed":0},".kibana_1":{"total":2,"successful":2,"failed":0}}
{"_shards":{"total":4,"successful":4,"failed":0},".security":{"total":2,"successful":2,"failed":0},".kibana_1":{"total":2,"successful":2,"failed":0}}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Évitez l’équilibrage shard lorsque vous faites tomber délibérément les nœuds à l’aide du service OpenShift Red Hat sur AWS es_util:
oc exec <any_es_pod_in_the_cluster> -c elasticsearch -- es_util --query="_cluster/settings" -XPUT -d '{ "persistent": { "cluster.routing.allocation.enable" : "primaries" } }'
$ oc exec <any_es_pod_in_the_cluster> -c elasticsearch -- es_util --query="_cluster/settings" -XPUT -d '{ "persistent": { "cluster.routing.allocation.enable" : "primaries" } }'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow À titre d’exemple:
oc exec elasticsearch-cdm-5ceex6ts-1-dcd6c4c7c-jpw6 -c elasticsearch -- es_util --query="_cluster/settings" -XPUT -d '{ "persistent": { "cluster.routing.allocation.enable" : "primaries" } }'
$ oc exec elasticsearch-cdm-5ceex6ts-1-dcd6c4c7c-jpw6 -c elasticsearch -- es_util --query="_cluster/settings" -XPUT -d '{ "persistent": { "cluster.routing.allocation.enable" : "primaries" } }'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
{"acknowledged":true,"persistent":{"cluster":{"routing":{"allocation":{"enable":"primaries"}}}},"transient":
{"acknowledged":true,"persistent":{"cluster":{"routing":{"allocation":{"enable":"primaries"}}}},"transient":
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Après la commande est terminée, pour chaque déploiement que vous avez pour un cluster ES:
Le service OpenShift de Red Hat sur AWS Elasticsearch bloque les déploiements sur leurs nœuds. À l’aide de la commande suivante pour autoriser les déploiements et permettre au pod de récupérer les modifications:
oc rollout resume deployment/<deployment-name>
$ oc rollout resume deployment/<deployment-name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow À titre d’exemple:
oc rollout resume deployment/elasticsearch-cdm-0-1
$ oc rollout resume deployment/elasticsearch-cdm-0-1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
deployment.extensions/elasticsearch-cdm-0-1 resumed
deployment.extensions/elasticsearch-cdm-0-1 resumed
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Il y a un nouveau pod. Après que la gousse a un conteneur prêt, vous pouvez passer au prochain déploiement.
oc get pods -l component=elasticsearch-
$ oc get pods -l component=elasticsearch-
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
NAME READY STATUS RESTARTS AGE elasticsearch-cdm-5ceex6ts-1-dcd6c4c7c-jpw6k 2/2 Running 0 22h elasticsearch-cdm-5ceex6ts-2-f799564cb-l9mj7 2/2 Running 0 22h elasticsearch-cdm-5ceex6ts-3-585968dc68-k7kjr 2/2 Running 0 22h
NAME READY STATUS RESTARTS AGE elasticsearch-cdm-5ceex6ts-1-dcd6c4c7c-jpw6k 2/2 Running 0 22h elasticsearch-cdm-5ceex6ts-2-f799564cb-l9mj7 2/2 Running 0 22h elasticsearch-cdm-5ceex6ts-3-585968dc68-k7kjr 2/2 Running 0 22h
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Après que les déploiements soient terminés, réinitialisez le pod pour refuser les déploiements:
oc rollout pause deployment/<deployment-name>
$ oc rollout pause deployment/<deployment-name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow À titre d’exemple:
oc rollout pause deployment/elasticsearch-cdm-0-1
$ oc rollout pause deployment/elasticsearch-cdm-0-1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
deployment.extensions/elasticsearch-cdm-0-1 paused
deployment.extensions/elasticsearch-cdm-0-1 paused
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Assurez-vous que le cluster Elasticsearch est dans un état vert ou jaune:
oc exec <any_es_pod_in_the_cluster> -c elasticsearch -- es_util --query=_cluster/health?pretty=true
$ oc exec <any_es_pod_in_the_cluster> -c elasticsearch -- es_util --query=_cluster/health?pretty=true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow NoteLorsque vous avez effectué un déploiement sur le pod Elasticsearch que vous avez utilisé dans les commandes précédentes, le pod n’existe plus et vous avez besoin d’un nouveau nom de pod ici.
À titre d’exemple:
oc exec elasticsearch-cdm-5ceex6ts-1-dcd6c4c7c-jpw6 -c elasticsearch -- es_util --query=_cluster/health?pretty=true
$ oc exec elasticsearch-cdm-5ceex6ts-1-dcd6c4c7c-jpw6 -c elasticsearch -- es_util --query=_cluster/health?pretty=true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Assurez-vous que cette valeur de paramètre est verte ou jaune avant de procéder.
- Lorsque vous avez modifié la carte de configuration Elasticsearch, répétez ces étapes pour chaque pod Elasticsearch.
Après que tous les déploiements pour le cluster aient été déployés, réactivez l’équilibrage en dur:
oc exec <any_es_pod_in_the_cluster> -c elasticsearch -- es_util --query="_cluster/settings" -XPUT -d '{ "persistent": { "cluster.routing.allocation.enable" : "all" } }'
$ oc exec <any_es_pod_in_the_cluster> -c elasticsearch -- es_util --query="_cluster/settings" -XPUT -d '{ "persistent": { "cluster.routing.allocation.enable" : "all" } }'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow À titre d’exemple:
oc exec elasticsearch-cdm-5ceex6ts-1-dcd6c4c7c-jpw6 -c elasticsearch -- es_util --query="_cluster/settings" -XPUT -d '{ "persistent": { "cluster.routing.allocation.enable" : "all" } }'
$ oc exec elasticsearch-cdm-5ceex6ts-1-dcd6c4c7c-jpw6 -c elasticsearch -- es_util --query="_cluster/settings" -XPUT -d '{ "persistent": { "cluster.routing.allocation.enable" : "all" } }'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Augmentez les pods de collecteurs afin qu’ils envoient de nouveaux journaux à Elasticsearch.
oc -n openshift-logging patch daemonset/collector -p '{"spec":{"template":{"spec":{"nodeSelector":{"logging-infra-collector": "true"}}}}}'
$ oc -n openshift-logging patch daemonset/collector -p '{"spec":{"template":{"spec":{"nodeSelector":{"logging-infra-collector": "true"}}}}}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
10.4.10. Exposer le service de log store comme itinéraire Copier lienLien copié sur presse-papiers!
Le log store déployé avec l’enregistrement n’est pas accessible depuis l’extérieur du cluster de journalisation. Il est possible d’activer un itinéraire avec terminaison de recryptage pour un accès externe au service log store pour les outils qui accèdent à ses données.
En externe, vous pouvez accéder au log store en créant un itinéraire recrypté, votre Red Hat OpenShift Service sur le jeton AWS et le certificat CA installé. Ensuite, accédez à un nœud qui héberge le service log store avec une requête cURL qui contient:
- L’autorisation: Porteur ${token}
- La route Elasticsearch recrypte et une demande d’API Elasticsearch.
En interne, vous pouvez accéder au service de log store à l’aide du cluster de log store IP, que vous pouvez obtenir en utilisant l’une des commandes suivantes:
oc get service elasticsearch -o jsonpath={.spec.clusterIP} -n openshift-logging
$ oc get service elasticsearch -o jsonpath={.spec.clusterIP} -n openshift-logging
Exemple de sortie
172.30.183.229
172.30.183.229
oc get service elasticsearch -n openshift-logging
$ oc get service elasticsearch -n openshift-logging
Exemple de sortie
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE elasticsearch ClusterIP 172.30.183.229 <none> 9200/TCP 22h
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
elasticsearch ClusterIP 172.30.183.229 <none> 9200/TCP 22h
Il est possible de vérifier l’adresse IP du cluster avec une commande similaire à ce qui suit:
oc exec elasticsearch-cdm-oplnhinv-1-5746475887-fj2f8 -n openshift-logging -- curl -tlsv1.2 --insecure -H "Authorization: Bearer ${token}" "https://172.30.183.229:9200/_cat/health"
$ oc exec elasticsearch-cdm-oplnhinv-1-5746475887-fj2f8 -n openshift-logging -- curl -tlsv1.2 --insecure -H "Authorization: Bearer ${token}" "https://172.30.183.229:9200/_cat/health"
Exemple de sortie
% Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 29 100 29 0 0 108 0 --:--:-- --:--:-- --:--:-- 108
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 29 100 29 0 0 108 0 --:--:-- --:--:-- --:--:-- 108
Conditions préalables
- Les opérateurs Red Hat OpenShift Logging et Elasticsearch doivent être installés.
- Il faut avoir accès au projet pour pouvoir accéder aux journaux.
Procédure
Exposer le log store à l’extérieur:
Changement au projet openshift-logging:
oc project openshift-logging
$ oc project openshift-logging
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Extrayez le certificat CA du log store et écrivez dans le fichier admin-ca:
oc extract secret/elasticsearch --to=. --keys=admin-ca
$ oc extract secret/elasticsearch --to=. --keys=admin-ca
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
admin-ca
admin-ca
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Créez l’itinéraire pour le service log store en tant que fichier YAML:
Créez un fichier YAML avec ce qui suit:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Ajoutez le log store CA certifcate ou utilisez la commande dans l’étape suivante. Il n’est pas nécessaire de définir les paramètres spec.tls.key, spec.tls.certificate et spec.tls.caCertificate requis par certains itinéraires recryptés.
Exécutez la commande suivante pour ajouter le certificat CA log store à l’itinéraire YAML que vous avez créé à l’étape précédente:
cat ./admin-ca | sed -e "s/^/ /" >> <file-name>.yaml
$ cat ./admin-ca | sed -e "s/^/ /" >> <file-name>.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Créer l’itinéraire:
oc create -f <file-name>.yaml
$ oc create -f <file-name>.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
route.route.openshift.io/elasticsearch created
route.route.openshift.io/elasticsearch created
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Assurez-vous que le service Elasticsearch est exposé:
Bénéficiez du jeton de ce compte de service pour être utilisé dans la demande:
token=$(oc whoami -t)
$ token=$(oc whoami -t)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Définissez l’itinéraire de recherche élastique que vous avez créé en tant que variable d’environnement.
routeES=`oc get route elasticsearch -o jsonpath={.spec.host}`
$ routeES=`oc get route elasticsearch -o jsonpath={.spec.host}`
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Afin de vérifier que l’itinéraire a été créé avec succès, exécutez la commande suivante qui accède à Elasticsearch à travers la route exposée:
curl -tlsv1.2 --insecure -H "Authorization: Bearer ${token}" "https://${routeES}"
curl -tlsv1.2 --insecure -H "Authorization: Bearer ${token}" "https://${routeES}"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow La réponse semble similaire à ce qui suit:
Exemple de sortie
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
10.4.11. Éliminer les composants inutilisés si vous n’utilisez pas le log store Elasticsearch par défaut Copier lienLien copié sur presse-papiers!
En tant qu’administrateur, dans le cas rare que vous transmettiez des journaux vers un magasin de journal tiers et que vous n’utilisiez pas le log store Elasticsearch par défaut, vous pouvez supprimer plusieurs composants inutilisés de votre cluster de journalisation.
En d’autres termes, si vous n’utilisez pas le log store Elasticsearch par défaut, vous pouvez supprimer les composants de visualisation internes Elasticsearch logStore et Kibana de la ressource personnalisée ClusterLogging (CR). La suppression de ces composants est facultative, mais permet d’économiser des ressources.
Conditions préalables
Assurez-vous que votre transmetteur de journaux n’envoie pas de données de journal au cluster interne Elasticsearch par défaut. Inspectez le fichier ClusterLogForwarder CR YAML que vous avez utilisé pour configurer le transfert de journaux. Assurez-vous qu’il n’a pas d’élément outputRefs qui spécifie par défaut. À titre d’exemple:
outputRefs: - default
outputRefs: - default
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Imaginez que le ClusterLogForwarder CR transmet les données de log vers le cluster Elasticsearch interne, et vous supprimez le composant logStore du ClusterLogging CR. Dans ce cas, le cluster Elasticsearch interne ne sera pas présent pour stocker les données du journal. Cette absence peut entraîner une perte de données.
Procédure
Éditer la ressource personnalisée ClusterLogging (CR) dans le projet openshift-logging:
oc edit ClusterLogging instance
$ oc edit ClusterLogging instance
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - En cas de présence, retirez les strophes logStore et visualisation du ClusterLogging CR.
Conserver la strophe de collection du ClusterLogging CR. Le résultat devrait ressembler à l’exemple suivant:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Assurez-vous que les pods de collecteur sont redéployés:
oc get pods -l component=collector -n openshift-logging
$ oc get pods -l component=collector -n openshift-logging
Copy to Clipboard Copied! Toggle word wrap Toggle overflow