mirror of https://github.com/kubevela/kubevela.git
* Feat: add pending phase in workflow step Signed-off-by: FogDong <dongtianxin.tx@alibaba-inc.com> * fix test Signed-off-by: FogDong <dongtianxin.tx@alibaba-inc.com> * fix lint Signed-off-by: FogDong <dongtianxin.tx@alibaba-inc.com> * fix test Signed-off-by: FogDong <dongtianxin.tx@alibaba-inc.com> |
||
|---|---|---|
| .. | ||
| context | ||
| metrics | ||
| watcher | ||
| README.md | ||
README.md
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