Skip to main content

JSON monitoring endpoints

The endpoints

Each endpoint returns metrics for one area of the server's operation:

EndpointReturns
/admin/monitoring/v1/serverServer-wide metrics, including CPU and memory usage, disk space, network activity, cluster state, license and certificate status, and backup activity.
/admin/monitoring/v1/databasesPer-database metrics, including document and index counts, request and indexing rates, and storage sizes.
/admin/monitoring/v1/indexesPer-index metrics for each database, including state, priority, errors, and indexing rates.
/admin/monitoring/v1/collectionsPer-collection metrics for each database: document counts and storage sizes.
/admin/monitoring/v1/etlsHealth, error, and throughput metrics for each ETL task in each database.
/admin/monitoring/v1/ai-tasksHealth, error, and throughput metrics for each AI task in each database.
/admin/monitoring/v1/cdc-sinksHealth and error metrics for each CDC Sink task in each database.

Example: ETL task metrics for one database

The etls endpoint's response for a server with one database that runs a single ETL task:

{
"PublicServerUrl": "https://a.example.com",
"NodeTag": "A",
"Results": [
{
"DatabaseName": "Northwind",
"Etls": [
{
"ProcessName": "SqlEtlToWarehouse/OrdersScript",
"ErrorsCount": 0,
"HealthStatus": "Healthy",
"LastSuccessfulBatchTimeInSec": 3.5,
"DocumentsProcessedPerSec": 12.4
}
]
}
]
}

All the endpoints except server return this shape: the server's public URL and node tag, then a Results array with one entry per database.

Querying the endpoints

The endpoints respond to HTTP GET requests.
To read an endpoint, append its path to the server's URL. You can open the resulting address in a browser, or have your monitoring tool poll it on a schedule.

Example: Reading the databases endpoint

Using curl to read the databases endpoint of a local server:

curl http://localhost:8080/admin/monitoring/v1/databases

The per-database endpoints report on every loaded database by default.
To narrow the response to specific databases, add a name query parameter for each database you want included.

Example: ETL metrics for two databases

Using the name parameter to read ETL metrics for the Northwind and Orders databases only:

curl "http://localhost:8080/admin/monitoring/v1/etls?name=Northwind&name=Orders"

Note that the endpoints cover only databases that are currently loaded in memory.
A database stays out of the responses if the server has not loaded it yet (e.g. since a restart), or has unloaded it after the database remained unused for a configurable period (15 minutes by default, set by the Databases.MaxIdleTimeInSec configuration key).
Naming such a database in a name query parameter of an endpoint's URL does not load the database: the request succeeds, but the response carries no entry for this database.

Access and licensing

On a secure server, a request to these endpoints must present a client certificate with Operator clearance or higher.
On an unsecure server, no certificate is needed.

Example: Reading an endpoint on a secure server

Using curl with a client certificate:

curl --cert <path-to-cert> --key <path-to-key> "https://<server-url>/admin/monitoring/v1/server"

If the server's license does not include the Monitoring Endpoints feature, requests to these endpoints fail with HTTP status 402 Payment Required and an error naming the missing feature.

Fields returned by the endpoints

The server endpoint

/admin/monitoring/v1/server returns a single JSON object, holding a few top-level fields and a nested group of fields per area.
The tables below list these fields, starting with the top-level fields and continuing group by group.

The top-level fields:

FieldDescription
ServerVersionThe server's version, e.g. 7.2
ServerFullVersionThe server's full version string
UpTimeInSecTime since the server started, in seconds
ServerProcessIdProcess ID of the server process

server: Config

The server's configured addresses:

FieldDescription
ServerUrlsThe URLs the server listens on
PublicServerUrlThe URL the server publishes to clients, when one is configured
TcpServerUrlsThe URLs the server listens on for TCP connections, when configured
PublicTcpServerUrlsThe URLs the server publishes for TCP connections, when configured

server: Backup

Backup activity on the server:

FieldDescription
CurrentNumberOfRunningBackupsNumber of backup tasks currently running
MaxNumberOfConcurrentBackupsMaximum number of backup tasks that can run concurrently

server: Cpu

Processor usage of the server process and the machine:

