2.10. Configuration du stockage en écriture à distance

Vous pouvez configurer le stockage en écriture à distance pour permettre à Prometheus d'envoyer les métriques ingérées à des systèmes distants pour un stockage à long terme. Cette opération n'a aucune incidence sur la manière dont Prometheus stocke les métriques, ni sur la durée de ce stockage.

Conditions préalables

  • If you are configuring core OpenShift Container Platform monitoring components:

    • Vous avez accès au cluster en tant qu'utilisateur ayant le rôle cluster-admin.
    • Vous avez créé l'objet cluster-monitoring-config ConfigMap .
  • If you are configuring components that monitor user-defined projects:

    • Vous avez accès au cluster en tant qu'utilisateur ayant le rôle cluster-admin ou en tant qu'utilisateur ayant le rôle user-workload-monitoring-config-edit dans le projet openshift-user-workload-monitoring.
    • Vous avez créé l'objet user-workload-monitoring-config ConfigMap .
  • Vous avez installé l'OpenShift CLI (oc).
  • Vous avez configuré un point d'extrémité compatible avec l'écriture à distance (tel que Thanos) et vous connaissez l'URL du point d'extrémité. Consultez la documentation sur les points d'extrémité et le stockage à distance de Prometheus pour obtenir des informations sur les points d'extrémité compatibles avec la fonction d'écriture à distance.
  • Vous avez configuré les informations d'authentification dans un objet Secret pour le point de terminaison d'écriture à distance. Vous devez créer le secret dans le même espace de noms que l'objet Prometheus pour lequel vous configurez l'écriture à distance : l'espace de noms openshift-monitoring pour la surveillance de la plate-forme par défaut ou l'espace de noms openshift-user-workload-monitoring pour la surveillance de la charge de travail de l'utilisateur.

    Attention

    Pour réduire les risques de sécurité, utilisez HTTPS et l'authentification pour envoyer des mesures à un point final.

Procédure

Suivez ces étapes pour configurer l'écriture à distance pour la surveillance de la plate-forme par défaut dans la carte de configuration cluster-monitoring-config de l'espace de noms openshift-monitoring.

Note

Si vous configurez l'écriture à distance pour l'instance Prometheus qui surveille les projets définis par l'utilisateur, apportez des modifications similaires à la carte de configuration user-workload-monitoring-config dans l'espace de noms openshift-user-workload-monitoring. Notez que le composant de carte de configuration Prometheus est appelé prometheus dans l'objet user-workload-monitoring-config ConfigMap et non prometheusK8s, comme c'est le cas dans l'objet cluster-monitoring-config ConfigMap .

  1. Modifiez l'objet cluster-monitoring-config ConfigMap dans le projet openshift-monitoring:

    $ oc -n openshift-monitoring edit configmap cluster-monitoring-config
  2. Ajouter une section remoteWrite: sous data/config.yaml/prometheusK8s.
  3. Ajoutez une URL de point final et des informations d'authentification dans cette section :

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: cluster-monitoring-config
      namespace: openshift-monitoring
    data:
      config.yaml: |
        prometheusK8s:
          remoteWrite:
          - url: "https://remote-write-endpoint.example.com" 1
            <endpoint_authentication_credentials> 2
    1
    L'URL du point de terminaison d'écriture à distance.
    2
    La méthode d'authentification et les informations d'identification pour le point de terminaison. Les méthodes d'authentification actuellement prises en charge sont AWS Signature Version 4, l'authentification par HTTP et l'en-tête de requête Authorization, l'authentification de base, OAuth 2.0 et le client TLS. Voir Supported remote write authentication settings ci-dessous pour des exemples de configuration des méthodes d'authentification prises en charge.
  4. Ajouter des valeurs de configuration après les informations d'authentification :

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: cluster-monitoring-config
      namespace: openshift-monitoring
    data:
      config.yaml: |
        prometheusK8s:
          remoteWrite:
          - url: "https://remote-write-endpoint.example.com"
            <endpoint_authentication_credentials>
            <write_relabel_configs> 1
    1
    Les paramètres de configuration du relabel d'écriture.

    Pour <write_relabel_configs>, substituez une liste de configurations d'étiquetage en écriture pour les mesures que vous souhaitez envoyer au point de terminaison distant.

    L'exemple suivant montre comment transmettre une métrique unique appelée my_metric:

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: cluster-monitoring-config
      namespace: openshift-monitoring
    data:
      config.yaml: |
        prometheusK8s:
          remoteWrite:
          - url: "https://remote-write-endpoint.example.com"
            writeRelabelConfigs:
            - sourceLabels: [__name__]
              regex: 'my_metric'
              action: keep

    Voir la documentation Prometheus relabel_config pour plus d'informations sur les options de configuration de write relabel.

  5. Enregistrez le fichier pour appliquer les modifications à l'objet ConfigMap. Les pods concernés par la nouvelle configuration redémarrent automatiquement.

    Note

    Les configurations appliquées à l'objet user-workload-monitoring-config ConfigMap ne sont pas activées à moins qu'un administrateur de cluster n'ait activé la surveillance pour les projets définis par l'utilisateur.

    Avertissement

    L'enregistrement des modifications apportées à un objet de surveillance ConfigMap peut entraîner le redéploiement des pods et d'autres ressources dans le projet concerné. L'enregistrement des modifications peut également redémarrer les processus de surveillance en cours dans ce projet.

