Dynatrace Latest

Scale applications based on Dynatrace metric data points

Availability: 2.15+ Maintainer: Community

Suggest a change

Trigger Specification

This specification describes the dynatrace trigger that scales based on Dynatrace metric data points.

triggers:
  - type: dynatrace
    metadata:
      host: https://dummy-instance.live.dynatrace.com/
      metricSelector: 'MyCustomEvent:filter(eq("someProperty","someValue")):count:splitBy("dt.entity.process_group"):fold'
      # Optional
      from: now-2d
      threshold: "10"
      # Optional
      activationThreshold: "5"

Parameter list:

  • host - The Dynatrace instance to query against

  • metricSelector - The metric selector query and any transformations that should be applied to it (transformations docs).

    Some relevant aspects:

    • The selector should focus on a single metric and dimension: if multiple are found, a warning is issued and only the first one is considered
    • The metric data points should be aggregated to produce a single output value (e.g., using the fold transformation): if multiple values are found, only the first one is considered
    • If you need to use the entity selector, do it through the :filter transformation in the metric selector
  • from - How far back the metric selector should consider when fetching data points. syntax supported. (Optional, default now-2h, i.e., the last 2 hours)

  • threshold - A threshold that is used as the targetValue or targetAverageValue (depending on the trigger metric type) in the HPA configuration. (This value can be a float)

  • activationThreshold - Target value for activating the scaler. Learn more about activation here. (Optional, default 0, can be a float)

Authentication Parameters

You can use TriggerAuthentication CRD to configure authentication the host and token parameters.

Authentication:

  • host - The Dynatrace instance to query against
  • token - The API key that will be leveraged to connect to Dynatrace and make requests (official documentation). Requires the metrics.read scope

Example

apiVersion: v1
kind: Secret
metadata:
  name: dynatrace-secret
  namespace: my-project
type: Opaque
data:
  host: aHR0cHM6Ly9kdW1teS1pbnN0YW5jZS5saXZlLmR5bmF0cmFjZS5jb20vCg== # base64 encoding of https://dummy-instance.live.dynatrace.com/
  token: ZHQwczAxLlNUMkVZNzJLUUlOTUg1NzRXTU5WSTdZTi5HM0RGUEJFSllNT0RJREFFWDQ1NE03WVdCVVZFRk9XS1BSVk1XRkFTUzY0TkZINTJQWDZCTkRWRkZNNTcyUlpNCg== # base64 encoding of the dynatrace example api key dt0s01.ST2EY72KQINMH574WMNVI7YN.G3DFPBEJYMODIDAEX454M7YWBUVEFOWKPRVMWFASS64NFH52PX6BNDVFFM572RZM
---
apiVersion: keda.sh/v1alpha1
kind: TriggerAuthentication
metadata:
  name: keda-trigger-auth-dynatrace
  namespace: my-project
spec:
  secretTargetRef:
  - parameter: token
    name: dynatrace-secret
    key: token
  - parameter: host
    name: dynatrace-secret
    key: host
---
apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata:
  name: dynatrace-scaledobject
  namespace: keda
spec:
  maxReplicaCount: 12
  scaleTargetRef:
    name: dummy
  triggers:
    - type: dynatrace
      metadata:
        metricSelector: 'MyCustomEvent:filter(eq("someProperty","someValue")):count:splitBy("dt.entity.process_group"):fold'
        from: 'now-30m'
        threshold: '1000'
      authenticationRef:
        name: keda-trigger-auth-dynatrace