HashiCorp Vault — Telemetry
1 minute read
Vault exposes detailed operational metrics via telemetry — request rates, latency, token counts, storage operations, and more.
Telemetry Backends
| Backend |
Configuration |
Use Case |
| Prometheus |
/v1/sys/metrics endpoint |
Pull-based monitoring |
| StatsD |
Push to StatsD server |
General monitoring |
| DogStatsD |
Push to Datadog agent |
Datadog integration |
| Stackdriver |
Push to GCP |
Google Cloud monitoring |
Enable Prometheus Metrics
# vault.hcl
telemetry {
# Prometheus metrics endpoint
prometheus_retention_time = "30s"
disable_hostname = true
# Optional: also send to StatsD
# statsd_address = "statsd.internal:8125"
}
listener "tcp" {
address = "0.0.0.0:8200"
tls_disable = true
# Enable unauthenticated metrics endpoint
telemetry {
unauthenticated_metrics_access = true
}
}
Access Metrics
# Unauthenticated (if enabled)
curl -s "$VAULT_ADDR/v1/sys/metrics?format=prometheus"
# Authenticated
curl -s -H "X-Vault-Token: $VAULT_TOKEN" \
"$VAULT_ADDR/v1/sys/metrics?format=prometheus"
Key Metrics
Request Metrics
| Metric |
Description |
vault.core.handle_request.count |
Total API requests |
vault.core.handle_request.duration |
Request latency |
vault.audit.log_request.count |
Audit log writes |
vault.audit.log_response.count |
Audit log responses |
Token Metrics
| Metric |
Description |
vault.token.create.count |
Tokens created |
vault.token.revoke.count |
Tokens revoked |
vault.token.lookup.count |
Token lookups |
Auth Metrics
| Metric |
Description |
vault.core.handle_login_request.count |
Login attempts |
vault.core.handle_login_request.duration |
Login latency |
Storage Metrics
| Metric |
Description |
vault.raft.commitTime |
Raft commit latency |
vault.raft.leader.lastContact |
Time since follower heard from leader |
vault.raft.applied_index |
Last applied Raft log index |
Secrets Engine Metrics
| Metric |
Description |
vault.secret.kv.count |
KV secret count |
vault.database.*.create |
Dynamic credential generation |
vault.pki.sign.count |
Certificates issued |
StatsD Configuration
telemetry {
statsd_address = "statsd.internal:8125"
# Prefix all metrics
metrics_prefix = "vault"
}
DogStatsD (Datadog)
telemetry {
dogstatsd_addr = "127.0.0.1:8125"
dogstatsd_tags = [
"env:production",
"service:vault",
"cluster:us-east"
]
}
Sample Prometheus Output
# HELP vault_core_handle_request Request handling time
# TYPE vault_core_handle_request summary
vault_core_handle_request{quantile="0.5"} 0.002
vault_core_handle_request{quantile="0.9"} 0.005
vault_core_handle_request{quantile="0.99"} 0.015
vault_core_handle_request_count 15423
# HELP vault_token_count Current number of tokens
# TYPE vault_token_count gauge
vault_token_count 234
# HELP vault_raft_leader_lastContact Last contact from leader
# TYPE vault_raft_leader_lastContact gauge
vault_raft_leader_lastContact 0.05
Quick Reference
| Config |
Purpose |
prometheus_retention_time |
How long to keep metrics in memory |
disable_hostname |
Remove hostname from metric names |
unauthenticated_metrics_access |
Allow metrics without auth |
statsd_address |
StatsD server address |
dogstatsd_addr |
Datadog agent address |
Next: Prometheus & Grafana