2.10.1. Paramètres d'authentification de l'écriture à distance pris en charge

Vous pouvez utiliser différentes méthodes pour vous authentifier auprès d'un point de terminaison d'écriture distant. Les méthodes d'authentification actuellement prises en charge sont AWS Signature Version 4, l'authentification de base, l'autorisation, OAuth 2.0 et le client TLS. Le tableau suivant fournit des détails sur les méthodes d'authentification prises en charge pour l'écriture à distance.

Méthode d'authentificationChamp de la carte de configurationDescription

Signature AWS version 4

sigv4

Cette méthode utilise l'authentification AWS Signature Version 4 pour signer les demandes. Vous ne pouvez pas utiliser cette méthode simultanément avec l'autorisation, OAuth 2.0 ou l'authentification de base.

authentification de base

basicAuth

L'authentification de base définit l'en-tête d'autorisation sur chaque demande d'écriture à distance avec le nom d'utilisateur et le mot de passe configurés.

autorisation

authorization

L'autorisation définit l'en-tête Authorization sur chaque demande d'écriture à distance en utilisant le jeton configuré.

OAuth 2.0

oauth2

Une configuration OAuth 2.0 utilise le type de subvention des informations d'identification du client. Prometheus récupère un jeton d'accès sur tokenUrl avec l'ID et le secret client spécifiés pour accéder au point de terminaison d'écriture distant. Vous ne pouvez pas utiliser cette méthode en même temps que l'autorisation, la signature AWS Version 4 ou l'authentification de base.

Client TLS

tlsConfig

Une configuration client TLS spécifie le certificat de l'autorité de certification, le certificat du client et les informations du fichier clé du client utilisés pour s'authentifier avec le serveur de point d'accès en écriture distant à l'aide de TLS. L'exemple de configuration suppose que vous avez déjà créé un fichier de certificat CA, un fichier de certificat client et un fichier de clé client.

2.10.1.1. Emplacement de la carte de configuration pour les paramètres d'authentification

La figure suivante montre l'emplacement de la configuration de l'authentification dans l'objet ConfigMap pour la surveillance de la plate-forme par défaut.

apiVersion: v1
kind: ConfigMap
metadata:
  name: cluster-monitoring-config
  namespace: openshift-monitoring
data:
  config.yaml: |
    prometheusK8s:
      remoteWrite:
      - url: "https://remote-write-endpoint.example.com" 1
        <endpoint_authentication_details> 2
1
L'URL du point de terminaison d'écriture à distance.
2
Détails de la configuration requise pour la méthode d'authentification du point de terminaison. Les méthodes d'authentification actuellement prises en charge sont Amazon Web Services (AWS) Signature Version 4, autorisation, authentification de base, OAuth 2.0 et client TLS.
Note

Si vous configurez l'écriture à distance pour l'instance Prometheus qui surveille les projets définis par l'utilisateur, modifiez la carte de configuration user-workload-monitoring-config dans l'espace de noms openshift-user-workload-monitoring. Notez que le composant de la carte de configuration Prometheus est appelé prometheus dans l'objet user-workload-monitoring-config ConfigMap et non prometheusK8s, comme c'est le cas dans l'objet cluster-monitoring-config ConfigMap .

2.10.1.2. Exemple de paramètres d'authentification de l'écriture à distance

Les exemples suivants montrent différents paramètres d'authentification que vous pouvez utiliser pour vous connecter à un point final d'écriture à distance. Chaque exemple montre également comment configurer un objet Secret correspondant qui contient les informations d'authentification et d'autres paramètres pertinents. Chaque exemple configure l'authentification pour une utilisation avec la surveillance de la plate-forme par défaut dans l'espace de noms openshift-monitoring.

Exemple de YAML pour l'authentification AWS Signature Version 4

L'exemple suivant montre les paramètres d'un secret sigv4 nommé sigv4-credentials dans l'espace de noms openshift-monitoring.

apiVersion: v1
kind: Secret
metadata:
  name: sigv4-credentials
  namespace: openshift-monitoring
stringData:
  accessKey: <AWS_access_key> 1
  secretKey: <AWS_secret_key> 2
type: Opaque
1
La clé d'accès à l'API AWS.
2
La clé secrète de l'API AWS.

Les exemples suivants montrent des paramètres d'authentification d'écriture à distance AWS Signature Version 4 qui utilisent un objet Secret nommé sigv4-credentials dans l'espace de noms openshift-monitoring:

apiVersion: v1
kind: ConfigMap
metadata:
  name: cluster-monitoring-config
  namespace: openshift-monitoring
data:
  config.yaml: |
    prometheusK8s:
      remoteWrite:
      - url: "https://authorization.example.com/api/write"
        sigv4:
          region: <AWS_region> 1
          accessKey:
            name: sigv4-credentials 2
            key: accessKey 3
          secretKey:
            name: sigv4-credentials 4
            key: secretKey 5
          profile: <AWS_profile_name> 6
          roleArn: <AWS_role_arn> 7
1
La région AWS.
2 4
Le nom de l'objet Secret contenant les identifiants d'accès à l'API AWS.
3
La clé qui contient la clé d'accès à l'API AWS dans l'objet Secret spécifié.
5
La clé qui contient la clé secrète de l'API AWS dans l'objet Secret spécifié.
6
Le nom du profil AWS utilisé pour l'authentification.
7
L'identifiant unique de l'Amazon Resource Name (ARN) attribué à votre rôle.

Exemple de YAML pour l'authentification de base

L'exemple suivant montre des paramètres d'authentification de base pour un objet Secret nommé rw-basic-auth dans l'espace de noms openshift-monitoring:

apiVersion: v1
kind: Secret
metadata:
  name: rw-basic-auth
  namespace: openshift-monitoring
stringData:
  user: <basic_username> 1
  password: <basic_password> 2
type: Opaque
1
Le nom d'utilisateur.
2
Le mot de passe.

L'exemple suivant montre une configuration d'écriture à distance basicAuth qui utilise un objet Secret nommé rw-basic-auth dans l'espace de noms openshift-monitoring. Il suppose que vous avez déjà configuré les informations d'authentification pour le point final.

apiVersion: v1
kind: ConfigMap
metadata:
  name: cluster-monitoring-config
  namespace: openshift-monitoring
data:
  config.yaml: |
    prometheusK8s:
      remoteWrite:
      - url: "https://basicauth.example.com/api/write"
        basicAuth:
          username:
            name: rw-basic-auth 1
            key: user 2
          password:
            name: rw-basic-auth 3
            key: password 4
1 3
Le nom de l'objet Secret qui contient les informations d'authentification.
2
La clé qui contient le nom d'utilisateur dans l'objet Secret spécifié.
4
La clé qui contient le mot de passe dans l'objet Secret spécifié.

Exemple de YAML pour l'authentification avec un jeton de porteur à l'aide d'un objet Secret

L'exemple suivant montre les paramètres du jeton de support pour un objet Secret nommé rw-bearer-auth dans l'espace de noms openshift-monitoring:

apiVersion: v1
kind: Secret
metadata:
  name: rw-bearer-auth
  namespace: openshift-monitoring
stringData:
  token: <authentication_token> 1
type: Opaque
1
Le jeton d'authentification.

Les exemples suivants montrent des paramètres de carte de configuration de jetons de support qui utilisent un objet Secret nommé rw-bearer-auth dans l'espace de noms openshift-monitoring:

apiVersion: v1
kind: ConfigMap
metadata:
  name: cluster-monitoring-config
  namespace: openshift-monitoring
