mirror of
https://github.com/kubevela/kubevela.git
synced 2026-05-06 09:27:16 +00:00
* debug task (cherry picked from commit93378eda67) * metrics (cherry picked from commit7366804014) * trace context (cherry picked from commitf32105f23b) * add step_duration metrics (cherry picked from commitf9fc065e71) * add readme docs (cherry picked from commit69146b468d)
Package Usage
Context
First, this context is compatible with built-in context interface. Also it supports fork and commit like trace span.
Fork
Fork will generate a sub context that inherit the parent's tags. When new tags are added to the sub-context, the parent-context will not be affected.
Commit
Commit will log the context duration, and export metrics or other execution information.
usage
tracerCtx:=context.NewTraceContext(stdCtx,"$id")
defer tracerCtx.Commit("success")
// Execute sub-code logic
subCtx:=tracerCtx.Fork("sub-id")
...
subCtx.Commit("step is executed")
Metrics
First, you need register metricVec in package pkg/monitor/metrics, like below:
StepDurationSummary = prometheus.NewSummaryVec(prometheus.SummaryOpts{
Name: "step_duration_ms",
Help: "step latency distributions.",
Objectives: map[float64]float64{0.5: 0.05, 0.9: 0.01, 0.99: 0.001},
ConstLabels: prometheus.Labels{},
}, []string{"application", "workflow_revision", "step_name", "step_type"})
Now, you can export metrics by context,for example
subCtx:=tracerCtx.Fork("sub-id",DurationMetric(func(v float64) {
metrics.StepDurationSummary.WithLabelValues(e.app.Name, e.status.AppRevision, stepStatus.Name, stepStatus.Type).Observe(v)
})
subCtx.Commit("export") // At this time, it will export the StepDurationSummary metrics.
Context only support DurationMetric exporter. you can submit pr to support more exporters.
If metrics have nothing to do with context, there is no need to extend it through context exporter