Skip to content

InfluxDB Metrics

An InfluxDB query using Flux can be used to obtain measurements for analysis.

apiVersion: argoproj.io/v1alpha1
kind: AnalysisTemplate
metadata:
  name: error-rate
spec:
  args:
  - name: application-name
  metrics:
  - name: error-rate
    # NOTE: To be consistent with the prometheus metrics provider InfluxDB query results are returned as an array.
    # In the example we're looking at index 0 of the returned array to obtain the value we're using for the success condition
    successCondition: result[0] <= 0.01
    provider:
      influxdb:
        profile: my-influxdb-secret  # optional, defaults to 'influxdb'
        query: |
          from(bucket: "app_istio")
            |> range(start: -15m)
            |> filter(fn: (r) => r["destination_workload"] == "{{ args.application-name }}")
            |> filter(fn: (r) => r["_measurement"] == "istio:istio_requests_errors_percentage:rate1m:5xx")

An InfluxDB access profile can be configured using a Kubernetes secret in the argo-rollouts namespace. Alternate accounts can be used by creating more secrets of the same format and specifying which secret to use in the metric provider configuration using the profile field.

apiVersion: v1
kind: Secret
metadata:
  name: influxdb
type: Opaque
stringData:
  address: <infuxdb-url>
  authToken: <influxdb-auth-token>
  org: <influxdb-org>