ObjectStackObjectStack

Metrics

Metrics protocol schemas

Metrics Protocol - Performance and Operational Metrics

Comprehensive metrics collection and monitoring:

  • Counter, Gauge, Histogram, Summary metric types

  • Time-series data collection

  • SLI/SLO definitions

  • Metric aggregation and export

  • Integration with monitoring systems (Prometheus, etc.)

Source: packages/spec/src/system/metrics.zod.ts

TypeScript Usage

import { HistogramBucketConfig, MetricAggregationConfig, MetricAggregationType, MetricDataPoint, MetricDefinition, MetricExportConfig, MetricLabels, MetricType, MetricUnit, MetricsConfig, ServiceLevelIndicator, ServiceLevelObjective, TimeSeries, TimeSeriesDataPoint } from '@objectstack/spec/system';
import type { HistogramBucketConfig, MetricAggregationConfig, MetricAggregationType, MetricDataPoint, MetricDefinition, MetricExportConfig, MetricLabels, MetricType, MetricUnit, MetricsConfig, ServiceLevelIndicator, ServiceLevelObjective, TimeSeries, TimeSeriesDataPoint } from '@objectstack/spec/system';

// Validate data
const result = HistogramBucketConfig.parse(data);

HistogramBucketConfig

Histogram bucket configuration

Properties

PropertyTypeRequiredDescription
typeEnum<'linear' | 'exponential' | 'explicit'>Bucket type
linearObjectoptional
exponentialObjectoptional
explicitObjectoptional

MetricAggregationConfig

Metric aggregation configuration

Properties

PropertyTypeRequiredDescription
typeEnum<'sum' | 'avg' | 'min' | 'max' | 'count' | 'p50' | 'p75' | 'p90' | 'p95' | 'p99' | 'p999' | 'rate' | 'stddev'>Aggregation type
windowObjectoptional
groupBystring[]optionalGroup by label names
filtersRecord<string, any>optionalFilter criteria

MetricAggregationType

Metric aggregation type

Allowed Values

  • sum
  • avg
  • min
  • max
  • count
  • p50
  • p75
  • p90
  • p95
  • p99
  • p999
  • rate
  • stddev

MetricDataPoint

Metric data point

Properties

PropertyTypeRequiredDescription
namestringMetric name
typeEnum<'counter' | 'gauge' | 'histogram' | 'summary'>Metric type
timestampstringObservation timestamp
valuenumberoptionalMetric value
labelsRecord<string, string>optionalMetric labels
histogramObjectoptional
summaryObjectoptional

MetricDefinition

Metric definition

Properties

PropertyTypeRequiredDescription
namestringMetric name (snake_case)
labelstringoptionalDisplay label
typeEnum<'counter' | 'gauge' | 'histogram' | 'summary'>Metric type
unitEnum<'nanoseconds' | 'microseconds' | 'milliseconds' | 'seconds' | 'minutes' | 'hours' | 'days' | 'bytes' | 'kilobytes' | 'megabytes' | 'gigabytes' | 'terabytes' | 'requests_per_second' | 'events_per_second' | 'bytes_per_second' | 'percent' | 'ratio' | 'count' | 'operations' | 'custom'>optionalMetric unit
descriptionstringoptionalMetric description
labelNamesstring[]Label names
histogramObjectoptionalHistogram bucket configuration
summaryObjectoptional
enabledboolean

MetricExportConfig

Metric export configuration

Properties

PropertyTypeRequiredDescription
typeEnum<'prometheus' | 'openmetrics' | 'graphite' | 'statsd' | 'influxdb' | 'datadog' | 'cloudwatch' | 'stackdriver' | 'azure_monitor' | 'http' | 'custom'>Export type
endpointstringoptionalExport endpoint
intervalinteger
batchObjectoptional
authObjectoptional
configRecord<string, any>optionalAdditional configuration


MetricType

Metric type

Allowed Values

  • counter
  • gauge
  • histogram
  • summary

MetricUnit

Metric unit

Allowed Values

  • nanoseconds
  • microseconds
  • milliseconds
  • seconds
  • minutes
  • hours
  • days
  • bytes
  • kilobytes
  • megabytes
  • gigabytes
  • terabytes
  • requests_per_second
  • events_per_second
  • bytes_per_second
  • percent
  • ratio
  • count
  • operations
  • custom

MetricsConfig

Metrics configuration

Properties

PropertyTypeRequiredDescription
namestringConfiguration name (snake_case, max 64 chars)
labelstringDisplay label
enabledboolean
metricsObject[]
defaultLabelsRecord<string, string>Metric labels
aggregationsObject[]
slisObject[]
slosObject[]
exportsObject[]
collectionIntervalinteger
retentionObjectoptional
cardinalityLimitsObjectoptional

ServiceLevelIndicator

Service Level Indicator

Properties

PropertyTypeRequiredDescription
namestringSLI name (snake_case)
labelstringDisplay label
descriptionstringoptionalSLI description
metricstringBase metric name
typeEnum<'availability' | 'latency' | 'throughput' | 'error_rate' | 'saturation' | 'custom'>SLI type
successCriteriaObjectSuccess criteria
windowObjectMeasurement window
enabledboolean

ServiceLevelObjective

Service Level Objective

Properties

PropertyTypeRequiredDescription
namestringSLO name (snake_case)
labelstringDisplay label
descriptionstringoptionalSLO description
slistringSLI name
targetnumberTarget percentage
periodObjectTime period
errorBudgetObjectoptional
alertsObject[]
enabledboolean

TimeSeries

Time series

Properties

PropertyTypeRequiredDescription
namestringSeries name
labelsRecord<string, string>optionalSeries labels
dataPointsObject[]Data points
startTimestringoptionalStart time
endTimestringoptionalEnd time

TimeSeriesDataPoint

Time series data point

Properties

PropertyTypeRequiredDescription
timestampstringTimestamp
valuenumberValue
labelsRecord<string, string>optionalLabels

On this page