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-configConfigMap.
-
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-adminou en tant qu'utilisateur ayant le rôleuser-workload-monitoring-config-editdans le projetopenshift-user-workload-monitoring. -
Vous avez créé l'objet
user-workload-monitoring-configConfigMap.
-
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
Secretpour 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-monitoringpour la surveillance de la plate-forme par défaut ou l'espace de nomsopenshift-user-workload-monitoringpour la surveillance de la charge de travail de l'utilisateur.ImportantPour 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-configConfigMapdans 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: keepVoir 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-configConfigMapne 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
ConfigMappeut 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 Copier lienLien copié sur presse-papiers!
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 Copier lienLien copié sur presse-papiers!
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"
<endpoint_authentication_details>
- 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 Copier lienLien copié sur presse-papiers!
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>
secretKey: <AWS_secret_key>
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>
accessKey:
name: sigv4-credentials
key: accessKey
secretKey:
name: sigv4-credentials
key: secretKey
profile: <AWS_profile_name>
roleArn: <AWS_role_arn>
- 1
- La région AWS.
- 2 4
- Le nom de l'objet
Secretcontenant les identifiants d'accès à l'API AWS. - 3
- La clé qui contient la clé d'accès à l'API AWS dans l'objet
Secretspécifié. - 5
- La clé qui contient la clé secrète de l'API AWS dans l'objet
Secretspé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>
password: <basic_password>
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
key: user
password:
name: rw-basic-auth
key: password
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>
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
credentials:
name: rw-bearer-auth
key: token
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>
secret: <oauth2_secret>
token: <oauth2_authentication_token>
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
key: id
clientSecret:
name: oauth2-credentials
key: secret
tokenUrl: https://example.com/oauth2/token
scopes:
- <scope_1>
- <scope_2>
endpointParams:
param1: <parameter_1>
param2: <parameter_2>
- 1 3
- Le nom de l'objet
Secretcorrespondant. Notez queClientIdpeut également faire référence à un objetConfigMap, bien queclientSecretdoive faire référence à un objetSecret. - 2 4
- La clé qui contient les informations d'identification OAuth 2.0 dans l'objet
Secretspécifié. - 5
- L'URL utilisée pour obtenir un jeton avec les adresses
clientIdetclientSecret. - 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>
client.crt: <client_cert>
client.key: <client_key>
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
key: ca.crt
cert:
secret:
name: mtls-bundle
key: client.crt
keySecret:
name: mtls-bundle
key: client.key
- 1 3 5
- Le nom de l'objet
Secretcorrespondant qui contient les informations d'authentification TLS. Notez quecaetcertpeuvent alternativement faire référence à un objetConfigMap, bien quekeySecretdoive faire référence à un objetSecret. - 2
- La clé de l'objet
Secretspécifié qui contient le certificat de l'autorité de certification pour le point d'extrémité. - 4
- La clé de l'objet
Secretspécifié qui contient le certificat du client pour le point d'extrémité. - 6
- La clé de l'objet
Secretspécifié qui contient le secret de la clé du client.