Documentation
¶
Overview ¶
Package metrics provides structured metrics collection and export for cloop runs. Metrics are exposed in Prometheus text format via an optional HTTP server, and written as a JSON summary to .cloop/metrics.json at plan completion.
Index ¶
- type DurationSummary
- type Metrics
- func (m *Metrics) Prometheus() string
- func (m *Metrics) RecordCost(provider, model string, usd float64)
- func (m *Metrics) RecordStep()
- func (m *Metrics) RecordTaskCompleted(durSeconds float64)
- func (m *Metrics) RecordTaskFailed(durSeconds float64)
- func (m *Metrics) RecordTaskSkipped()
- func (m *Metrics) RecordTaskStarted()
- func (m *Metrics) RecordTokens(provider, model string, inputTokens, outputTokens int)
- func (m *Metrics) Snapshot() Summary
- func (m *Metrics) WriteJSON(workDir string) error
- type Summary
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type DurationSummary ¶
type DurationSummary struct {
Count int64 `json:"count"`
Sum float64 `json:"sum"`
Buckets map[string]int64 `json:"buckets"`
}
DurationSummary summarizes the task_duration_seconds histogram.
type Metrics ¶
type Metrics struct {
// contains filtered or unexported fields
}
Metrics is the central metrics registry for a cloop run. All methods are safe for concurrent use.
func (*Metrics) Prometheus ¶
Prometheus returns the current metrics in Prometheus text exposition format.
func (*Metrics) RecordCost ¶
RecordCost adds to cost_usd_total for the given provider/model.
func (*Metrics) RecordTaskCompleted ¶
RecordTaskCompleted increments tasks_completed.
func (*Metrics) RecordTaskFailed ¶
RecordTaskFailed increments tasks_failed.
func (*Metrics) RecordTaskSkipped ¶
func (m *Metrics) RecordTaskSkipped()
RecordTaskSkipped increments tasks_skipped.
func (*Metrics) RecordTaskStarted ¶
func (m *Metrics) RecordTaskStarted()
RecordTaskStarted increments tasks_total.
func (*Metrics) RecordTokens ¶
RecordTokens increments tokens_used_total for the given provider/model.
func (*Metrics) WriteJSON ¶
WriteJSON saves the current metrics snapshot to .cloop/metrics.json.
The write is atomic: data is staged in a sibling .tmp file, fsynced, chmod'd, then renamed into place. POSIX rename is atomic with respect to readers, so `cloop status` and other consumers always see either the previous valid snapshot or the new one — never a half-written or zero-byte file produced by a crash, ENOSPC, or two writers racing across processes.
type Summary ¶
type Summary struct {
Timestamp time.Time `json:"timestamp"`
Provider string `json:"provider"`
Model string `json:"model"`
DurationSecs float64 `json:"duration_seconds"`
TasksTotal int64 `json:"tasks_total"`
TasksCompleted int64 `json:"tasks_completed"`
TasksFailed int64 `json:"tasks_failed"`
TasksSkipped int64 `json:"tasks_skipped"`
StepsTotal int64 `json:"steps_total"`
TaskDuration DurationSummary `json:"task_duration_seconds"`
TokensUsed map[string]int64 `json:"tokens_used_total"`
CostUSD map[string]float64 `json:"cost_usd_total"`
RetryBudgetExhausted int64 `json:"retry_budget_exhausted_total"`
}
Summary is a snapshot of all metrics for JSON serialization.