Skip to main content
Bitwarden Server provides various metrics and telemetry capabilities for monitoring system health, performance, and usage patterns. This guide covers the built-in metrics systems and integration with observability platforms.

Built-in Metrics

Security Task Metrics

Bitwarden tracks security task completion metrics for organizations: Endpoint:
Response:
Implementation: src/Core/Vault/Queries/GetTaskMetricsForOrganizationQuery.cs

Organization Report Metrics

Comprehensive reporting metrics for organization security posture: Available Metrics:
  • Application count and risk assessment
  • Member count and risk assessment
  • Password count and risk assessment
  • Critical application/member/password tracking
Data Structure:
Implementation: src/Core/Dirt/Models/Data/OrganizationReportMetricsData.cs

Performance Metrics

Rate Limiting Metrics

Bitwarden implements distributed rate limiting with configurable thresholds:
Tracked Metrics:
  • Request counts per endpoint
  • Rate limit violations
  • Redis timeout occurrences
  • Client IP patterns
Configuration: src/Api/appsettings.json:72

Database Performance

Monitor database query performance through health checks and connection metrics: SQL Server Connection:
Health Check Integration:
  • Connection pool utilization
  • Query execution times
  • Failed connection attempts
See src/Api/Utilities/ServiceCollectionExtensions.cs:86 for implementation.

Application Metrics

Service Startup Metrics

Each service logs startup completion:
Implementation: src/Api/Startup.cs:364

Request Metrics

The request logging middleware tracks:
  • Request count by endpoint
  • Response time percentiles
  • HTTP status code distribution
  • Error rates
Middleware: src/SharedWeb/Utilities/RequestLoggingMiddleware.cs

Event Metrics

Bitwarden’s event system provides comprehensive audit and usage metrics:

Event Types Tracked

  • User authentication events
  • Cipher access and modifications
  • Collection operations
  • Organization changes
  • Security task updates
  • Service account activity

Event Storage Options

Azure Queue Storage:
Azure Service Bus:
RabbitMQ:
Implementation: src/Core/Dirt/Services/Implementations/EventService.cs

Observability Integration

Prometheus

While Bitwarden doesn’t natively export Prometheus metrics, you can expose them using middleware: Example Integration:
  1. Add the Prometheus ASP.NET Core package:
  1. Configure in Startup:
  1. Scrape configuration:

Application Insights

For Azure deployments, integrate with Application Insights:

OpenTelemetry

Modern observability using OpenTelemetry:

Custom Metrics Collection

Database Metrics

Query repository metrics directly:

Performance Counters

Monitor .NET performance counters:

Monitoring Dashboards

Grafana Dashboard Example

Key Metrics to Monitor

Request Latency

P50, P95, P99 response times for critical endpoints like /api/ciphers and /connect/token

Error Rates

HTTP 4xx and 5xx response rates, exception counts, failed authentication attempts

Database Health

Connection pool utilization, query duration, failed queries, deadlocks

Resource Utilization

CPU usage, memory consumption, GC pause times, thread pool saturation

Alerting

Critical Alerts

High Error Rate:
Database Connection Issues:
Health Check Failures:

Performance Tuning

Rate Limit Optimization

Adjust rate limits based on metrics:

Database Connection Pooling

Optimize based on connection metrics:

Best Practices

1

Establish Baselines

Monitor metrics for 1-2 weeks to establish normal operating baselines for your deployment.
2

Set Meaningful Alerts

Configure alerts based on baselines, not arbitrary thresholds. Focus on symptoms, not causes.
3

Monitor Trends

Track metrics over time to identify gradual degradation before it becomes critical.
4

Correlate Metrics

Use distributed tracing to correlate metrics across services for root cause analysis.
5

Review Regularly

Periodically review and adjust monitoring based on actual production patterns.
Avoid metric overload. Focus on metrics that indicate actual problems or predict failures. Too many metrics can obscure important signals.