Skip to main content

Metrics Overview

Atoti Server provides metrics through the OpenTelemetry API, which can be used with a variety of observability backends. See how to set up observability with OpenTelemetry SDK here.

By default, Atoti provides metrics for a variety of components.

Metrics Types

Atoti use the OpenTelemetry API to provide metrics. The metrics are divided into 3 types:

  • Gauge: A metric that represents a sampled value at a given time.
  • Sum: A cumulative metric that represents a sum of individual measurements made over a period of time.
  • Histogram: A metric that samples observations (usually things like request durations or response sizes) and counts them in buckets.

See the OpenTelemetry documentation for more information.

Metrics Tags

Metrics are augmented with tags, allowing to get more information about the metric itself. That information can be used to filter or group the metrics.

Metrics Available

The following metrics are provided by Atoti:

Metric NameTypeTagsDescription
atoti.agg_provider.bitmap.data.memory_footprintGaugecube.name, agg_provider.nameMeasures in MB the total memory usage of data stored by the bitmap index. That could be helpful to identify performance bottlenecks.
atoti.agg_provider.bitmap.memory_footprintGaugecube.name, agg_provider.nameMeasures in MB the total memory usage of the bitmap index including the data size and other information.
atoti.agg_provider.index.memory_footprintGaugecube.name, agg_provider.name, agg_provider.typeTracks the memory size in MB of the index of the aggregate provider.
atoti.agg_provider.index.sizeGaugename, index.name, typeMeasures the size of each index within an aggregate provider.
atoti.agg_provider.off_heap.sizeGaugename, typeTracks the size of an aggregate provider's off-heap memory usage.
atoti.agg_provider.on_heap.sizeGaugename, typeTracks the size of an aggregate provider's on-heap memory usage.
atoti.agg_provider.partition.bitmap.data.memory_footprintGaugecube.name, agg_provider.partition.id, agg_provider.name, agg_provider.typeMeasures in MB the memory usage of data stored in one partition of the bitmap index. This is useful for comparing the amount of data between partitions.
atoti.agg_provider.partition.bitmap.memory_footprintGaugecube.name, agg_provider.partition.id, agg_provider.name, agg_provider.typeMeasures in MB the memory usage of a partition of the bitmap index including data size and other information. This is useful for comparing partitions of the same bitmap aggregate provider.
atoti.agg_provider.partition.index.memory_footprintGaugecube.name, agg_provider.partition.id, agg_provider.name, agg_provider.typeTracks the total memory size of an index.
atoti.agg_provider.partition.index.sizeGaugecube.name, agg_provider.partition.id, agg_provider.name, agg_provider.typeProvides the number of lines of the index in the aggregate provider partition.
atoti.agg_provider.partition.off_heap.sizeGaugecube.name, agg_provider.partition.id, agg_provider.name, agg_provider.typeTracks the off-heap memory usage in MB of an aggregate provider.
atoti.agg_provider.partition.on_heap.sizeGaugecube.name, agg_provider.partition.id, agg_provider.name, agg_provider.typeTracks the on-heap memory usage in MB of an aggregate provider.
atoti.agg_provider.partition.sizeGaugename, type, partition.id, date:value (for each partition key)Indicates the size of each partition within an aggregate provider.
atoti.agg_provider.sizeGaugename, typeMeasures the overall size of an aggregate provider.
atoti.application.off_heap.allocate.hitsSumnode.idCounts the number of successful off-heap memory allocation attempts.
atoti.application.off_heap.allocate.sizeHistogramnode.idMeasures the size of each off-heap memory allocation.
atoti.application.off_heap.committedGaugeTracks the amount of off-heap memory that the Atoti Server has committed to use.
atoti.application.off_heap.free.hitsSumnode.idCounts the number of successful off-heap memory free operations.
atoti.application.off_heap.free.sizeHistogramnode.idMeasures the size of each off-heap memory free operation.
atoti.application.off_heap.usedGaugeMeasures the off-heap memory currently used by the Atoti Server.
atoti.cube.epoch.addedSumcube.nameTracks the number of epochs that have been added to the cube.
atoti.cube.epoch.currentGaugecube.nameDisplays the most recent epoch visible in the cube.
atoti.cube.epoch.deletedSumcube.nameCounts the number of epochs deleted through garbage collection in the cube.
atoti.cube.epoch.liveGaugecube.nameShows the count of live epochs in the cube, with versions maintained by a strong reference.
atoti.cube.epoch.oldestGaugecube.nameIndicates the oldest epoch still live within the cube.
atoti.cube.epoch.releasedSumcube.nameCounts the number of epochs that have been released in the cube, setting the strong reference to null.
atoti.cube.rebuildSumcube.nameTracks the number of times the cube has been rebuilt.
atoti.cube.startSumcube.nameCounts the number of times a cube has been started.
atoti.cube.stopSumcube.nameCounts the number of times a cube has been stopped.
atoti.database.epoch.addedSumdatabase.idCounts the number of new epochs created in an in-memory or external database.
atoti.database.data_model_transaction.hitSumdatabase.id, successCount of structural transactions received by the database (schema updates).
atoti.database.data_model_transaction.timeHistogramdatabase.id, successTime to process structural transactions received on the database (schema updates).
atoti.datastore.branch.countGaugedatastore.nameMeasures the number of branches of the datastore.
atoti.datastore.epoch.currentGaugedatastore.nameShows the most recent epoch that is currently visible in the datastore.
atoti.datastore.epoch.deletedSumdatastore.nameCounts the number of epochs that have been deleted via garbage collection.
atoti.datastore.epoch.liveGaugedatastore.nameIndicates the number of live epochs in the datastore, where versions are kept by a strong reference.
atoti.datastore.epoch.oldestGaugedatastore.nameDisplays the oldest epoch that is still active in the datastore.
atoti.datastore.epoch.releasedSumdatastore.nameTracks the number of epochs that have been released, where the strong reference is set to null.
atoti.loading.filesSumsource.type, mode (for CSV source), store.name (for Parquet Source), topic.name (for CSV source).Count of files loaded by the sources into the datastore.
atoti.loading.files.lines.erroredSumsource.type, mode (for CSV source), store.name (for Parquet Source), topic.name (for CSV source).Count of lines ingested but errored because not correctly parsed. This does not include headers. For a CSV source, parsingReportEnabled must be set to true in its configuration.
atoti.loading.files.lines.ingestedSumsource.type, mode (for CSV source), store.name (for Parquet Source), topic.name (for CSV source).Count of lines loaded into the datastore. The tags for a CSV source are source.type, mode and topic.name. The tags for a parquet source are only source.type and store.name. For a CSV source, parsingReportEnabled must be set to true in its configuration.
atoti.loading.sqlSumsource.type, topic.nameTracks the number of SQL queries run to load data.
atoti.loading.sql.erroredSumsource.type, topic.nameTracks the number of SQL queries run to load data, which failed.
atoti.loading.sql.lines.erroredSumsource.type, topic.nameTracks the number of rows, which were ingested but could not be loaded into the datastore.
atoti.loading.sql.lines.ingestedSumsource.type, topic.nameTracks the number of rows ingested.
atoti.loading.sql.timeHistogramsource.type, topic.nameMeasures the time (in ms) required to run the query and feed the datastore.
atoti.query.hitSumtype, success, cube.nameCounts the total number of queries executed in the cube.
atoti.query.timeHistogramtype, success, cube.nameMeasures the time taken for cube queries, with the ability to filter by type, success, and cube name.
atoti.table.chunk.sizeGaugetable.nameMeasures the size of an allocated chunk of a table.
atoti.table.epoch.currentGaugetable.nameLatest epoch visible in a table.
atoti.table.lines.addedSumtable.nameCounts the number of lines added to a table.
atoti.table.lines.deletedSumtable.nameCounts the number of lines deleted from each table.
atoti.table.lines.freedSumtable.nameCounts the number of line freed from each table.
atoti.table.lines.updatedSumtable.nameCounts the number of lines updated in each table.
atoti.table.partition.createdSumtable.nameCounts the number of table partitions that have been created.
atoti.table.partition.current_epochGaugetable.name, partition.idLatest epoch of a table partition in the datastore.
atoti.table.partition.droppedSumtable.nameCounts the number of table partitions that have been dropped.
atoti.table.partition.memory.footprintGaugetable.name, partition.idMeasures the memory usage of a partition of a table.
atoti.table.partition.sizeGaugetable.name, partition.id, date:value (for each partition key)Provides the size of each table partition. Tags help track partition keys and values, identifying significant differences in partition sizes.
atoti.table.sizeGaugetable.nameIndicates the current size of the table, reflecting the difference between lines added and deleted over the table's lifetime.
atoti.table.size.memory.footprintGaugetable.nameMeasures the memory footprint of a table, including all versions. This should equal lines added plus lines updated minus lines freed over the table's lifetime.
atoti.transaction.commit.hitSumsuccessTracks the total number of database transactions, incrementing by one for each transaction. The success tag helps identify abnormal rollback rates.
atoti.transaction.commit.timeHistogramsuccessMeasures the time taken for database commits. The success tag allows filtering between successful and rollback transactions, providing insights into the performance of each.
atoti.query.continuous.registeredSumcube.nameCounts the number of continuous queries currently registered in each cube.
atoti.query.continuous.totalGaugecube.nameCounts the number of continuous queries currently registered in each cube.
atoti.cluster.membersGaugecube.name, cluster.id, node.type, branch.name (only DATA nodes)Counts the number members in the cluster that have the opposite node type of the current node.
atoti.cluster.messages.sent.countSumcube.name, cluster.id, node.type, logical.address, message.typeCounts the number of messages sent by the messenger with the specified logical address.
atoti.cluster.messages.received.countSumcube.name, cluster.id, node.type, logical.address, message.type, sender.addressCounts the number of messages received by the messenger with the specified logical address.
atoti.cluster.messages.received.countSumcube.name, cluster.id, node.type, logical.address, message.type, sender.addressCounts the number of messages received by the messenger with the specified logical address.
atoti.cluster.messages.sizeSumcube.name, cluster.id, node.type, logical.address, message.typeCounts the total size of the messages sent and received by the messenger with the specified logical address.
atoti.jgroups.cluster.membersGaugecube.name, cluster.id, node.typeCounts the total number of nodes in the JGroups cluster.
atoti.netty.direct.memory.usedGaugeCounts the total amount of direct memory used by Netty.