<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Spinnaker – Configure a canary</title>
    <link>https://deploy-preview-629--spinnaker-io.netlify.app/docs/guides/user/canary/config/</link>
    <description>Recent content in Configure a canary on Spinnaker</description>
    <generator>Hugo -- gohugo.io</generator>
    
	  <atom:link href="https://deploy-preview-629--spinnaker-io.netlify.app/docs/guides/user/canary/config/index.xml" rel="self" type="application/rss+xml" />
    
    
      
        
      
    
    
    <item>
      <title>Docs: Configure a canary</title>
      <link>https://deploy-preview-629--spinnaker-io.netlify.app/docs/guides/user/canary/config/canary-config/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://deploy-preview-629--spinnaker-io.netlify.app/docs/guides/user/canary/config/canary-config/</guid>
      <description>
        
        
        &lt;p&gt;Before you can add a canary stage to a pipeline, you need to configure what the
canary consists of, including:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A name by which a canary stage can choose this config&lt;/li&gt;
&lt;li&gt;The specific metrics to evaluate, and a logical grouping of those metrics&lt;/li&gt;
&lt;li&gt;Default scoring thresholds (which can be overridden in the
canary stage)&lt;/li&gt;
&lt;li&gt;Optionally, one or more filter templates&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Canary configuration is done per Spinnaker

&lt;a href=&#34;https://deploy-preview-629--spinnaker-io.netlify.app/docs/concepts/#application&#34;&gt;application&lt;/a&gt;
. For each
application set up to support canary, you create one or more configs.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Note: By default, all the canary configs you create are visible to all
applications. But you can 
&lt;a href=&#34;https://deploy-preview-629--spinnaker-io.netlify.app/docs/setup/other_config/canary/#specify-the-scope-of-canary-configs&#34;&gt;change
that&lt;/a&gt;
.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The configuration you create here is available to canary stages in pipelines,
but those 
&lt;a href=&#34;https://deploy-preview-629--spinnaker-io.netlify.app/docs/guides/user/canary/stage/&#34;&gt;stages are defined separately&lt;/a&gt;
.&lt;/p&gt;
&lt;h2 id=&#34;prerequisites&#34;&gt;Prerequisites&lt;/h2&gt;
&lt;p&gt;By default, canary is not enabled for new applications. Several things need to
happen before you see the &lt;strong&gt;Canary&lt;/strong&gt; tab in Deck:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;The person or people setting up Spinnaker for you must 
&lt;a href=&#34;https://deploy-preview-629--spinnaker-io.netlify.app/docs/setup/other_config/canary/&#34;&gt;set up
Canary&lt;/a&gt;
.&lt;/p&gt;
&lt;p&gt;This includes 
&lt;a href=&#34;https://deploy-preview-629--spinnaker-io.netlify.app/docs/setup/other_config/canary/#specify-the-scope-of-canary-configs&#34;&gt;specifying&lt;/a&gt;
  whether all canary configs are available to all applications (the default) or
each application can have one or more configurations that are visible to that
application only.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;In the Application config, activate the &lt;strong&gt;Canary&lt;/strong&gt; option.&lt;/p&gt;
&lt;p&gt;Do this separately for all applications that will use automated canary
analysis.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://deploy-preview-629--spinnaker-io.netlify.app/docs/guides/user/canary/config/enable_canary.png&#34; alt=&#34;Enable canary&#34;&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;create-a-canary-configuration&#34;&gt;Create a canary configuration&lt;/h2&gt;
&lt;p&gt;You can create as many of these as you like, and when you create a canary stage,
you must select a canary configuration to use. Configurations you create within an
application are available to all pipelines in that application, but your
Spinnaker might be set up so that all configurations are available to all
applications.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Hover over the &lt;strong&gt;Delivery&lt;/strong&gt; tab, and select &lt;strong&gt;Canary configs&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://deploy-preview-629--spinnaker-io.netlify.app/docs/guides/user/canary/config/delivery_menu_canary.png&#34; alt=&#34;Select Canary from the Delivery menu.&#34;&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Select &lt;strong&gt;Add configuration&lt;/strong&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Provide a &lt;strong&gt;Name&lt;/strong&gt; and &lt;strong&gt;Description&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;This is the name shown in the stage config when you create a canary stage for
your pipeline.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;(Optional) select your telemetry provider from the &lt;strong&gt;Metric Store&lt;/strong&gt; dropdown.&lt;/p&gt;
&lt;p&gt;If you have only one provider set up, this drop-down is not shown.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://deploy-preview-629--spinnaker-io.netlify.app/docs/guides/user/canary/config/canary_config_create.png&#34; alt=&#34;Canary config declaration&#34;&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The sections below describe how to specify the metrics and the scoring thresholds
and weights.&lt;/p&gt;
&lt;h3 id=&#34;create-metric-groups-and-add-metrics&#34;&gt;Create metric groups and add metrics&lt;/h3&gt;
&lt;p&gt;The metrics available depend on the telemetry provider you use. Spinnaker
currently supports 
&lt;a href=&#34;https://cloud.google.com/Stackdriver/&#34; target=&#34;_blank&#34;&gt;Stackdriver&lt;/a&gt;
,

