2.13. Surveillance des événements et des journaux des clusters

La possibilité de surveiller et d'auditer un cluster OpenShift Container Platform est un élément important de la protection du cluster et de ses utilisateurs contre une utilisation inappropriée.

Il existe deux sources principales d'informations au niveau du cluster qui sont utiles à cette fin : les événements et la journalisation.

2.13.1. Observer les événements de la grappe

Les administrateurs de clusters sont invités à se familiariser avec le type de ressource Event et à consulter la liste des événements système pour déterminer ceux qui les intéressent. Les événements sont associés à un espace de noms, soit l'espace de noms de la ressource à laquelle ils sont liés, soit, pour les événements de grappe, l'espace de noms default. L'espace de noms par défaut contient les événements pertinents pour le contrôle ou l'audit d'une grappe, tels que les événements de nœuds et les événements de ressources liés aux composants de l'infrastructure.

L'API principale et la commande oc ne fournissent pas de paramètres permettant de limiter la liste des événements aux seuls événements liés aux nœuds. Une approche simple consisterait à utiliser la commande grep:

$ oc get event -n default | grep Node

Exemple de sortie

1h         20h         3         origin-node-1.example.local   Node      Normal    NodeHasDiskPressure   ...

Une approche plus souple consiste à produire les événements sous une forme que d'autres outils peuvent traiter. Par exemple, l'exemple suivant utilise l'outil jq contre une sortie JSON pour extraire uniquement les événements NodeHasDiskPressure:

$ oc get events -n default -o json \
  | jq '.items[] | select(.involvedObject.kind == "Node" and .reason == "NodeHasDiskPressure")'

Exemple de sortie

{
  "apiVersion": "v1",
  "count": 3,
  "involvedObject": {
    "kind": "Node",
    "name": "origin-node-1.example.local",
    "uid": "origin-node-1.example.local"
  },
  "kind": "Event",
  "reason": "NodeHasDiskPressure",
  ...
}

Les événements liés à la création, à la modification ou à la suppression de ressources peuvent également être de bons candidats pour détecter une mauvaise utilisation du cluster. La requête suivante, par exemple, peut être utilisée pour rechercher des tirages excessifs d'images :

$ oc get events --all-namespaces -o json \
  | jq '[.items[] | select(.involvedObject.kind == "Pod" and .reason == "Pulling")] | length'

Exemple de sortie

4

Note

Lorsqu'un espace de noms est supprimé, ses événements le sont également. Les événements peuvent également expirer et sont supprimés pour éviter d'encombrer le stockage etcd. Les événements ne sont pas stockés de manière permanente et des interrogations fréquentes sont nécessaires pour obtenir des statistiques au fil du temps.

2.13.2. Enregistrement

À l'aide de la commande oc log, vous pouvez consulter les journaux des conteneurs, les configurations de construction et les déploiements en temps réel. Différents utilisateurs peuvent avoir un accès différent aux journaux :

  • Les utilisateurs qui ont accès à un projet peuvent voir les journaux de ce projet par défaut.
  • Les utilisateurs ayant un rôle d'administrateur peuvent accéder à tous les journaux de conteneurs.

Pour sauvegarder vos logs en vue d'un audit et d'une analyse ultérieurs, vous pouvez activer la fonctionnalité complémentaire cluster-logging pour collecter, gérer et afficher les logs du système, du conteneur et de l'audit. Vous pouvez déployer, gérer et mettre à jour OpenShift Logging via OpenShift Elasticsearch Operator et Red Hat OpenShift Logging Operator.

2.13.3. Journaux d'audit

Avec audit logs, vous pouvez suivre une séquence d'activités associées au comportement d'un utilisateur, d'un administrateur ou d'un autre composant d'OpenShift Container Platform. La journalisation de l'audit de l'API est effectuée sur chaque serveur.