FieldDescription
ProcessUsageCPU usage of the server process, in percent
MachineUsageCPU usage of the whole machine, in percent
MachineIoWaitTime the machine's processors spend waiting for IO, in percent; null when the platform does not provide this statistic
ProcessorCountNumber of processors on the machine
AssignedProcessorCountNumber of processors assigned to the server process
ThreadPoolAvailableWorkerThreadsNumber of worker threads currently available in the thread pool
ThreadPoolAvailableCompletionPortThreadsNumber of completion port threads currently available in the thread pool

server: Memory

Memory usage of the server process and the machine:

FieldDescription
AllocatedMemoryInMbMemory allocated by the server process (its working set), in MB
LowMemorySeverityThe server's low-memory state: None, Low, or ExtremelyLow
PhysicalMemoryInMbPhysical memory available to the machine, in MB
InstalledMemoryInMbPhysical memory installed on the machine, in MB
TotalSwapSizeInMbTotal swap space on the machine, in MB
TotalSwapUsageInMbSwap space currently in use, in MB
WorkingSetSwapUsageInMbSwap space used by the server process's working set, in MB
TotalDirtyInMbDirty memory held by the scratch buffers, in MB
AvailableMemoryForProcessingInMbMemory the server can still use for processing, in MB
ManagedMemoryInBytesMemory allocated on the .NET managed heap, in bytes
UnmanagedMemoryInBytesUnmanaged memory allocated by the server, in bytes

server: Gc

Details of the most recent GC (Garbage Collection), in a single nested object named Any. If no garbage collection has run since the server started, Any is null.

FieldDescription
IndexThe sequence number of this collection since the process started
CompactedIndicates if this collection compacted the heap
ConcurrentIndicates if this was a background (concurrent) collection
GenerationThe highest generation this collection collected
PauseTimePercentageThe share of the process's run time spent paused for garbage collection, in percent
PauseDurationsInMsThe pause durations of this collection, in milliseconds; a background collection pauses twice
TotalHeapSizeAfterBytesTotal heap size after this collection, in bytes
Gen0HeapSizeSize and fragmentation of generation 0, before and after this collection
Gen1HeapSizeSize and fragmentation of generation 1, before and after this collection
Gen2HeapSizeSize and fragmentation of generation 2, before and after this collection
LargeObjectHeapSizeSize and fragmentation of the LOH (Large Object Heap), before and after this collection
PinnedObjectHeapSizeSize and fragmentation of the POH (Pinned Object Heap), before and after this collection
FinalizationPendingCountNumber of objects waiting for finalization
FragmentedInMbFragmented memory in the heap, in MB
HeapSizeInMbHeap size, in MB
HighMemoryLoadThresholdInMbThe memory load the garbage collector considers high, in MB
MemoryLoadInMbThe machine's memory load as the garbage collector observed it, in MB
PinnedObjectsCountNumber of pinned objects this collection encountered
PromotedInMbMemory promoted to a higher generation in this collection, in MB
TotalAvailableMemoryInMbMemory available to the garbage collector, in MB
TotalCommittedInMbMemory committed by the garbage collector, in MB

Each of the five heap-size fields holds an object with SizeBeforeBytes, SizeAfterBytes, FragmentationBeforeBytes, and FragmentationAfterBytes, all in bytes.


server: Disk

Storage usage of the server store and its drive:

FieldDescription
SystemStoreUsedDataFileSizeInMbUsed size of the server store's data file, in MB
SystemStoreTotalDataFileSizeInMbAllocated size of the server store's data file, in MB
TotalFreeSpaceInMbRemaining free space on the drive that holds the server store, in MB
RemainingStorageSpacePercentageRemaining free space, as a percentage of the drive's total size
IoReadOperationsRead operations per second on the drive
IoWriteOperationsWrite operations per second on the drive
ReadThroughputInKbRead throughput on the drive, in KB per second
WriteThroughputInKbWrite throughput on the drive, in KB per second
QueueLengthThe drive's IO queue length

The IO fields are null when the platform does not provide disk statistics.
On a server that runs in memory, the free-space fields return 0 and the IO fields return null.


server: License

The server's license:

FieldDescription
TypeThe license type, e.g. Community, Professional, or Enterprise
ExpirationLeftInSecTime left until the license expires, in seconds; 0 when the license has expired, null when it has no expiration date
UtilizedCpuCoresNumber of CPU cores this node uses under the license
MaxCoresMaximum number of CPU cores the license allows

server: Network

Requests and connections:

