New Relic Latest
Scale applications based on New Relic NRQL
Trigger Specification
This specification describes the new-relic
trigger that scales based on a New Relic metric.
triggers:
- type: new-relic
metadata:
# Required: Account - Subaccount to run the query on
account: '1234567'
# Required: QueryKey - Api key to connect to New Relic
queryKey: "NRAK-xxxxxxxxxxxxxxxxxxxxxxxxxxx"
# Optional: nrRegion - Region to query data for. Default value is US.
region: "US"
# Optional: noDataError - If the query returns no data should this be treated as an error. Default value is false.
noDataError: "true"
# Required: nrql
nrql: "SELECT average(duration) from Transaction where appName='SITE'"
# Required: threshold
threshold: "50.50"
# Optional: activationThreshold - Target value for activating the scaler.
activationThreshold: "20.1"
Parameter list:
-
account
- The account within New Relic that the request should be targeted against. -
queryKey
- The API key that will be leveraged to connect to New Relic and make requests. official documentation -
region
- The region to connect to for the New Relic apis. (Values:LOCAL
,EU
,STAGING
,US
, Default:US
, Optional) -
noDataError
- Should queries that return nodata be treated as an error, if set to false and a query returns nodata, the result be0
. (Values:true
,false
, Default:false
, Optional) -
nrql
- The New Relic query that will be run to get the data requested.NOTE: The default New Relic time range for a query is last 30 minutes, which can produce unexpected responses. To mimic the behavior of a TIMESERIES query, you need to reduce the scope to 1 minute, this can be achieved by adding
SINCE 1 MINUTE AGO
to the query. official documentation official documentation -
threshold
- A threshold that is used as thetargetValue
ortargetAverageValue
(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.(Default:0
, Optional, This value can be a float)
Authentication Parameters
You can use TriggerAuthentication
CRD to configure the authentication with a queryKey
.
Authentication:
-
queryKey
- The API key that will be leveraged to connect to New Relic and make requests. official documentation -
account
- The account within New Relic that the request should be targeted against. This can be used to replace the value that would be provided in the trigger. -
region
- The region to connect to for the New Relic apis. This can be used to replace the value that would be provided in the trigger.
Example
Autoscaling trigger based on transaction duration average metric:
apiVersion: v1
kind: Secret
metadata:
name: new-relic-secret
namespace: my-project
type: Opaque
data:
apiKey: TlJBSy0xMjM0NTY3ODkwMTIzNDU2Nwo= # base64 encoding of the new relic api key NRAK-12345678901234567
account: MTIzNDU2 # base64 encoding of the new relic account number 123456
region: VVM= # base64 encoding of the new relic region US
---
apiVersion: keda.sh/v1alpha1
kind: TriggerAuthentication
metadata:
name: keda-trigger-auth-new-relic
namespace: my-project
spec:
secretTargetRef:
- parameter: queryKey
name: new-relic-secret
key: apiKey
- parameter: account
name: new-relic-secret
key: account
- parameter: region
name: new-relic-secret
key: region
---
apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata:
name: newrelic-scaledobject
namespace: keda
spec:
maxReplicaCount: 12
scaleTargetRef:
name: dummy
triggers:
- type: new-relic
metadata:
nrql: "SELECT average(duration) from Transaction where appName='SITE'"
noDataError: "true"
threshold: '1000'
authenticationRef:
name: keda-trigger-auth-new-relic
Autoscaling trigger based on transaction count rate metric:
apiVersion: v1
kind: Secret
metadata:
name: new-relic-secret
namespace: my-project
type: Opaque
data:
apiKey: TlJBSy0xMjM0NTY3ODkwMTIzNDU2Nwo= # base64 encoding of the new relic api key NRAK-12345678901234567
account: MTIzNDU2 # base64 encoding of the new relic account number 123456
region: VVM= # base64 encoding of the new relic region US
---
apiVersion: keda.sh/v1alpha1
kind: TriggerAuthentication
metadata:
name: keda-trigger-auth-new-relic
namespace: my-project
spec:
secretTargetRef:
- parameter: queryKey
name: new-relic-secret
key: apiKey
- parameter: account
name: new-relic-secret
key: account
- parameter: region
name: new-relic-secret
key: region
---
apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata:
name: newrelic-scaledobject
namespace: keda
spec:
maxReplicaCount: 12
scaleTargetRef:
name: dummy
triggers:
- type: new-relic
metadata:
nrql: "SELECT rate(count(*), 10 SECOND) FROM Transaction WHERE appName='SITE' SINCE 1 MINUTE AGO"
noDataError: "true"
threshold: '300'
authenticationRef:
name: keda-trigger-auth-new-relic