&lt;a href=&#34;https://Prometheus.io&#34; target=&#34;_blank&#34;&gt;Prometheus&lt;/a&gt;
, 
&lt;a href=&#34;https://www.datadoghq.com&#34; target=&#34;_blank&#34;&gt;Datadog&lt;/a&gt;
,

&lt;a href=&#34;https://docs.signalfx.com&#34; target=&#34;_blank&#34;&gt;Signalfx&lt;/a&gt;
, and 
&lt;a href=&#34;https://docs.newrelic.com/&#34; target=&#34;_blank&#34;&gt;New Relic&lt;/a&gt;
.&lt;/p&gt;
&lt;p&gt;Metrics are evaluated even if they&amp;rsquo;re not added to groups, but if you want to
apply the weighting that determines the relative importance of different metrics,
you need to 
&lt;a href=&#34;#create-metric-groups-and-add-metrics&#34;&gt;add them to groups&lt;/a&gt;
.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Create any groups you want to organize the metrics into.&lt;/p&gt;
&lt;p&gt;Data is evaluated for all metrics, but metrics scores only affect the canary
evaluation for metrics that are grouped here.&lt;/p&gt;
&lt;p&gt;Click &lt;strong&gt;Add Group&lt;/strong&gt; to create each group you&amp;rsquo;ll use. Then select the group
and click the edit icon to name it.&lt;/p&gt;
&lt;p&gt;For example, you might create a group called &amp;ldquo;cpu&amp;rdquo; and add a set of
CPU-related metrics. Then when you configure a new metric here, you would
select &amp;ldquo;cpu&amp;rdquo; for the CPU-related metrics you add.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;In the &lt;strong&gt;Metrics&lt;/strong&gt; section, select &lt;strong&gt;Add Metric&lt;/strong&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Select the group to add this metric to.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Give the metric a name.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Specify whether this metric fails when the value deviates too high or too low
compared to the baseline.&lt;/p&gt;
&lt;p&gt;Or select &lt;strong&gt;either&lt;/strong&gt;, in which case it fails on deviation in either direction.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Optionally, choose a 
&lt;a href=&#34;https://deploy-preview-629--spinnaker-io.netlify.app/docs/guides/user/canary/config/filter-templates/&#34;&gt;filter template&lt;/a&gt;
.&lt;/p&gt;
&lt;p&gt;This is only available  if your Spinnaker is setup with canaries.&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s an example:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;resource.type = &amp;#34;gce_instance&amp;#34; AND
resource.labels.zone = starts_with(&amp;#34;${zone}&amp;#34;)
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Identify the specific metric you&amp;rsquo;re including in the analysis configuration:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;In the &lt;strong&gt;Metric Type&lt;/strong&gt; field type at least 3 characters to populate the
field with available metrics.&lt;/p&gt;
&lt;p&gt;For example, if you type &lt;code&gt;cpu&lt;/code&gt; you get a list of metrics available from
your telemetry provider.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://deploy-preview-629--spinnaker-io.netlify.app/docs/guides/user/canary/config/metric_type_list_cpu.png&#34; alt=&#34;List of available metrics&#34;&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Optionally, if your telemetry provider supports aggregation of results, click
&lt;strong&gt;Group by&lt;/strong&gt; and enter the metric metadata attribute by which to group and
aggregate the data.&lt;/p&gt;
&lt;p&gt;For example, when you create a metric you can group its time series by
resource or metric label. You can group a time series by zone, for example
(&lt;code&gt;resource.zone&lt;/code&gt;).  This is supported in

&lt;a href=&#34;https://cloud.google.com/monitoring/charts/metrics-selector#groupby-option&#34; target=&#34;_blank&#34;&gt;Stackdriver&lt;/a&gt;

and 
&lt;a href=&#34;&#34;&gt;Prometheus&lt;/a&gt;
 only.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Metric groups versus grouping metrics&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;When you create a canary configuration, you 
&lt;a href=&#34;https://deploy-preview-629--spinnaker-io.netlify.app/docs/guides/user/canary/config/#create-metric-groups-and-add-metrics&#34;&gt;create metric
groups&lt;/a&gt;
,
and scoring thresholds and weights are applied to groups (rather than to
specific metrics). But the grouping described in this step is for
aggregating metrics before they&amp;rsquo;re returned to Kayenta.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Click &lt;strong&gt;OK&lt;/strong&gt; to save this metric.&lt;/p&gt;
&lt;p&gt;Your metric is now listed under the specific group you selected for it, and
under &lt;strong&gt;All&lt;/strong&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;add-filter-templates&#34;&gt;Add filter templates&lt;/h3&gt;
&lt;p&gt;If your telemetry provider is Stackdriver, Prometheus, or Datadog, you can add 
&lt;a href=&#34;https://deploy-preview-629--spinnaker-io.netlify.app/docs/guides/user/canary/config/filter-templates/&#34;&gt;filter templates&lt;/a&gt;
 and then assign each
metric a filter template, if you want.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Click &lt;strong&gt;Add Template&lt;/strong&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Provide a &lt;strong&gt;Name&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;This is the name by which you can select it when configuring the specific
metric.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;In the &lt;strong&gt;Template&lt;/strong&gt; field, enter an expression using the 
&lt;a href=&#34;https://freemarker.apache.org/&#34; target=&#34;_blank&#34;&gt;FreeMarker&lt;/a&gt;

template language.&lt;/p&gt;
&lt;p&gt;See the interpolation syntax 
&lt;a href=&#34;https://freemarker.apache.org/docs/dgui_quickstart_template.html&#34; target=&#34;_blank&#34;&gt;here&lt;/a&gt;
.&lt;/p&gt;
&lt;p&gt;The expression is expanded using the variable bindings specified via the &lt;strong&gt;Extended
Params&lt;/strong&gt; in any 
&lt;a href=&#34;https://deploy-preview-629--spinnaker-io.netlify.app/docs/guides/user/canary/stage/#define-the-canary-stage&#34;&gt;canary stage&lt;/a&gt;
 that uses this
configuration.&lt;/p&gt;
&lt;p&gt;These variable bindings are also implicitly available: &lt;code&gt;project&lt;/code&gt;, &lt;code&gt;resourceType&lt;/code&gt;, &lt;code&gt;scope&lt;/code&gt;, &lt;code&gt;location&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;advanced-metric-configuration&#34;&gt;Advanced metric configuration&lt;/h3&gt;
&lt;p&gt;Each metric supports additional configuration options in the &lt;code&gt;analysisConfigurations.canary&lt;/code&gt;
section of the JSON config. These options control how the judge handles the metric:&lt;/p&gt;
&lt;h4 id=&#34;nan-and-missing-data&#34;&gt;NaN and missing data&lt;/h4&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Option&lt;/th&gt;
&lt;th&gt;Default&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;nanStrategy&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;remove&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;How to handle NaN values: &lt;code&gt;remove&lt;/code&gt; (filter out) or &lt;code&gt;replace&lt;/code&gt; (replace with 0.0)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;mustHaveData&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;If &lt;code&gt;true&lt;/code&gt;, missing data causes the metric to fail (&lt;code&gt;NodataFailMetric&lt;/code&gt;)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;critical&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;If &lt;code&gt;true&lt;/code&gt;, a High/Low classification fails the entire canary (score = 0)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;muted&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;If &lt;code&gt;true&lt;/code&gt;, metric is excluded from scoring but still shown in results&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h4 id=&#34;effect-size-thresholds&#34;&gt;Effect size thresholds&lt;/h4&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Option&lt;/th&gt;
&lt;th&gt;Default&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;effectSize.measure&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;meanRatio&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Effect size measure: &lt;code&gt;meanRatio&lt;/code&gt; or &lt;code&gt;cles&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;effectSize.allowedIncrease&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;1.0&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Ratio threshold for High classification&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;effectSize.allowedDecrease&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;1.0&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Ratio threshold for Low classification&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;effectSize.criticalIncrease&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;1.0&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Ratio threshold for critical High (requires &lt;code&gt;critical: true&lt;/code&gt;)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;effectSize.criticalDecrease&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;1.0&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Ratio threshold for critical Low (requires &lt;code&gt;critical: true&lt;/code&gt;)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h4 id=&#34;outlier-removal&#34;&gt;Outlier removal&lt;/h4&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Option&lt;/th&gt;
&lt;th&gt;Default&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;outliers.strategy&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;keep&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Outlier handling: &lt;code&gt;keep&lt;/code&gt; or &lt;code&gt;remove&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;outliers.outlierFactor&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;3.0&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;IQR multiplier for outlier detection&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h4 id=&#34;example-json-configuration&#34;&gt;Example JSON configuration&lt;/h4&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;name&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;error-rate&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;analysisConfigurations&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;canary&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;direction&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;increase&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;nanStrategy&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;replace&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;critical&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;true&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;effectSize&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;allowedIncrease&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;1.1&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;criticalIncrease&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;1.5&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;For details on how these options affect the judge&amp;rsquo;s behavior, see

&lt;a href=&#34;https://deploy-preview-629--spinnaker-io.netlify.app/docs/guides/user/canary/judge/&#34;&gt;How canary judgment works&lt;/a&gt;
.&lt;/p&gt;
&lt;h2 id=&#34;edit-a-configuration&#34;&gt;Edit a configuration&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;On the &lt;strong&gt;Delivery&lt;/strong&gt; tab, select &lt;strong&gt;Canary Configs&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;All available existing configs are listed along the left margin. Note that
the application that owns a config is shown under the name, in cases where
configs are scoped to individual applications.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Select the config you want to edit.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: Create and use filter templates</title>
      <link>https://deploy-preview-629--spinnaker-io.netlify.app/docs/guides/user/canary/config/filter-templates/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://deploy-preview-629--spinnaker-io.netlify.app/docs/guides/user/canary/config/filter-templates/</guid>
      <description>
        
        
        &lt;p&gt;Filter templates allow you to compose and parameterize advanced queries against
your telemetry provider. Parameterized queries are hydrated by values provided
in the 
&lt;a href=&#34;https://deploy-preview-629--spinnaker-io.netlify.app/docs/guides/user/canary/stage/#extended-params&#34;&gt;canary stage&lt;/a&gt;
.&lt;/p&gt;
&lt;h2 id=&#34;things-to-keep-in-mind&#34;&gt;Things to keep in mind&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Each filter template you create for a given canary configuration is available
to each individual metric you add.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The query against your metrics is the metric type &lt;em&gt;plus&lt;/em&gt; selectors that refine
what is returned in the time series.&lt;/p&gt;
&lt;p&gt;For Spinnaker canary purposes, the filter template contains only those
refining selectors. The metric type is provided by the list of metrics above.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The purpose of the metric filter is to allow you to parameterize what
is in these refining selectors, but it is perfectly legal to use literal
values in filter templates.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;create-a-filter-template&#34;&gt;Create a filter template&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;In the 
&lt;a href=&#34;https://deploy-preview-629--spinnaker-io.netlify.app/docs/guides/user/canary/config/&#34;&gt;canary configuration&lt;/a&gt;
, find the &lt;strong&gt;Filter
Templates&lt;/strong&gt; section, and click &lt;strong&gt;Add Template&lt;/strong&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Provide a name.&lt;/p&gt;
&lt;p&gt;This name is then populated in the &lt;strong&gt;Configure Metric&lt;/strong&gt; dialog for each
individual metric in this config.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://deploy-preview-629--spinnaker-io.netlify.app/docs/guides/user/canary/config/configure_metric_dialog.png&#34; alt=&#34;Simple query template&#34;&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;In the &lt;strong&gt;Template&lt;/strong&gt; field, enter the filter.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://deploy-preview-629--spinnaker-io.netlify.app/docs/guides/user/canary/config/a_filter_template.png&#34; alt=&#34;Simple query template&#34;&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;apply-filter-templates-to-metrics&#34;&gt;Apply filter templates to metrics&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;For any metric in this configuration, click the edit icon.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Click the &lt;strong&gt;Filter Template&lt;/strong&gt; field, and select the template you want to
apply to time series using this metric.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;provide-runtime-values-for-parameterized-filters&#34;&gt;Provide runtime values for parameterized filters&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;In the 
&lt;a href=&#34;https://deploy-preview-629--spinnaker-io.netlify.app/docs/guides/user/canary/stage/&#34;&gt;canary stage config&lt;/a&gt;
, under &lt;strong&gt;Extended
Params&lt;/strong&gt;, click &lt;strong&gt;Add Field&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;This will create a value for one parameter.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Under &lt;strong&gt;Key&lt;/strong&gt;, type a variable you used in a filter template in the config
this stage is using.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Add the value you want for that variable. You can use any literal or

&lt;a href=&#34;https://deploy-preview-629--spinnaker-io.netlify.app/docs/guides/user/pipeline/expressions/&#34;&gt;pipeline expression&lt;/a&gt;
.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&#34;https://deploy-preview-629--spinnaker-io.netlify.app/docs/guides/user/canary/config/extended_params.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;

      </description>
    </item>
    
  </channel>
</rss>
