ProcessEngine / Flow Studio Metrics
| Metric Name | Type | Labels | Description |
bizfirst_workflow_executions_total | Counter | tenant_id, status (success|failed|timeout|cancelled) | Total workflow executions by outcome |
bizfirst_workflow_execution_duration_seconds | Histogram | tenant_id, workflow_id | End-to-end workflow execution duration |
bizfirst_active_executions | Gauge | tenant_id | Currently running workflow executions |
bizfirst_node_executions_total | Counter | tenant_id, node_type, status | Total node executions by type and outcome |
bizfirst_node_execution_duration_seconds | Histogram | tenant_id, node_type | Node execution duration by type |
bizfirst_node_errors_total | Counter | tenant_id, node_type, error_type | Node execution errors categorized by type |
HIL (Human-in-the-Loop) Metrics
| Metric Name | Type | Labels | Description |
bizfirst_hil_pending_count | Gauge | tenant_id | Current HIL tasks awaiting human action |
bizfirst_hil_suspensions_total | Counter | tenant_id | Total HIL suspension events |
bizfirst_hil_suspension_duration_seconds | Histogram | tenant_id, outcome (approved|rejected|timeout) | Time workflow was suspended waiting for human |
bizfirst_hil_overdue_count | Gauge | tenant_id | HIL tasks past their SLA deadline |
EdgeStream Metrics
| Metric Name | Type | Labels | Description |
bizfirst_edgestream_messages_total | Counter | topic, tenant_id, status | Total messages processed by EdgeStream |
bizfirst_edgestream_delivery_duration_seconds | Histogram | topic, tenant_id | Message delivery latency |
bizfirst_edgestream_subscriber_count | Gauge | topic | Active subscriber connections per topic |
bizfirst_edgestream_queue_depth | Gauge | topic | Messages in queue awaiting delivery |
Octopus Agent Metrics
| Metric Name | Type | Labels | Description |
bizfirst_octopus_llm_calls_total | Counter | tenant_id, model, status | Total LLM API calls |
bizfirst_octopus_llm_duration_seconds | Histogram | tenant_id, model | LLM call duration |
bizfirst_octopus_tokens_total | Counter | tenant_id, model, type (input|output) | Token usage for cost tracking |
bizfirst_octopus_memory_operations_total | Counter | tenant_id, memory_type, operation | Memory store read/write operations |
bizfirst_octopus_active_agents | Gauge | tenant_id | Currently active agent sessions |
Adding Custom Metrics to Executors
Custom ExecutionNode executors can record additional metrics via the node execution context:
// In a custom executor — record a domain-specific metric
public override async Task<NodeResult> ExecuteAsync(NodeExecutionContext ctx)
{
var stopwatch = Stopwatch.StartNew();
// ... business logic ...
// Record custom metric
ctx.Metrics.Record("bizfirst.custom.invoice.processing.duration",
stopwatch.Elapsed.TotalSeconds,
new KeyValuePair<string, object?>("invoice.type", invoiceType),
new KeyValuePair<string, object?>("tenant_id", ctx.TenantId));
// Increment a custom counter
ctx.Metrics.Add("bizfirst.custom.invoices.processed",
1,
new KeyValuePair<string, object?>("status", "success"));
}