FieldDescription
TcpActiveConnectionsNumber of active TCP connections on the machine, IPv4 and IPv6 combined
ConcurrentRequestsCountNumber of requests the server is currently handling
TotalRequestsTotal number of requests since the server started
RequestsPerSecRequests per second (one-minute rate)
LastRequestTimeInSecTime since the last request, in seconds; null when no request has arrived yet
LastAuthorizedNonClusterAdminRequestTimeInSecTime since the last authorized request from a client without Cluster Admin clearance, in seconds; null when no such request has arrived yet

server: Certificate

The server certificate:

FieldDescription
ServerCertificateExpirationLeftInSecTime left until the server certificate expires, in seconds; 0 when the certificate has expired, -1 on an unsecure server
WellKnownAdminCertificatesThumbprints of the well-known admin certificates configured on the server
WellKnownAdminIssuersThumbprints of the well-known admin issuer certificates configured on the server

server: Cluster

The node's cluster membership:

FieldDescription
NodeTagThe node's tag
NodeStateThe node's cluster state: Passive, Candidate, Follower, LeaderElect, or Leader
CurrentTermThe cluster's current Raft term
IndexThe last Raft index committed on this node
IdThe cluster's ID

server: Databases

The server's databases:

FieldDescription
TotalCountNumber of databases on the server
LoadedCountNumber of databases currently loaded in memory

server: Etls

ETL tasks across all loaded databases, counted by health state:

FieldDescription
CountNumber of ETL tasks
ErrorsCountTotal number of errors recorded for ETL tasks
HealthyEtlsCountNumber of ETL tasks in the Healthy health state
ImpairedEtlsCountNumber of ETL tasks in the Impaired health state
FailedEtlsCountNumber of ETL tasks in the Failed health state

server: AiTasks

AI tasks (Embeddings Generation and GenAI tasks) across all loaded databases:

FieldDescription
CountNumber of AI tasks
ErrorsCountTotal number of errors recorded for AI tasks
HealthyTasksCountNumber of AI tasks in the Healthy health state
ImpairedTasksCountNumber of AI tasks in the Impaired health state
FailedTasksCountNumber of AI tasks in the Failed health state

server: CdcSinks

CDC Sink tasks across all loaded databases:

FieldDescription
CountNumber of CDC Sink tasks
ErrorsCountTotal number of errors recorded for CDC Sink tasks
HealthyCdcSinksCountNumber of CDC Sink tasks in the Healthy health state
ImpairedCdcSinksCountNumber of CDC Sink tasks in the Impaired health state
FailedCdcSinksCountNumber of CDC Sink tasks in the Failed health state

The databases endpoint

/admin/monitoring/v1/databases returns one entry per loaded database.
Each entry holds a few top-level fields and a nested group of fields per area; the tables below list these fields, starting with the top-level fields and continuing group by group.

The top-level fields:

FieldDescription
DatabaseNameThe database's name
DatabaseIdThe database's ID
UptimeInSecTime since the database was loaded, in seconds
TimeSinceLastBackupInSecTime since the database's last backup, in seconds; null when no backup has run yet

databases: Counts

Document and state counts:

FieldDescription
DocumentsNumber of documents in the database
RevisionsNumber of revisions in the database
AttachmentsNumber of attachments in the database
UniqueAttachmentsNumber of unique attachments in the database
AlertsNumber of alerts raised for the database
RehabsNumber of nodes where the database is in a Rehab state
PerformanceHintsNumber of performance hints raised for the database
ReplicationFactorThe database's replication factor

databases: Statistics

Activity rates of the database:

FieldDescription
DocPutsPerSecDocument puts per second (one-minute rate)
MapIndexIndexesPerSecDocuments indexed per second by map indexes (one-minute rate)
MapReduceIndexMappedPerSecDocuments mapped per second by map-reduce indexes (one-minute rate)
MapReduceIndexReducedPerSecResults reduced per second by map-reduce indexes (one-minute rate)
RequestsPerSecRequests per second (one-minute rate)
RequestsCountNumber of requests since the database was loaded
RequestAverageDurationInMsAverage request duration, in milliseconds

databases: Indexes

Index counts, by kind and state:

FieldDescription
CountNumber of indexes in the database
StaleCountNumber of stale indexes
ErrorsCountNumber of indexing errors
StaticCountNumber of static indexes
AutoCountNumber of auto indexes
IdleCountNumber of idle indexes
DisabledCountNumber of disabled indexes
ErroredCountNumber of indexes in the Error state

databases: Storage

Storage usage of the database:

