Skip to content

Commit

Permalink
Add Dynatrace scaler docs (#1360)
Browse files Browse the repository at this point in the history
* add docs

Signed-off-by: cyrilico <[email protected]>

* add to 2.13

Signed-off-by: cyrilico <[email protected]>

* remove 2.13

Signed-off-by: cyrilico <[email protected]>

* Update content/docs/2.14/scalers/dynatrace.md

Co-authored-by: Tom Kerkhove <[email protected]>
Signed-off-by: cyrilico <[email protected]>

* remove token from trigger metadata

Signed-off-by: cyrilico <[email protected]>

* move to 2.15

Signed-off-by: cyrilico <[email protected]>

* Update content/docs/2.15/scalers/dynatrace.md

Co-authored-by: Jorge Turrado Ferrero <[email protected]>
Signed-off-by: cyrilico <[email protected]>

* ignore non-existent 2.14 dynatrace link

Signed-off-by: cyrilico <[email protected]>

* remove token from metadata section docs

Signed-off-by: cyrilico <[email protected]>

---------

Signed-off-by: cyrilico <[email protected]>
Co-authored-by: Tom Kerkhove <[email protected]>
Co-authored-by: Jorge Turrado Ferrero <[email protected]>
  • Loading branch information
3 people authored Jul 30, 2024
1 parent 38c30ca commit c01eb79
Show file tree
Hide file tree
Showing 2 changed files with 94 additions and 0 deletions.
1 change: 1 addition & 0 deletions .htmltest.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,4 @@ IgnoreAltMissing: true
IgnoreEmptyHref: true
IgnoreInternalURLs:
- /docs/2.14/scalers/splunk/
- /docs/2.14/scalers/dynatrace/
93 changes: 93 additions & 0 deletions content/docs/2.15/scalers/dynatrace.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
+++
title = "Dynatrace"
availability = "2.15+"
maintainer = "Community"
category = "Metrics"
description = "Scale applications based on Dynatrace metric data points"
go_file = "dynatrace_scaler"
+++

### Trigger Specification

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

```yaml
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](https://docs.dynatrace.com/docs/dynatrace-api/environment-api/metric-v2/metric-selector)).

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](https://docs.dynatrace.com/docs/shortlink/api-metrics-v2-selector#fold)): 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](https://docs.dynatrace.com/docs/dynatrace-api/environment-api/metric-v2/get-data-points#parameters). (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](./../concepts/scaling-deployments.md#activating-and-scaling-thresholds). (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](https://docs.dynatrace.com/docs/dynatrace-api/basics/dynatrace-api-authentication)). Requires the `metrics.read` scope

### Example

```yaml
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
```

0 comments on commit c01eb79

Please sign in to comment.