OpenShift

Supported OS Linux

Présentation

Red Hat OpenShift est une plateforme d’applications de conteneur open source basée sur l’orchestrateur de conteneurs Kubernetes pour le développement et le déploiement d’applications d’entreprise.

Il n’existe aucun check openshift distinct. Cette page décrit la configuration nécessaire pour activer la collecte des métriques propres à OpenShift dans l’Agent. Les données décrites ici sont recueillies par le check kubernetes_apiserver. La configuration de ce check est nécessaire pour recueillir les métriques openshift.*.

Configuration

Installation

Pour installer l’Agent, consultez les instructions d’installation de l’Agent pour Kubernetes. La configuration par défaut a été conçue pour OpenShift 3.7.0+ et OpenShift 4.0+, car elle repose sur des fonctionnalités et des endpoints inclus avec ces versions.

Configuration

Si vous déployez l’Agent Datadog en utilisant l’une des méthodes présentées dans les instructions d’installation ci-dessus, vous devez inclure les contraintes de contexte de sécurité (Security Context Constraints ou SCC) pour que l’Agent recueille des données. Suivez les instructions ci-dessous en fonction de votre déploiement.

Les SCC peuvent être appliquées directement dans le fichier values.yaml de votre Agent Datadog. Ajouter le bloc suivant sous la section agents: dans le fichier.

...
agents:
...
  podSecurity:
    securityContextConstraints:
      create: true
...

Vous pouvez appliquer ce bloc lors du déploiement initial de l’Agent. Vous pouvez également exécuter une commande helm upgrade une fois le changement apporté pour appliquer les SCC.

En fonction de vos besoins et des contraintes de sécurité de votre cluster, trois scénarios de déploiement sont pris en charge :

Contraintes de contexte de sécurité (SCC)RestreintesRéseau hostPersonnalisées
Surveillance de la couche KubernetesPrise en chargePrise en chargePrise en charge
Autodiscovery basé sur KubernetesPrise en chargePrise en chargePrise en charge
Admission des données DogstatsdNon prise en chargePrise en chargePrise en charge
Admission des traces d’APMNon prise en chargePrise en chargePrise en charge
Admission réseau des logsNon prise en chargePrise en chargePrise en charge
Métriques du réseau hostNon prise en chargePrise en chargePrise en charge
Surveillance de la couche DockerNon prise en chargeNon prise en chargePrise en charge
Collecte des logs de conteneurNon prise en chargeNon prise en chargePrise en charge
Surveillance des live containersNon prise en chargeNon prise en chargePrise en charge
Surveillance des live processesNon prise en chargeNon prise en chargePrise en charge
OpenShift 4.0+ : si vous avez utilisé le programme d'installation OpenShift sur un fournisseur de cloud pris en charge, vous devez déployer l'Agent avec hostNetwork: true dans le fichier de configuration datadog.yaml pour récupérer les tags et alias. L'accès aux serveurs de métadonnées à partir du réseau des POD est autrement impossible.

Collecte de logs

Consultez la section Collecte de logs Kubernetes pour en savoir plus.

Opérations avec SCC restreintes

Ce mode ne nécessite pas l’octroi d’autorisations spéciales au daemonset datadog-agent, à l’exception des autorisations RBAC qui permettent d’accéder à Kubelet et à l’APIserver. Pour commencer, utilisez ce modèle destiné à Kubelet.

La méthode d’ingestion conseillée pour Dogstatsd, APM et les logs consiste à binder l’Agent Datadog sur un port du host. Ainsi, l’IP cible reste fixe et peut facilement être identifiée par vos applications. Les SCC OpenShift restreintes par défaut ne permettent pas de binder sur un port du host. Vous pouvez configurer l’Agent de façon à ce qu’il effectue l’écoute sur sa propre adresse IP. Toutefois, dans ce cas-là, vous devez vous-même configurer la détection de cette IP depuis votre application.

L’Agent peut être lancé en mode sidecar, ce qui vous permet de l’exécuter dans le pod de votre application pour une identification simplifiée.

Host

