mirror of
https://github.com/kubevela/kubevela.git
synced 2026-05-20 00:07:27 +00:00
* Feat: add more prometheus metrics Signed-off-by: yangsoon <yangsoonlx@gmail.com> * Feat: add detail gc rt duration metrics Signed-off-by: Yin Da <yd219913@alibaba-inc.com> * Feat: add monitor to client Signed-off-by: Yin Da <yd219913@alibaba-inc.com> * Feat: add all cache object Signed-off-by: Yin Da <yd219913@alibaba-inc.com> * Fix: watch job Signed-off-by: Yin Da <yd219913@alibaba-inc.com> * Feat: add deleg client Signed-off-by: Yin Da <yd219913@alibaba-inc.com> * Feat: add optimize for rt list and disable controllerrevision Signed-off-by: Yin Da <yd219913@alibaba-inc.com> * Feat: add apprev disable optimize Signed-off-by: Yin Da <yd219913@alibaba-inc.com> * Fix: optimize log Signed-off-by: Yin Da <yd219913@alibaba-inc.com> * Feat: add time recorder for app ctrl Signed-off-by: Yin Da <yd219913@alibaba-inc.com> * Feat: add in-memory workflow context Signed-off-by: Yin Da <yd219913@alibaba-inc.com> * Feat: add reconcile-reduction & random-pick-gc & optimize rt record Signed-off-by: Yin Da <yd219913@alibaba-inc.com> * Feat: add optimize for healthcheck & resourcetracker trigger Signed-off-by: Somefive <yd219913@alibaba-inc.com> * Chore: refactor Signed-off-by: Somefive <yd219913@alibaba-inc.com> * Feat: record the resource-tracker number by informer event-handler Signed-off-by: yangsoon <songyang.song@alibaba-inc.com> * Feat: add promethus collect annotation in template Signed-off-by: yangsoon <songyang.song@alibaba-inc.com> * Fix: command line comment bug Signed-off-by: Somefive <yd219913@alibaba-inc.com> * Chore: rename args and remove legacy controller metrics Signed-off-by: Somefive <yd219913@alibaba-inc.com> * Fix: make code reviewable Signed-off-by: yangsoon <songyang.song@alibaba-inc.com> * Chore: optimize flag descriptions Signed-off-by: Somefive <yd219913@alibaba-inc.com> * Chore: break optimize package Signed-off-by: Somefive <yd219913@alibaba-inc.com> * Fix: gc policy test Signed-off-by: Somefive <yd219913@alibaba-inc.com> Co-authored-by: Yin Da <yd219913@alibaba-inc.com> Co-authored-by: yangsoon <songyang.song@alibaba-inc.com>
133 lines
5.5 KiB
Go
133 lines
5.5 KiB
Go
/*
|
|
Copyright 2021. The KubeVela Authors.
|
|
|
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
you may not use this file except in compliance with the License.
|
|
You may obtain a copy of the License at
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
distributed under the License is distributed on an "AS IS" BASIS,
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
See the License for the specific language governing permissions and
|
|
limitations under the License.
|
|
*/
|
|
|
|
package metrics
|
|
|
|
import (
|
|
"github.com/prometheus/client_golang/prometheus"
|
|
"sigs.k8s.io/controller-runtime/pkg/client"
|
|
)
|
|
|
|
var (
|
|
// CreateAppHandlerDurationHistogram report the create appHandler execution duration.
|
|
CreateAppHandlerDurationHistogram = prometheus.NewHistogramVec(prometheus.HistogramOpts{
|
|
Name: "create_app_handler_time_seconds",
|
|
Help: "create appHandler duration distributions, this operate will list ResourceTrackers.",
|
|
Buckets: histogramBuckets,
|
|
ConstLabels: prometheus.Labels{},
|
|
}, []string{"controller"})
|
|
|
|
// HandleFinalizersDurationHistogram report the handle finalizers execution duration.
|
|
HandleFinalizersDurationHistogram = prometheus.NewHistogramVec(prometheus.HistogramOpts{
|
|
Name: "handle_finalizers_time_seconds",
|
|
Help: "handle finalizers duration distributions.",
|
|
Buckets: histogramBuckets,
|
|
ConstLabels: prometheus.Labels{},
|
|
}, []string{"controller", "type"})
|
|
|
|
// ParseAppFileDurationHistogram report the parse appFile execution duration.
|
|
ParseAppFileDurationHistogram = prometheus.NewHistogramVec(prometheus.HistogramOpts{
|
|
Name: "parse_appFile_time_seconds",
|
|
Help: "parse appFile duration distributions.",
|
|
Buckets: histogramBuckets,
|
|
ConstLabels: prometheus.Labels{},
|
|
}, []string{"controller"})
|
|
|
|
// PrepareCurrentAppRevisionDurationHistogram report the parse current appRevision execution duration.
|
|
PrepareCurrentAppRevisionDurationHistogram = prometheus.NewHistogramVec(prometheus.HistogramOpts{
|
|
Name: "prepare_current_appRevision_time_seconds",
|
|
Help: "parse current appRevision duration distributions.",
|
|
Buckets: histogramBuckets,
|
|
ConstLabels: prometheus.Labels{},
|
|
}, []string{"controller"})
|
|
|
|
// ApplyAppRevisionDurationHistogram report the apply appRevision execution duration.
|
|
ApplyAppRevisionDurationHistogram = prometheus.NewHistogramVec(prometheus.HistogramOpts{
|
|
Name: "apply_appRevision_time_seconds",
|
|
Help: "apply appRevision duration distributions.",
|
|
Buckets: histogramBuckets,
|
|
ConstLabels: prometheus.Labels{},
|
|
}, []string{"controller"})
|
|
|
|
// PrepareWorkflowAndPolicyDurationHistogram report the prepare workflow and policy execution duration.
|
|
PrepareWorkflowAndPolicyDurationHistogram = prometheus.NewHistogramVec(prometheus.HistogramOpts{
|
|
Name: "prepare_workflow_and_policy_time_seconds",
|
|
Help: "prepare workflow and policy duration distributions.",
|
|
Buckets: histogramBuckets,
|
|
ConstLabels: prometheus.Labels{},
|
|
}, []string{"controller"})
|
|
|
|
// GCResourceTrackersDurationHistogram report the gc resourceTrackers execution duration.
|
|
GCResourceTrackersDurationHistogram = prometheus.NewHistogramVec(prometheus.HistogramOpts{
|
|
Name: "gc_resourceTrackers_time_seconds",
|
|
Help: "gc resourceTrackers duration distributions.",
|
|
Buckets: histogramBuckets,
|
|
ConstLabels: prometheus.Labels{},
|
|
}, []string{"stage"})
|
|
|
|
// ClientRequestHistogram report the client request execution duration.
|
|
ClientRequestHistogram = prometheus.NewHistogramVec(prometheus.HistogramOpts{
|
|
Name: "client_request_time_seconds",
|
|
Help: "client request duration distributions.",
|
|
Buckets: histogramBuckets,
|
|
ConstLabels: prometheus.Labels{},
|
|
}, []string{"verb", "Kind", "apiVersion", "unstructured", "cluster"})
|
|
|
|
// ApplicationReconcileTimeHistogram report the reconciling time cost of application controller with state transition recorded
|
|
ApplicationReconcileTimeHistogram = prometheus.NewHistogramVec(prometheus.HistogramOpts{
|
|
Name: "application_reconcile_time_seconds",
|
|
Help: "application reconcile duration distributions.",
|
|
Buckets: histogramBuckets,
|
|
ConstLabels: prometheus.Labels{},
|
|
}, []string{"begin_phase", "end_phase"})
|
|
|
|
// ApplyComponentTimeHistogram report the time cost of applyComponentFunc
|
|
ApplyComponentTimeHistogram = prometheus.NewHistogramVec(prometheus.HistogramOpts{
|
|
Name: "apply_component_time_seconds",
|
|
Help: "apply component duration distributions.",
|
|
Buckets: histogramBuckets,
|
|
ConstLabels: prometheus.Labels{},
|
|
}, []string{"stage"})
|
|
)
|
|
|
|
var (
|
|
// ListResourceTrackerCounter report the list resource tracker number.
|
|
ListResourceTrackerCounter = prometheus.NewCounterVec(prometheus.CounterOpts{
|
|
Name: "list_resourcetracker_num",
|
|
Help: "list resourceTrackers times.",
|
|
}, []string{"controller"})
|
|
)
|
|
|
|
var (
|
|
// ResourceTrackerNumberGauge report the number of resourceTracker
|
|
ResourceTrackerNumberGauge = prometheus.NewGaugeVec(prometheus.GaugeOpts{
|
|
Name: "resourcetracker_number",
|
|
Help: "resourceTracker number.",
|
|
}, []string{"application", "namespace"})
|
|
)
|
|
|
|
// ExtractMetricValuesFromObjectLabel extract metric values from k8s object's labels
|
|
func ExtractMetricValuesFromObjectLabel(obj interface{}, labelKeys ...string) (values []string) {
|
|
if resource, ok := obj.(client.Object); ok {
|
|
for _, labelKey := range labelKeys {
|
|
values = append(values, resource.GetLabels()[labelKey])
|
|
}
|
|
} else {
|
|
values = make([]string, len(labelKeys))
|
|
}
|
|
return
|
|
}
|