Fix envoy dashboard, scheduler, and envoy metrics provider to correctly pass canary analysis and show graphs

This commit is contained in:
Yusuke Kuoka
2019-12-18 10:55:49 +09:00
parent 806b95c8ce
commit d75ade5e8c
5 changed files with 41 additions and 60 deletions
+13 -10
View File
@@ -747,7 +747,15 @@ func (c *Controller) analyseCanary(r *flaggerv1.Canary) bool {
}
// override the global provider if one is specified in the canary spec
metricsProvider := c.meshProvider
var metricsProvider string
// set the metrics provider to Envoy Prometheus when Envoy is the mesh provider
// For example, `envoy` metrics provider should be used for `smi:envoy` mesh provider
if strings.Contains(c.meshProvider, "envoy") {
metricsProvider = "envoy"
} else {
metricsProvider = c.meshProvider
}
if r.Spec.Provider != "" {
metricsProvider = r.Spec.Provider
@@ -755,11 +763,6 @@ func (c *Controller) analyseCanary(r *flaggerv1.Canary) bool {
if strings.Contains(c.meshProvider, "linkerd") {
metricsProvider = "linkerd"
}
// set the metrics provider to Envoy Prometheus when Envoy is the default mesh provider
if strings.Contains(c.meshProvider, "envoy") {
metricsProvider = "envoy"
}
}
// set the metrics provider to query Prometheus for the canary Kubernetes service if the canary target is Service
if r.Spec.TargetRef.Kind == "Service" {
@@ -792,8 +795,8 @@ func (c *Controller) analyseCanary(r *flaggerv1.Canary) bool {
val, err := observer.GetRequestSuccessRate(r.Spec.TargetRef.Name, r.Namespace, metric.Interval)
if err != nil {
if strings.Contains(err.Error(), "no values found") {
c.recordEventWarningf(r, "Halt advancement no values found for metric %s probably %s.%s is not receiving traffic",
metric.Name, r.Spec.TargetRef.Name, r.Namespace)
c.recordEventWarningf(r, "Halt advancement no values found for %s metric %s probably %s.%s is not receiving traffic",
metricsProvider, metric.Name, r.Spec.TargetRef.Name, r.Namespace)
} else {
c.recordEventErrorf(r, "Metrics server %s query failed: %v", metricsServer, err)
}
@@ -812,8 +815,8 @@ func (c *Controller) analyseCanary(r *flaggerv1.Canary) bool {
val, err := observer.GetRequestDuration(r.Spec.TargetRef.Name, r.Namespace, metric.Interval)
if err != nil {
if strings.Contains(err.Error(), "no values found") {
c.recordEventWarningf(r, "Halt advancement no values found for metric %s probably %s.%s is not receiving traffic",
metric.Name, r.Spec.TargetRef.Name, r.Namespace)
c.recordEventWarningf(r, "Halt advancement no values found for %s metric %s probably %s.%s is not receiving traffic",
metricsProvider, metric.Name, r.Spec.TargetRef.Name, r.Namespace)
} else {
c.recordEventErrorf(r, "Metrics server %s query failed: %v", metricsServer, err)
}