Ajoutez l’autorisation allowHostPorts au pod, avec la SCC hostnetwork ou hostaccess standard, ou en créant votre propre SCC. Dans ce cas, vous pouvez ajouter les bindings de port appropriés dans les spécifications de vos pods :

ports:
  - containerPort: 8125
    name: dogstatsdport
    protocol: UDP
  - containerPort: 8126
    name: traceport
    protocol: TCP

SCC Datadog personnalisées pour un accès à toutes les fonctionnalités

Si SELinux est en mode permissif ou désactivé, activez la SCC hostaccess pour profiter de toutes les fonctionnalités. Si SELinux est en mode strict, il est conseillé d’accorder le type spc_t au pod datadog-agent. Pour déployer votre Agent, Datadog a créé une SCC datadog-agent que vous pouvez appliquer après la création du compte du service datadog-agent. Cette SCC accorde les autorisations suivantes :

  • allowHostPorts: true : permet de binder les admissions Dogstatsd/APM/Logs sur l’IP du nœud.
  • allowHostPID: true : permet la détection de l’origine des métriques DogStatsD envoyées par le socket Unix.
  • volumes: hostPath : accède au socket Docker et aux dossiers proc et cgroup du host afin de recueillir les métriques.
  • SELinux type: spc_t : accède au socket Docker et aux dossiers proc et cgroup de tous les processus afin de recueillir les métriques. Consultez la section Présentation du concept de conteneur avec super privilèges pour en savoir plus.
N'oubliez pas d'ajouter le compte de service datadog-agent à la SCC datadog-agent nouvellement créée en ajoutant system:serviceaccount:: à la section users.
OpenShift 4.0+ : si vous avez utilisé le programme d'installation OpenShift sur un fournisseur de cloud pris en charge, vous devez déployer l'Agent avec allowHostNetwork: true dans le fichier de configuration datadog.yaml pour récupérer les tags et alias des hosts. L'accès aux serveurs de métadonnées à partir du réseau des pods est autrement impossible.

Remarque : le socket Docker appartient au groupe root. Vous devez donc élever les privilèges de l’Agent pour pouvoir récupérer les métriques Docker. Pour exécuter le processus de l’Agent en tant qu’utilisateur root, vous pouvez configurer votre SCC de la façon suivante :

runAsUser:
  type: RunAsAny

Validation

Consultez kubernetes_apiserver

Données collectées

Métriques

