Présentation
Ce check surveille la santé du cluster Vault et les changements de leader.
Configuration
Installation
Le check Vault est inclus avec le package de l’Agent Datadog. Vous n’avez donc rien d’autre à installer sur votre serveur.
Prérequis
Vérifiez que vous avez activé les métriques Prometheus dans la configuration de Vault.
Pour garantir le bon fonctionnement du check Vault, vous devez activer l’accès non authentifié aux métriques Vault (Vault 1.3.0+) ou fournir un token client Vault :
Pour activer l’accès non authentifié, définissez le paramètre unauthenticated_metrics_access
de Vault sur true
. Cette opération permet d’accéder sans authentification à l’endpoint /v1/sys/metrics
.
Remarque : pour recueillir des métriques, l’endpoint /sys/metrics
requiert Vault 1.1.0 ou ultérieur.
Pour utiliser un token client Vault, suivez l’exemple ci-dessous reposant sur la méthode d’authentification JWT. Vous pouvez toutefois utiliser d’autres méthodes d’authentification.
L’intégration Vault nécessite la configuration suivante :
Contenu de `metrics_policy.hcl` :
path "sys/metrics*" {
capabilities = ["read", "list"]
}
Rôle et stratégie de configuration :
$ vault policy write metrics /path/to/metrics_policy.hcl
$ vault auth enable jwt
$ vault write auth/jwt/config jwt_supported_algs=RS256 jwt_validation_pubkeys=@<CHEMIN_VERS_PEM_PUBLIC>
$ vault write auth/jwt/role/datadog role_type=jwt bound_audiences=<AUDIENCE> user_claim=name token_policies=metrics
$ vault agent -config=/path/to/agent_config.hcl
Contenu de agent_config.hcl
:
exit_after_auth = true
pid_file = "/tmp/agent_pid"
auto_auth {
method "jwt" {
config = {
path = "<CHEMIN_CLAIM_JWT>"
role = "datadog"
}
}
sink "file" {
config = {
path = "<CHEMIN_TOKEN_CLIENT>"
}
}
}
vault {
address = "http://0.0.0.0:8200"
}
Configuration
Host
Pour configurer ce check lorsque l’Agent est exécuté sur un host :
Modifiez le fichier vault.d/conf.yaml
dans le dossier conf.d/
à la racine du répertoire de configuration de votre Agent pour commencer à recueillir vos données de performance vault. Consultez le fichier d’exemple vault.d/conf.yaml pour découvrir toutes les options de configuration disponibles.
Configuration pour faire fonctionner l’intégration sans token (avec le paramètre de configuration Vault unauthenticated_metrics_access
défini sur true) :
init_config:
instances:
## @param api_url - string - required
## URL of the Vault to query.
#
- api_url: http://localhost:8200/v1
## @param no_token - boolean - optional - default: false
## Attempt metric collection without a token.
#
no_token: true
Configuration pour faire fonctionner l’intégration avec un token client :
init_config:
instances:
## @param api_url - string - required
## URL of the Vault to query.
#
- api_url: http://localhost:8200/v1
## @param client_token - string - optional
## Client token necessary to collect metrics.
#
client_token: <CLIENT_TOKEN>
## @param client_token_path - string - optional
## Path to a file containing the client token. Overrides `client_token`.
## The token will be re-read after every authorization error.
#
# client_token_path: <CLIENT_TOKEN_PATH>
Redémarrez l’Agent.
Environnement conteneurisé
Consultez la documentation relative aux modèles d’intégration Autodiscovery pour découvrir comment appliquer les paramètres ci-dessous à un environnement conteneurisé.
Paramètre | Valeur |
---|
<NOM_INTÉGRATION> | vault |
<CONFIG_INIT> | vide ou {} |
<CONFIG_INSTANCE> | {"api_url": "http://%%host%%:8200/v1"} |
INSTANCE_CONFIG
doit être personnalisé en fonction de votre configuration d’authentification Vault. Pour consulter un exemple de configuration, reportez-vous à la section Host ci-dessus.
Collecte de logs
Disponible à partir des versions > 6.0 de l’Agent
La collecte de logs est désactivée par défaut dans l’Agent Datadog. Vous devez l’activer dans datadog.yaml
:
Configurez Vault de façon à activer les logs d’audit et serveur.
Les logs d’audit doivent être activés par un utilisateur disposant des privilèges et des stratégies nécessaires. Consultez la section Enabling audit devices (en anglais) pour en savoir plus.
vault audit enable file file_path=/vault/vault-audit.log
Assurez-vous que les logs serveur sont écrits dans un fichier. Vous pouvez configurer les logs serveur statiques dans le script de lancement systemd de Vault.
Le script suivant permet d’écrire les logs dans /var/log/vault.log
.
...
[Service]
...
ExecStart=/bin/sh -c '/home/vagrant/bin/vault server -config=/home/vagrant/vault_nano/config/vault -log-level="trace" > /var/log/vault.log
...
Ajoutez ce bloc de configuration à votre fichier vault.d/conf.yaml
pour commencer à recueillir vos logs Vault :
logs:
- type: file
path: /vault/vault-audit.log
source: vault
service: "<SERVICE_NAME>"
- type: file
path: /var/log/vault.log
source: vault
service: "<SERVICE_NAME>"
Validation
Lancez la sous-commande status de l’Agent et cherchez vault
dans la section Checks.
Données collectées
Métriques
Événements
vault.leader_change
:
Cet événement se déclenche en cas de changement de leader du cluster.
Checks de service
vault.can_connect :
Renvoie CRITICAL
si l’Agent ne parvient pas à se connecter à Vault. Si ce n’est pas le cas, renvoie OK
.
vault.unsealed :
Renvoie CRITICAL
si Vault est scellé. Si ce n’est pas le cas, renvoie OK
.
vault.initialized :
Renvoie CRITICAL
si Vault n’est pas encore initialisé. Si ce n’est pas le cas, renvoie OK
.
vault.prometheus.health :
Renvoie CRITICAL
si le check ne parvient pas à se connecter à l’endpoint de métriques. Si ce n’est pas le cas, renvoie OK
.
Dépannage
Besoin d’aide ? Contactez l’assistance Datadog.
Pour aller plus loin
Documentation, liens et articles supplémentaires utiles :