Private Deployment
Metrics Reference

Metrics Reference

This page lists the primary metrics exported by a private Rulebricks deployment. It focuses on metrics owned by Rulebricks services plus the optional exporters the Helm chart can deploy. Kubernetes, node, container, and PVC metrics come from kube-prometheus-stack and use standard Prometheus ecosystem names.

Label Policy

Rulebricks labels are intentionally bounded. Metrics use route templates, status classes, coarse reasons, operation names, result states, and backend names. They do not include API keys, users, organizations, IP addresses, raw URLs, rule slugs, flow slugs, request payloads, or error messages.

App Metrics

Served at /api/metrics by the Rulebricks app.

MetricTypeLabelsMeaning
rulebricks_app_http_requests_totalcounterroute, method, status_classApp/API request count.
rulebricks_app_http_request_duration_secondshistogramroute, method, status_classApp/API request duration.
rulebricks_app_http_rejections_totalcounterroute, reasonApp/API rejected requests by coarse reason.
rulebricks_app_frontend_errors_totalcountersourceBrowser-side errors reported by the app.
rulebricks_app_redis_operations_totalcounteroperation, result, backendSelf-hosted app Redis/Valkey operations.
rulebricks_app_redis_operation_duration_secondshistogramoperation, result, backendSelf-hosted app Redis/Valkey operation latency.

App Redis metrics are self-hosted only. They cover app cache reads/writes/deletes/expirations and cache invalidation publishes. Filament build quota counters are intentionally excluded.

Useful queries:

sum by (status_class) (rate(rulebricks_app_http_requests_total[5m]))
histogram_quantile(0.95, sum by (le, route) (rate(rulebricks_app_http_request_duration_seconds_bucket[5m])))
sum by (operation, result) (rate(rulebricks_app_redis_operations_total[5m]))
histogram_quantile(0.95, sum by (le, operation) (rate(rulebricks_app_redis_operation_duration_seconds_bucket[5m])))

HPS Metrics

Served at /metrics by HPS.

MetricTypeLabelsMeaning
rulebricks_hps_http_requests_totalcounterroute, method, status_classHPS request count for solve, bulk solve, flows, and parallel solve routes.
rulebricks_hps_http_request_duration_secondshistogramroute, method, status_classEnd-to-end HPS HTTP duration.
rulebricks_hps_rejections_totalcounterroute, reasonHPS rejected requests by coarse reason.
rulebricks_hps_kafka_request_duration_secondshistogramoperationKafka-backed request/response duration observed by HPS.
rulebricks_hps_kafka_errors_totalcounteroperation, reasonKafka-backed request errors.
rulebricks_hps_bulk_items_totalcounteroperationTotal bulk or parallel payload items accepted by HPS.
rulebricks_hps_decision_log_failures_totalcounterreasonDecision-log records that failed to produce to Kafka.
rulebricks_hps_decision_logs_totalcounteroperation, resultDecision-log records attempted by HPS.
rulebricks_hps_decision_log_bytes_totalcounteroperationSerialized decision-log bytes successfully produced to Kafka.
rulebricks_hps_chunks_per_requesthistogramoperationKafka chunks emitted per request.
rulebricks_hps_chunk_failures_totalcounteroperation, reasonChunk-level failures in chunked bulk requests.
rulebricks_hps_chunk_processing_mshistogramoperationWorker processing time reported per chunk.
rulebricks_hps_chunk_cost_ms_per_itemgaugeoperationLearned chunk planner cost per item.
rulebricks_hps_chunk_cost_ms_per_bytegaugeoperationLearned chunk planner cost per input byte.
rulebricks_hps_cache_itemsgaugestateIn-process HPS memory cache item counts.
rulebricks_hps_cache_max_entriesgaugenoneHPS memory cache capacity.
rulebricks_hps_cache_requests_totalcounterresultHPS memory cache hits and misses.
rulebricks_hps_redis_cache_operations_totalcounteroperation, result, backendHPS shared Redis/Valkey operations.
rulebricks_hps_redis_cache_operation_duration_secondshistogramoperation, result, backendHPS shared Redis/Valkey operation latency.

Useful queries:

sum by (route, status_class) (rate(rulebricks_hps_http_requests_total[5m]))
histogram_quantile(0.95, sum by (le, route) (rate(rulebricks_hps_http_request_duration_seconds_bucket[5m])))
histogram_quantile(0.95, sum by (le, operation) (rate(rulebricks_hps_kafka_request_duration_seconds_bucket[5m])))
sum by (operation, result) (rate(rulebricks_hps_decision_logs_total[5m]))
sum by (operation) (rate(rulebricks_hps_decision_log_bytes_total[5m]))
sum by (operation, result) (rate(rulebricks_hps_redis_cache_operations_total[5m]))

Worker Metrics

Served at /metrics by HPS worker pods.

MetricTypeLabelsMeaning
rulebricks_worker_messages_totalcounteroperation, statusWorker Kafka messages processed.
rulebricks_worker_processing_duration_secondshistogramoperation, statusWorker processing duration.
rulebricks_worker_redis_cache_operations_totalcounteroperation, result, backendWorker Redis/Valkey operations.
rulebricks_worker_redis_cache_operation_duration_secondshistogramoperation, result, backendWorker Redis/Valkey operation latency.

Useful queries:

sum by (operation, status) (rate(rulebricks_worker_messages_total[5m]))
histogram_quantile(0.95, sum by (le, operation) (rate(rulebricks_worker_processing_duration_seconds_bucket[5m])))
sum by (operation, result) (rate(rulebricks_worker_redis_cache_operations_total[5m]))