openshift.clusterquota.cpu.used
(gauge)
Observed cpu usage by cluster resource quota for all namespaces
Shown as cpu
openshift.clusterquota.cpu.limit
(gauge)
Hard limit for cpu by cluster resource quota for all namespaces
Shown as cpu
openshift.clusterquota.cpu.remaining
(gauge)
Remaining available cpu by cluster resource quota for all namespaces
Shown as cpu
openshift.clusterquota.memory.used
(gauge)
Observed memory usage by cluster resource quota for all namespaces
Shown as byte
openshift.clusterquota.memory.limit
(gauge)
Hard limit for memory by cluster resource quota for all namespaces
Shown as byte
openshift.clusterquota.memory.remaining
(gauge)
Remaining available memory by cluster resource quota for all namespaces
Shown as byte
openshift.clusterquota.pods.used
(gauge)
Observed pods usage by cluster resource quota for all namespaces
openshift.clusterquota.pods.limit
(gauge)
Hard limit for pods by cluster resource quota for all namespaces
openshift.clusterquota.pods.remaining
(gauge)
Remaining available pods by cluster resource quota for all namespaces
openshift.clusterquota.services.used
(gauge)
Observed services usage by cluster resource quota for all namespaces
openshift.clusterquota.services.limit
(gauge)
Hard limit for services by cluster resource quota for all namespaces
openshift.clusterquota.services.remaining
(gauge)
Remaining available services by cluster resource quota for all namespaces
openshift.clusterquota.persistentvolumeclaims.used
(gauge)
Observed persistent volume claims usage by cluster resource quota for all namespaces
openshift.clusterquota.persistentvolumeclaims.limit
(gauge)
Hard limit for persistent volume claims by cluster resource quota for all namespaces
openshift.clusterquota.persistentvolumeclaims.remaining
(gauge)
Remaining available persistent volume claims by cluster resource quota for all namespaces
openshift.clusterquota.services.nodeports.used
(gauge)
Observed service node ports usage by cluster resource quota for all namespaces
openshift.clusterquota.services.nodeports.limit
(gauge)
Hard limit for service node ports by cluster resource quota for all namespaces
openshift.clusterquota.services.nodeports.remaining
(gauge)
Remaining available service node ports by cluster resource quota for all namespaces
openshift.clusterquota.services.loadbalancers.used
(gauge)
Observed service load balancers usage by cluster resource quota for all namespaces
openshift.clusterquota.services.loadbalancers.limit
(gauge)
Hard limit for service load balancers by cluster resource quota for all namespaces
openshift.clusterquota.services.loadbalancers.remaining
(gauge)
Remaining available service load balancers by cluster resource quota for all namespaces
openshift.appliedclusterquota.cpu.used
(gauge)
Observed cpu usage by cluster resource quota and namespace
Shown as cpu
openshift.appliedclusterquota.cpu.limit
(gauge)
Hard limit for cpu by cluster resource quota and namespace
Shown as cpu
openshift.appliedclusterquota.cpu.remaining
(gauge)
Remaining available cpu by cluster resource quota and namespace
Shown as cpu
openshift.appliedclusterquota.memory.used
(gauge)
Observed memory usage by cluster resource quota and namespace
Shown as byte
openshift.appliedclusterquota.memory.limit
(gauge)
Hard limit for memory by cluster resource quota and namespace
Shown as byte
openshift.appliedclusterquota.memory.remaining
(gauge)
Remaining available memory by cluster resource quota and namespace
Shown as byte
openshift.appliedclusterquota.pods.used
(gauge)
Observed pods usage by cluster resource quota and namespace
openshift.appliedclusterquota.pods.limit
(gauge)
Hard limit for pods by cluster resource quota and namespace
openshift.appliedclusterquota.pods.remaining
(gauge)
Remaining available pods by cluster resource quota and namespace
openshift.appliedclusterquota.services.used
(gauge)
Observed services usage by cluster resource quota and namespace
openshift.appliedclusterquota.services.limit
(gauge)
Hard limit for services by cluster resource quota and namespace
openshift.appliedclusterquota.services.remaining
(gauge)
Remaining available services by cluster resource quota and namespace
openshift.appliedclusterquota.persistentvolumeclaims.used
(gauge)
Observed persistent volume claims usage by cluster resource quota and namespace
openshift.appliedclusterquota.persistentvolumeclaims.limit
(gauge)
Hard limit for persistent volume claims by cluster resource quota and namespace
openshift.appliedclusterquota.persistentvolumeclaims.remaining
(gauge)
Remaining available persistent volume claims by cluster resource quota and namespace
openshift.appliedclusterquota.services.nodeports.used
(gauge)
Observed service node ports usage by cluster resource quota and namespace
openshift.appliedclusterquota.services.nodeports.limit
(gauge)
Hard limit for service node ports by cluster resource quota and namespace
openshift.appliedclusterquota.services.nodeports.remaining
(gauge)
Remaining available service node ports by cluster resource quota and namespace
openshift.appliedclusterquota.services.loadbalancers.used
(gauge)
Observed service load balancers usage by cluster resource quota and namespace
openshift.appliedclusterquota.services.loadbalancers.limit
(gauge)
Hard limit for service load balancers by cluster resource quota and namespace
openshift.appliedclusterquota.services.loadbalancers.remaining
(gauge)
Remaining available service load balancers by cluster resource quota and namespace
openshift.clusterquota.cpu.requests.used
(gauge)
Observed cpu usage by cluster resource for request

Événements

Le check OpenShift n’inclut aucun événement.

Checks de service

Le check OpenShift n’inclut aucun check de service.

Dépannage

Besoin d’aide ? Contactez l’assistance Datadog.