From c01eb795c151838f559a486219e2e79bdab36daa Mon Sep 17 00:00:00 2001 From: cyrilico <19289022+cyrilico@users.noreply.github.com> Date: Tue, 30 Jul 2024 17:47:41 +0100 Subject: [PATCH] Add Dynatrace scaler docs (#1360) * add docs Signed-off-by: cyrilico <19289022+cyrilico@users.noreply.github.com> * add to 2.13 Signed-off-by: cyrilico <19289022+cyrilico@users.noreply.github.com> * remove 2.13 Signed-off-by: cyrilico <19289022+cyrilico@users.noreply.github.com> * Update content/docs/2.14/scalers/dynatrace.md Co-authored-by: Tom Kerkhove Signed-off-by: cyrilico <19289022+cyrilico@users.noreply.github.com> * remove token from trigger metadata Signed-off-by: cyrilico <19289022+cyrilico@users.noreply.github.com> * move to 2.15 Signed-off-by: cyrilico <19289022+cyrilico@users.noreply.github.com> * Update content/docs/2.15/scalers/dynatrace.md Co-authored-by: Jorge Turrado Ferrero Signed-off-by: cyrilico <19289022+cyrilico@users.noreply.github.com> * ignore non-existent 2.14 dynatrace link Signed-off-by: cyrilico <19289022+cyrilico@users.noreply.github.com> * remove token from metadata section docs Signed-off-by: cyrilico <19289022+cyrilico@users.noreply.github.com> --------- Signed-off-by: cyrilico <19289022+cyrilico@users.noreply.github.com> Co-authored-by: Tom Kerkhove Co-authored-by: Jorge Turrado Ferrero --- .htmltest.yml | 1 + content/docs/2.15/scalers/dynatrace.md | 93 ++++++++++++++++++++++++++ 2 files changed, 94 insertions(+) create mode 100644 content/docs/2.15/scalers/dynatrace.md diff --git a/.htmltest.yml b/.htmltest.yml index 3628b12af..3487b1cef 100644 --- a/.htmltest.yml +++ b/.htmltest.yml @@ -5,3 +5,4 @@ IgnoreAltMissing: true IgnoreEmptyHref: true IgnoreInternalURLs: - /docs/2.14/scalers/splunk/ + - /docs/2.14/scalers/dynatrace/ diff --git a/content/docs/2.15/scalers/dynatrace.md b/content/docs/2.15/scalers/dynatrace.md new file mode 100644 index 000000000..848ee3253 --- /dev/null +++ b/content/docs/2.15/scalers/dynatrace.md @@ -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 +```