Default Node.js and Process Metrics

App, HPS, and workers also export default prom-client process metrics with service-specific prefixes:

  • rulebricks_app_*
  • rulebricks_hps_*
  • rulebricks_worker_*

Common examples:

Metric suffixMeaning
process_cpu_seconds_totalProcess CPU time.
process_resident_memory_bytesResident memory.
process_open_fdsOpen file descriptors.
nodejs_heap_size_used_bytesV8 heap used.
nodejs_eventloop_lag_p99_secondsEvent loop lag p99.
nodejs_gc_duration_secondsGarbage collection duration histogram.

Valkey / Redis Exporter Metrics

Requires rulebricks.cache.redisExporter.enabled.

MetricMeaning
redis_commands_processed_totalTotal Valkey commands processed.
redis_connected_clientsConnected client count.
redis_memory_used_bytesCurrent memory used.
redis_memory_max_bytesConfigured max memory when available.
redis_keyspace_hits_totalKeyspace cache hits.
redis_keyspace_misses_totalKeyspace cache misses.
redis_evicted_keys_totalEvicted keys.

Useful queries:

sum(rate(redis_commands_processed_total[5m]))
redis_memory_used_bytes
redis_connected_clients
sum(rate(redis_keyspace_hits_total[5m])) / (sum(rate(redis_keyspace_hits_total[5m])) + sum(rate(redis_keyspace_misses_total[5m])))
sum(rate(redis_evicted_keys_total[5m]))

Kafka Metrics

Kafka JMX metrics are enabled by the Kafka chart. Kafka consumer-group lag requires rulebricks.kafkaExporter.enabled.

MetricSourceMeaning
kafka_server_brokertopicmetrics_total_messagesinpersec_countKafka JMXBroker messages in.
kafka_server_brokertopicmetrics_total_bytesinpersec_countKafka JMXBroker bytes in.
kafka_server_brokertopicmetrics_total_bytesoutpersec_countKafka JMXBroker bytes out.
kafka_network_requestchannel_requestqueuesize_valueKafka JMXBroker request queue size.
kafka_network_requestchannel_responsequeuesize_valueKafka JMXBroker response queue size.
kafka_log_log_sizeKafka JMXTopic log size.
kafka_consumergroup_lagKafka exporterConsumer-group lag by group/topic/partition.

Useful queries:

sum by (consumergroup, topic) (kafka_consumergroup_lag)
sum(rate(kafka_server_brokertopicmetrics_total_messagesinpersec_count[5m]))
sum by (topic) (kafka_log_log_size)

Traefik Metrics

Traefik metrics are scraped when the Traefik ServiceMonitor is active.

MetricMeaning
traefik_service_requests_totalRequests by Traefik service/status.
traefik_service_request_duration_secondsRequest duration histogram by service.
traefik_entrypoint_open_connectionsOpen connections by entrypoint/protocol.
traefik_entrypoint_requests_totalEntrypoint request count.
traefik_config_reloads_totalTraefik config reloads.

Useful queries:

sum by (service, code) (rate(traefik_service_requests_total[5m]))
histogram_quantile(0.95, sum by (le, service) (rate(traefik_service_request_duration_seconds_bucket[5m])))
sum by (entrypoint, protocol) (traefik_entrypoint_open_connections)

Kubernetes and Infrastructure Metrics

These come from kube-prometheus-stack and are cloud-portable:

Metric familyMeaning
kube_deployment_*Desired, available, unavailable deployment replicas.
kube_horizontalpodautoscaler_*HPA current, desired, min, and max replicas.
kube_pod_*Pod phase, labels, ownership, restarts, readiness.
kube_node_*Node labels, allocatable resources, readiness.
container_cpu_usage_seconds_totalContainer CPU usage from cAdvisor.
container_memory_working_set_bytesContainer memory working set.
container_cpu_cfs_throttled_periods_totalCPU throttling periods.
node_cpu_seconds_totalNode CPU time from node-exporter.
node_memory_*Node memory from node-exporter.
node_filesystem_*Node filesystem capacity/usage.
kubelet_volume_stats_*PVC volume capacity and usage.

Useful queries:

100 * (1 - avg by (node) (rate(node_cpu_seconds_total{mode="idle"}[5m])))
100 * (1 - (node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes))
100 * kubelet_volume_stats_used_bytes / kubelet_volume_stats_capacity_bytes
kube_horizontalpodautoscaler_status_desired_replicas
kube_deployment_status_replicas_available

ClickHouse Metrics

ClickHouse exposes a large metric surface. The Rulebricks dashboard uses a small set of high-level signals to avoid noise:

MetricMeaning
ClickHouseMetrics_QueryActive ClickHouse queries.
ClickHouseMetrics_MemoryTrackingMemory tracked by ClickHouse.
ClickHouseProfileEvents_QueryQuery event count.

Use ClickHouse's own dashboards or direct ClickHouse queries when investigating storage/query internals in detail.

Alert Starting Points

These are good first alerts for production:

sum(rate(rulebricks_hps_rejections_total[5m])) > 0
histogram_quantile(0.95, sum by (le) (rate(rulebricks_hps_kafka_request_duration_seconds_bucket[5m]))) > 5
sum by (consumergroup, topic) (kafka_consumergroup_lag) > 1000
100 * kubelet_volume_stats_used_bytes / kubelet_volume_stats_capacity_bytes > 85
sum(rate(rulebricks_hps_decision_log_failures_total[5m])) > 0