Skip to content

Instantly share code, notes, and snippets.

@fieldju
Created January 15, 2019 23:13
Show Gist options
  • Save fieldju/ab2df3e62ea190108dc16fcbcc13f515 to your computer and use it in GitHub Desktop.
Save fieldju/ab2df3e62ea190108dc16fcbcc13f515 to your computer and use it in GitHub Desktop.
{
"name": "node-golden-signals-example",
"description": "Golden Signals for the Nike SignalFx Node Metrics Lib with Express middleware.",
"judge": {
"judgeConfigurations": {},
"name": "NetflixACAJudge-v1.0"
},
"metrics": [
{
"name": "95th Percentile Request Latency for /hello",
"query": {
"metricName": "requests.p95",
"queryPairs": [
{
"key": "uri",
"value": "/hello"
},
{
"key": "statusCode",
"value": "2*"
}
],
"aggregationMethod": "mean",
"serviceType": "signalfx",
"type": "signalfx"
},
"analysisConfigurations": {
"canary": {
"direction": "increase",
"critical": false
}
},
"groups": [
"Latency"
],
"scopeName": "default"
},
{
"name": "95th Percentile Request Latency for /foo",
"query": {
"metricName": "requests.p95",
"queryPairs": [
{
"key": "uri",
"value": "/foo"
},
{
"key": "statusCode",
"value": "2*"
}
],
"aggregationMethod": "mean",
"serviceType": "signalfx",
"type": "signalfx"
},
"analysisConfigurations": {
"canary": {
"direction": "increase",
"nanStrategy": "replace",
"critical": false
}
},
"groups": [
"Latency"
],
"scopeName": "default"
},
{
"name": "Successful request count",
"query": {
"metricName": "requests.count",
"queryPairs": [
{
"key": "statusCode",
"value": "2*"
}
],
"aggregationMethod": "sum",
"serviceType": "signalfx",
"type": "signalfx"
},
"analysisConfigurations": {
"canary": {
"direction": "decrease",
"nanStrategy": "remove",
"critical": false
}
},
"groups": [
"Traffic"
],
"scopeName": "default"
},
{
"name": "Successful request count for /hello",
"query": {
"metricName": "requests.count",
"queryPairs": [
{
"key": "uri",
"value": "/hello"
},
{
"key": "statusCode",
"value": "2*"
}
],
"aggregationMethod": "sum",
"serviceType": "signalfx",
"type": "signalfx"
},
"analysisConfigurations": {
"canary": {
"direction": "decrease",
"nanStrategy": "replace",
"mustHaveData": true
}
},
"groups": [
"Traffic"
],
"scopeName": "default"
},
{
"name": "Successful request count for /foo",
"query": {
"metricName": "requests.count",
"queryPairs": [
{
"key": "uri",
"value": "/foo"
},
{
"key": "statusCode",
"value": "2*"
}
],
"aggregationMethod": "sum",
"serviceType": "signalfx",
"type": "signalfx"
},
"analysisConfigurations": {
"canary": {
"direction": "decrease",
"nanStrategy": "replace",
"critical": false
}
},
"groups": [
"Traffic"
],
"scopeName": "default"
},
{
"name": "Server Error count for /hello",
"query": {
"metricName": "requests.count",
"queryPairs": [
{
"key": "uri",
"value": "/hello"
},
{
"key": "statusCode",
"value": "5*"
}
],
"aggregationMethod": "sum",
"serviceType": "signalfx",
"type": "signalfx"
},
"analysisConfigurations": {
"canary": {
"direction": "increase",
"nanStrategy": "replace",
"critical": false
}
},
"groups": [
"Errors",
"Traffic"
],
"scopeName": "default"
},
{
"name": "Request Error count for /hello",
"query": {
"metricName": "requests.count",
"queryPairs": [
{
"key": "uri",
"value": "/hello"
},
{
"key": "statusCode",
"value": "4*"
}
],
"aggregationMethod": "sum",
"serviceType": "signalfx",
"type": "signalfx"
},
"analysisConfigurations": {
"canary": {
"direction": "increase",
"nanStrategy": "replace",
"critical": false
}
},
"groups": [
"Errors",
"Traffic"
],
"scopeName": "default"
},
{
"name": "Server Error count for /foo",
"query": {
"metricName": "requests.count",
"queryPairs": [
{
"key": "uri",
"value": "/foo"
},
{
"key": "statusCode",
"value": "5*"
}
],
"aggregationMethod": "sum",
"serviceType": "signalfx",
"type": "signalfx"
},
"analysisConfigurations": {
"canary": {
"direction": "increase",
"nanStrategy": "replace",
"critical": false
}
},
"groups": [
"Errors",
"Traffic"
],
"scopeName": "default"
},
{
"name": "Request Error count for /foo",
"query": {
"metricName": "requests.count",
"queryPairs": [
{
"key": "uri",
"value": "/foo"
},
{
"key": "statusCode",
"value": "4*"
}
],
"aggregationMethod": "sum",
"serviceType": "signalfx",
"type": "signalfx"
},
"analysisConfigurations": {
"canary": {
"direction": "increase",
"nanStrategy": "replace",
"critical": false
}
},
"groups": [
"Errors"
],
"scopeName": "default"
},
{
"name": "Available System Memory",
"query": {
"metricName": "node.os.freemem",
"aggregationMethod": "mean",
"serviceType": "signalfx",
"type": "signalfx"
},
"analysisConfigurations": {
"canary": {
"direction": "decrease",
"nanStrategy": "remove",
"critical": false,
"effectSize": {
"allowedIncrease": 1.10,
"criticalIncrease": 25
}
}
},
"groups": [
"Saturation"
],
"scopeName": "default"
},
{
"name": "OS 1m Load Average",
"query": {
"metricName": "node.os.loadavg.1m",
"aggregationMethod": "mean",
"serviceType": "signalfx",
"type": "signalfx"
},
"analysisConfigurations": {
"canary": {
"direction": "increase",
"nanStrategy": "remove",
"critical": false,
"effectSize": {
"allowedIncrease": 1.50,
"criticalIncrease": 25
}
}
},
"groups": [
"Saturation"
],
"scopeName": "default"
},
{
"name": "Node Heap Used",
"query": {
"metricName": "node.process.memory-usage.heap-used",
"aggregationMethod": "mean",
"serviceType": "signalfx",
"type": "signalfx"
},
"analysisConfigurations": {
"canary": {
"direction": "increase",
"nanStrategy": "remove",
"critical": false,
"effectSize": {
"allowedIncrease": 1.10,
"criticalIncrease": 25
}
}
},
"groups": [
"Saturation"
],
"scopeName": "default"
}
],
"classifier": {
"groupWeights": {
"Latency": 20,
"Traffic": 20,
"Errors": 50,
"Saturation": 10
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment