RavenDB

Supported OS Linux

Integration version1.0.0

To find out if this integration is available in your organization, see your Datadog Integrations page or ask your organization administrator.

To initiate an exception request to enable this integration for your organization, email support@ddog-gov.com.

Overview

RavenDB is a high-performance NoSQL document database designed for modern applications that require scalability, reliability, and low-latency data access. It provides ACID transactions, automatic indexing, full-text search, distributed clustering, and built-in high availability.

The RavenDB integration collects metrics directly from RavenDB’s Prometheus/OpenMetrics endpoint, giving operators comprehensive visibility into the health and performance of their deployments.

Monitor your RavenDB deployment

Monitor key operational metrics including:

  • Cluster health and node status
  • CPU, memory, disk, and network utilization
  • Database activity and request throughput
  • Indexing performance and errors
  • Storage utilization and I/O
  • Licensing and certificate status

Built-in dashboards

The integration includes pre-built dashboards that provide an operational overview of your RavenDB environment. Visualize resource utilization, database performance, indexing activity, storage, networking, and cluster health from a single place, helping identify bottlenecks and troubleshoot issues faster.

Optional log collection

Collect RavenDB logs alongside metrics to correlate operational events with infrastructure performance. This unified view simplifies troubleshooting and accelerates root cause analysis.

Secure and production ready

The integration supports both unsecured and TLS-secured RavenDB deployments, including client certificate authentication. It is designed for single-node servers as well as distributed RavenDB clusters, making it suitable for development, staging, and production environments.

Setup

Metric collection

  • RavenDB exposes metrics in Prometheus/OpenMetrics format at an administrative endpoint: /admin/monitoring/v1/prometheus.

  • Edit the ravendb/conf.yaml file in the conf.d/ directory of the Datadog Agent. Minimal configuration example:

   init_config:
   instances:
     - openmetrics_endpoint: "http://localhost:8080/admin/monitoring/v1/prometheus"
  • Edit the ravendb/conf.yaml file in the conf.d/ directory of the Datadog Agent. See the sample ravendb/conf.yaml for all available configuration options.

    Minimal configuration example:

   init_config:
   instances:
     - openmetrics_endpoint: "http://localhost:8080/admin/monitoring/v1/prometheus"

Secured endpoints (TLS)

If the RavenDB metrics endpoint is exposed over HTTPS and requires client authentication, configure TLS options:

instances:
  - openmetrics_endpoint: "https://<host>/admin/monitoring/v1/prometheus"
    tls_cert: /path/to/client.crt
    tls_private_key: /path/to/client.key

Ensure the Datadog Agent user has read access to the certificate and key files.

Cluster deployments

For RavenDB clusters:

  • Install and configure the Datadog Agent on each node
  • Configure each Agent instance to scrape the local node’s metrics endpoint
  • Use tags to correlate metrics across nodes and clusters

Example:

instances:
  - openmetrics_endpoint: "<RAVENDB_METRICS_URL>"
    tags:
      - ravendb_cluster:dev-cluster
      - ravendb_node:A

Log collection (optional)

To collect RavenDB logs, enable log collection in datadog.yaml:

`logs_enabled: true`

Then add a log configuration to ravendb.d/conf.yaml:

