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
.
-
Vous avez accès au cluster en tant qu'utilisateur ayant le rôle
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ôleuser-workload-monitoring-config-edit
dans le projetopenshift-user-workload-monitoring
. -
Vous avez créé l'objet
user-workload-monitoring-config
ConfigMap
.
-
Vous avez accès au cluster en tant qu'utilisateur ayant le rôle
-
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 nomsopenshift-monitoring
pour la surveillance de la plate-forme par défaut ou l'espace de nomsopenshift-user-workload-monitoring
pour la surveillance de la charge de travail de l'utilisateur.AttentionPour 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
.
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
.
Modifiez l'objet
cluster-monitoring-config
ConfigMap
dans le projetopenshift-monitoring
:$ oc -n openshift-monitoring edit configmap cluster-monitoring-config
-
Ajouter une section
remoteWrite:
sousdata/config.yaml/prometheusK8s
. 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.
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.
Enregistrez le fichier pour appliquer les modifications à l'objet
ConfigMap
. Les pods concernés par la nouvelle configuration redémarrent automatiquement.NoteLes 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.AvertissementL'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'authentification | Champ de la carte de configuration | Description |
---|---|---|
Signature AWS version 4 |
| 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 |
| 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 |
|
L'autorisation définit l'en-tête |
OAuth 2.0 |
|
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 |
Client TLS |
| 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.
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
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
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
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
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
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 queClientId
peut également faire référence à un objetConfigMap
, bien queclientSecret
doive faire référence à un objetSecret
. - 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
etclientSecret
. - 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
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 queca
etcert
peuvent alternativement faire référence à un objetConfigMap
, bien quekeySecret
doive faire référence à un objetSecret
. - 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
- Voir Configuration des points de terminaison compatibles avec l'écriture à distance pour connaître les étapes de création d'un point de terminaison compatible avec l'écriture à distance (tel que Thanos).
- Pour savoir comment optimiser les paramètres d'écriture à distance en fonction des différents cas d'utilisation, reportez-vous à la section Réglage des paramètres d' écriture à distance.
-
Voir Comprendre les secrets pour connaître les étapes de création et de configuration des objets
Secret
dans OpenShift Container Platform. - Voir la référence de l'API Prometheus REST pour l'écriture à distance pour plus d'informations sur les champs facultatifs supplémentaires.