data:
  config.yaml: |
    enableUserWorkload: true
    prometheusK8s:
      remoteWrite:
      - url: "https://authorization.example.com/api/write"
        authorization:
          type: Bearer 1
          credentials:
            name: rw-bearer-auth 2
            key: token 3
1
Le type d'authentification de la demande. La valeur par défaut est Bearer.
2
Le nom de l'objet Secret qui contient les informations d'authentification.
3
La clé qui contient le jeton d'authentification dans l'objet Secret spécifié.

Exemple de YAML pour l'authentification OAuth 2.0

L'exemple suivant montre des paramètres OAuth 2.0 pour un objet Secret nommé oauth2-credentials dans l'espace de noms openshift-monitoring:

apiVersion: v1
kind: Secret
metadata:
  name: oauth2-credentials
  namespace: openshift-monitoring
stringData:
  id: <oauth2_id> 1
  secret: <oauth2_secret> 2
  token: <oauth2_authentication_token> 3
type: Opaque
1
L'identifiant Oauth 2.0.
2
Le secret OAuth 2.0.
3
Le jeton OAuth 2.0.

La figure suivante présente un exemple de configuration de l'authentification d'écriture à distance oauth2 qui utilise un objet Secret nommé oauth2-credentials dans l'espace de noms openshift-monitoring:

apiVersion: v1
kind: ConfigMap
metadata:
  name: cluster-monitoring-config
  namespace: openshift-monitoring
data:
  config.yaml: |
    prometheusK8s:
      remoteWrite:
      - url: "https://test.example.com/api/write"
        oauth2:
          clientId:
            secret:
              name: oauth2-credentials 1
              key: id 2
          clientSecret:
            name: oauth2-credentials 3
            key: secret 4
          tokenUrl: https://example.com/oauth2/token 5
          scopes: 6
          - <scope_1>
          - <scope_2>
          endpointParams: 7
            param1: <parameter_1>
            param2: <parameter_2>
1 3
Le nom de l'objet Secret correspondant. Notez que ClientId peut également faire référence à un objet ConfigMap, bien que clientSecret doive faire référence à un objet Secret.
2 4
La clé qui contient les informations d'identification OAuth 2.0 dans l'objet Secret spécifié.
5
L'URL utilisée pour obtenir un jeton avec les adresses clientId et clientSecret.
6
Les champs d'application OAuth 2.0 pour la demande d'autorisation. Ces champs d'application limitent les données auxquelles les jetons peuvent accéder.
7
Les paramètres de la demande d'autorisation OAuth 2.0 requis pour le serveur d'autorisation.

Exemple de YAML pour l'authentification du client TLS

L'exemple suivant montre des exemples de paramètres client TLS pour un objet tls Secret nommé mtls-bundle dans l'espace de noms openshift-monitoring.

apiVersion: v1
kind: Secret
metadata:
  name: mtls-bundle
  namespace: openshift-monitoring
data:
  ca.crt: <ca_cert> 1
  client.crt: <client_cert> 2
  client.key: <client_key> 3
type: tls
1
Le certificat CA dans le conteneur Prometheus avec lequel valider le certificat du serveur.
2
Le certificat du client pour l'authentification avec le serveur.
3
La clé du client.

L'exemple suivant montre une configuration d'authentification d'écriture à distance tlsConfig qui utilise un objet TLS Secret nommé mtls-bundle.

apiVersion: v1
kind: ConfigMap
metadata:
  name: cluster-monitoring-config
  namespace: openshift-monitoring
data:
  config.yaml: |
    prometheusK8s:
      remoteWrite:
      - url: "https://remote-write-endpoint.example.com"
        tlsConfig:
          ca:
            secret:
              name: mtls-bundle 1
              key: ca.crt 2
          cert:
            secret:
              name: mtls-bundle 3
              key: client.crt 4
          keySecret:
            name: mtls-bundle 5
            key: client.key 6
1 3 5
Le nom de l'objet Secret correspondant qui contient les informations d'authentification TLS. Notez que ca et cert peuvent alternativement faire référence à un objet ConfigMap, bien que keySecret doive faire référence à un objet Secret.
2
La clé de l'objet Secret spécifié qui contient le certificat de l'autorité de certification pour le point d'extrémité.
4
La clé de l'objet Secret spécifié qui contient le certificat du client pour le point d'extrémité.
6
La clé de l'objet Secret spécifié qui contient le secret de la clé du client.

Ressources supplémentaires