FieldDescription
DocumentsAllocatedDataFileInMbAllocated size of the documents data file, in MB
DocumentsUsedDataFileInMbUsed size of the documents data file, in MB
IndexesAllocatedDataFileInMbAllocated size of the index data files, in MB
IndexesUsedDataFileInMbUsed size of the index data files, in MB
TotalAllocatedStorageFileInMbTotal allocated storage size of the database, in MB
TotalFreeSpaceInMbRemaining free space on the drive that holds the database, in MB; -1 on a server that runs in memory
IoReadOperationsRead operations per second on the drive
IoWriteOperationsWrite operations per second on the drive
ReadThroughputInKbRead throughput on the drive, in KB per second
WriteThroughputInKbWrite throughput on the drive, in KB per second
QueueLengthThe drive's IO queue length

The IO fields are null on a server that runs in memory, and when the platform does not provide disk statistics.


databases: Etls, AiTasks, and CdcSinks

These three groups carry the same fields as the server endpoint's groups of the same names, scoped to this database: the task count, the total recorded errors, and the task counts per health state.

The indexes endpoint

/admin/monitoring/v1/indexes returns one entry per loaded database, holding the database's name and an Indexes array with one entry per index.

The fields of each index entry:

FieldDescription
IndexNameThe index's name
PriorityThe index's priority: Low, Normal, or High
StateThe index's state: Normal, Disabled, Idle, or Error
ErrorsNumber of indexing errors recorded for the index
TimeSinceLastQueryInSecTime since the index was last queried, in seconds; null when the index has not been queried yet
TimeSinceLastIndexingInSecTime since the index last indexed documents, in seconds; null when the index has not indexed anything yet
LockModeThe index's lock mode: Unlock, LockedIgnore, or LockedError
ArchivedDataProcessingBehaviorThe index's processing behavior for archived documents: ExcludeArchived, IncludeArchived, or ArchivedOnly
IsInvalidIndicates if the index is invalid
StatusThe index's running status: Running, Paused, Disabled, or Pending
MappedPerSecDocuments mapped per second (one-minute rate)
ReducedPerSecResults reduced per second (one-minute rate)
TypeThe index's type, e.g. Map, MapReduce, AutoMap, or JavaScriptMap

The collections endpoint

/admin/monitoring/v1/collections returns one entry per loaded database, holding the database's name and a Collections array with one entry per collection.

The fields of each collection entry:

FieldDescription
CollectionNameThe collection's name
DocumentsCountNumber of documents in the collection
TotalSizeInBytesTotal size of the collection, in bytes
DocumentsSizeInBytesSize of the collection's documents, in bytes
TombstonesSizeInBytesSize of the collection's tombstones, in bytes
RevisionsSizeInBytesSize of the collection's revisions, in bytes

The etls endpoint

/admin/monitoring/v1/etls returns one entry per loaded database, holding the database's name and an Etls array with one entry per ETL task.

The fields of each task entry:

FieldDescription
ProcessNameThe task's name, in the form <configuration name>/<transformation name>
ErrorsCountNumber of errors recorded for the task
HealthStatusThe task's health state: Healthy, Impaired, or Failed
LastSuccessfulBatchTimeInSecTime since the task's last successful batch, in seconds; null when the task has not completed a batch yet
DocumentsProcessedPerSecDocuments processed per second by the task (one-minute rate)

The ai-tasks endpoint

/admin/monitoring/v1/ai-tasks returns one entry per loaded database, holding the database's name and an AiTasks array with one entry per AI task: an Embeddings Generation or GenAI task.

The fields of each task entry:

FieldDescription
ProcessNameThe task's name
ErrorsCountNumber of errors recorded for the task
HealthStatusThe task's health state: Healthy, Impaired, or Failed
LastSuccessfulBatchTimeInSecTime since the task's last successful batch, in seconds; null when the task has not completed a batch yet
DocumentsProcessedPerSecDocuments processed per second by the task (one-minute rate)

The cdc-sinks endpoint

/admin/monitoring/v1/cdc-sinks returns one entry per loaded database, holding the database's name and a CdcSinks array with one entry per CDC Sink task.

The fields of each task entry:

FieldDescription
ProcessNameThe task's name
ErrorsCountNumber of errors recorded for the task
HealthStatusThe task's health state: Healthy, Impaired, or Failed
LastSuccessfulBatchTimeInSecTime since the task's last successful batch, in seconds; null when the task has not completed a batch yet

In this article