logs:
  - type: file
    path: /var/log/ravendb/*.log
    service: ravendb
    source: ravendb

    log_processing_rules:
      - type: multi_line
        name: ravendb_multiline
        pattern: '^\d{4}-\d{2}-\d{2}'

Ensure the Datadog Agent user has read permissions on the log files.

Data Collected

Metrics

ravendb.openmetrics.health
(gauge)
Health status of the RavenDB OpenMetrics endpoint (1 = scrape successful and 0 = scrape failed).
ravendb.server.info
(gauge)
Server information exposed by RavenDB.
ravendb.server.uptime.seconds
(gauge)
Server uptime in seconds.
Shown as second
ravendb.server.process.id
(gauge)
Process ID of the RavenDB server.
ravendb.cluster.current.term
(gauge)
Current cluster term.
ravendb.cluster.index
(gauge)
Current cluster index.
ravendb.cpu.machine.usage
(gauge)
Overall CPU usage of the machine.
Shown as percent
ravendb.cpu.process.usage
(gauge)
CPU usage of the RavenDB process.
Shown as percent
ravendb.cpu.processor.count
(gauge)
Number of logical processors on the machine.
ravendb.cpu.assigned.processor.count
(gauge)
Number of processors assigned to the RavenDB process.
ravendb.cpu.thread.pool.available.worker.threads
(gauge)
Number of available worker threads in the thread pool.
ravendb.cpu.thread.pool.available.completion.port.threads
(gauge)
Number of available completion port threads in the thread pool.
ravendb.cpu.machine.io.wait
(gauge)
Percentage of time the CPU waits for I/O operations.
Shown as percent
ravendb.backup.current.number.of.running.backups
(gauge)
Current number of running backups.
ravendb.backup.max.number.of.concurrent.backups
(gauge)
Maximum number of concurrent backups allowed.
ravendb.memory.allocated.bytes
(gauge)
Amount of memory allocated by the process.
Shown as byte
ravendb.memory.installed.bytes
(gauge)
Total installed physical memory.
Shown as byte
ravendb.memory.physical.bytes
(gauge)
Total physical memory available.
Shown as byte
ravendb.memory.low.memory.severity
(gauge)
Current low memory severity level.
ravendb.memory.total.dirty.bytes
(gauge)
Total amount of dirty memory.
Shown as byte
ravendb.memory.total.swap.size.bytes
(gauge)
Total swap size available on the system.
Shown as byte
ravendb.memory.total.swap.usage.bytes
(gauge)
Total swap space currently in use.
Shown as byte
ravendb.memory.working.set.swap.usage.bytes
(gauge)
Swap usage of the working set.
Shown as byte
ravendb.available.memory.for.processing.bytes
(gauge)
Available memory for processing.
Shown as byte
ravendb.managed.memory.bytes
(gauge)
Managed memory used by the process.
Shown as byte
ravendb.unmanaged.memory.bytes
(gauge)
Unmanaged memory used by the process.
Shown as byte
ravendb.gc.index
(gauge)
GC index of the last collection.
ravendb.gc.generation
(gauge)
Generation collected by the last GC.
ravendb.gc.compacted
(gauge)
Whether the last GC was compacting (1=true and 0=false).
ravendb.gc.concurrent
(gauge)
Whether the last GC was concurrent (1=true and 0=false).
ravendb.gc.finalization.pending.count
(gauge)
Number of objects pending finalization.
ravendb.gc.fragmented.mb
(gauge)
Heap fragmentation after GC.
Shown as megabyte
ravendb.gc.heap.size.mb
(gauge)
Total GC heap size after collection.
Shown as megabyte
ravendb.gc.high.memory.load.threshold.mb
(gauge)
High memory load threshold at GC time.
Shown as megabyte
ravendb.gc.memory.load.mb
(gauge)
Memory load at GC time.
Shown as megabyte
ravendb.gc.pause.durations.1.seconds
(gauge)
First GC pause duration.
Shown as second
ravendb.gc.pause.durations.2.seconds
(gauge)
Second GC pause duration.
Shown as second
ravendb.gc.pause.time.percentage
(gauge)
Percentage of time spent paused for GC.
Shown as percent
ravendb.gc.pinned.objects.count
(gauge)
Number of pinned objects during GC.
ravendb.gc.promoted.mb
(gauge)
Memory promoted during GC.
Shown as megabyte
ravendb.gc.total.available.memory.mb
(gauge)
Total available memory for GC.
Shown as megabyte
ravendb.gc.total.committed.mb
(gauge)
Total committed managed heap size.
Shown as megabyte
ravendb.network.tcp.active.connections
(gauge)
Number of active TCP connections.
ravendb.network.concurrent.requests.count
(gauge)
Number of concurrent network requests.
ravendb.network.last.request.time.in.seconds
(gauge)
Time since the last network request in seconds.
Shown as second
ravendb.network.total.requests
(count)
Total number of network requests received by the server.
ravendb.certificate.server.certificate.expiration.left.seconds
(gauge)
Time left until the server certificate expires in seconds.
Shown as second
ravendb.cluster.node.state
(gauge)
Current state of the cluster node.
ravendb.databases.loaded.count
(gauge)
Number of databases currently loaded.
ravendb.databases.total.count
(gauge)
Total number of databases.
ravendb.server.storage.io.read.operations
(count)
Total number of storage read I/O operations.
ravendb.server.storage.io.write.operations
(count)
Total number of storage write I/O operations.
ravendb.server.storage.read.throughput.bytes
(gauge)
Storage read throughput in bytes.
Shown as byte
ravendb.server.storage.write.throughput.bytes
(gauge)
Storage write throughput in bytes.
Shown as byte
ravendb.server.storage.queue.length
(gauge)
Length of the storage I/O queue.
ravendb.server.storage.total.free.space.bytes
(gauge)
Total free storage space available.
Shown as byte
ravendb.server.disk.system.store.used.data.file.size.bytes
(gauge)
Used size of system store data files.
Shown as byte
ravendb.server.disk.system.store.total.data.file.size.bytes
(gauge)
Total size of system store data files.
Shown as byte
ravendb.server.disk.remaining.storage.space.percentage
(gauge)
Remaining storage space percentage.
Shown as percent
ravendb.license.type
(gauge)
Current license type.
ravendb.license.expiration.left.seconds
(gauge)
Time left until license expiration in seconds.
Shown as second
ravendb.license.utilized.cpu.cores
(gauge)
Number of CPU cores utilized by the license.
ravendb.license.max.cores
(gauge)
Maximum number of CPU cores allowed by the license.
ravendb.database.uptime.seconds
(gauge)
Database uptime in seconds.
Shown as second
ravendb.database.time.since.last.backup.seconds
(gauge)
Time since the last database backup in seconds.
Shown as second
ravendb.database.documents.count
(gauge)
Number of documents in the database.
ravendb.database.revisions.count
(gauge)
Number of document revisions in the database.
ravendb.database.attachments.count
(gauge)
Number of attachments in the database.
ravendb.database.unique.attachments.count
(gauge)
Number of unique attachments in the database.
ravendb.database.alerts.count
(gauge)
Number of active database alerts.
ravendb.database.rehabs.count
(gauge)
Number of database rehabs.
ravendb.database.performance.hints.count
(gauge)
Number of database performance hints.
ravendb.database.replication.factor
(gauge)
Database replication factor.
ravendb.database.statistics.doc.puts.per.second
(gauge)
Number of document puts per second.
ravendb.database.statistics.map.index.indexes.per.second
(gauge)
Number of map index operations per second.
ravendb.database.statistics.map.reduce.index.mapped.per.second
(gauge)
Number of map-reduce index map operations per second.
ravendb.database.statistics.map.reduce.index.reduced.per.second
(gauge)
Number of map-reduce index reduce operations per second.
ravendb.database.statistics.requests.per.second
(gauge)
Number of database requests per second.
ravendb.database.statistics.requests.count
(count)
Total number of database requests.
ravendb.database.statistics.request.average.duration.seconds
(gauge)
Average duration of database requests in seconds.
Shown as second
ravendb.database.indexes.count
(gauge)
Total number of database indexes.
ravendb.database.indexes.stale.count
(gauge)
Number of stale database indexes.
ravendb.database.indexes.errors.count
(gauge)
Number of database indexes with errors.
ravendb.database.indexes.static.count
(gauge)
Number of static database indexes.
ravendb.database.indexes.auto.count
(gauge)
Number of auto database indexes.
ravendb.database.indexes.idle.count
(gauge)
Number of idle database indexes.
ravendb.database.indexes.disabled.count
(gauge)
Number of disabled database indexes.
ravendb.database.indexes.errored.count
(gauge)
Number of errored database indexes.
ravendb.database.storage.documents.allocated.data.file.bytes
(gauge)
Allocated document data file size in bytes.
Shown as byte
ravendb.database.storage.documents.used.data.file.bytes
(gauge)
Used document data file size in bytes.
Shown as byte
ravendb.database.storage.indexes.allocated.data.file.bytes
(gauge)
Allocated index data file size in bytes.
Shown as byte
ravendb.database.storage.indexes.used.data.file.bytes
(gauge)
Used index data file size in bytes.
Shown as byte
ravendb.database.storage.total.allocated.storage.file.bytes
(gauge)
Total allocated database storage file size in bytes.
Shown as byte
ravendb.database.storage.total.free.space.bytes
(gauge)
Total free database storage space in bytes.
Shown as byte
ravendb.database.storage.io.read.operations
(count)
Total number of database storage read I/O operations.
ravendb.database.storage.io.write.operations
(count)
Total number of database storage write I/O operations.
ravendb.database.storage.read.throughput.bytes
(gauge)
Database storage read throughput in bytes.
Shown as byte
ravendb.database.storage.write.throughput.bytes
(gauge)
Database storage write throughput in bytes.
Shown as byte
ravendb.database.storage.queue.length
(gauge)
Length of the database storage I/O queue.
ravendb.index.errors
(gauge)
Number of indexing errors.
ravendb.index.is.invalid
(gauge)
Indicates whether the index is invalid.
ravendb.index.priority
(gauge)
Priority level of the index.
ravendb.index.state
(gauge)
Current state of the index.
ravendb.index.lock.mode
(gauge)
Current lock mode of the index.
ravendb.archived.data.processing.behavior
(gauge)
Archived data processing behavior.
ravendb.index.status
(gauge)
Current status of the index.
ravendb.index.type
(gauge)
Type of the index.
ravendb.index.entries.count
(gauge)
Number of entries in the index.
ravendb.index.time.since.last.indexing.seconds
(gauge)
Time since the last indexing operation in seconds.
Shown as second
ravendb.index.time.since.last.query.seconds
(gauge)
Time since the last query against the index in seconds.
Shown as second
ravendb.index.mapped.per.second
(gauge)
Number of map operations per second for the index.
ravendb.index.reduced.per.second
(gauge)
Number of reduce operations per second for the index.
ravendb.collection.documents.count
(gauge)
Number of documents in the collection.
ravendb.collection.documents.size.bytes
(gauge)
Total size of documents in the collection in bytes.
Shown as byte
ravendb.collection.revisions.size.bytes
(gauge)
Total size of revisions in the collection in bytes.
Shown as byte
ravendb.collection.tombstones.size.bytes
(gauge)
Total size of tombstones in the collection in bytes.
Shown as byte
ravendb.collection.total.size.bytes
(gauge)
Total size of the collection in bytes.
Shown as byte

Uninstallation

To uninstall the RavenDB integration, run:

datadog-agent integration remove ravendb

If you manually installed the integration package, remove the corresponding Python wheel from the Agent environment.

Optionally:

  • Remove ravendb.d/conf.yaml
  • Disable log collection for RavenDB
  • Restart the Datadog Agent

Support

Need help? Contact RavenDB’s support team at support@ravendb.net.

Further Reading

Additional helpful documentation, links, and articles: