newrelic 7.5.2 → 8.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (158) hide show
  1. package/NEWS.md +4989 -4886
  2. package/THIRD_PARTY_NOTICES.md +625 -216
  3. package/api.js +105 -174
  4. package/bin/test-naming-rules.js +38 -32
  5. package/bin/tracetractor +0 -1
  6. package/index.js +12 -18
  7. package/lib/agent.js +108 -111
  8. package/lib/aggregators/base-aggregator.js +1 -1
  9. package/lib/aggregators/event-aggregator.js +6 -6
  10. package/lib/attributes.js +12 -13
  11. package/lib/collector/api.js +32 -42
  12. package/lib/collector/facts.js +67 -65
  13. package/lib/collector/http-agents.js +30 -27
  14. package/lib/collector/parse-response.js +1 -2
  15. package/lib/collector/remote-method.js +43 -36
  16. package/lib/collector/serverless.js +13 -18
  17. package/lib/collector/ssl/certificates.js +1056 -1056
  18. package/lib/config/attribute-filter.js +90 -82
  19. package/lib/config/default.js +30 -18
  20. package/lib/config/env.js +17 -12
  21. package/lib/config/harvest-config-validator.js +1 -1
  22. package/lib/config/index.js +160 -177
  23. package/lib/config/merge-server-config.js +7 -5
  24. package/lib/custom-events/custom-event-aggregator.js +1 -1
  25. package/lib/db/parse-sql.js +6 -9
  26. package/lib/db/parsed-statement.js +6 -13
  27. package/lib/db/query-parsers/sql.js +6 -9
  28. package/lib/db/query-sample.js +7 -3
  29. package/lib/db/query-trace-aggregator.js +12 -12
  30. package/lib/db/utils.js +1 -1
  31. package/lib/environment.js +173 -138
  32. package/lib/errors/error-collector.js +18 -31
  33. package/lib/errors/error-event-aggregator.js +1 -1
  34. package/lib/errors/error-trace-aggregator.js +2 -3
  35. package/lib/errors/helper.js +21 -30
  36. package/lib/errors/index.js +16 -28
  37. package/lib/feature_flags.js +5 -8
  38. package/lib/grpc/connection/states.js +6 -6
  39. package/lib/grpc/connection.js +35 -46
  40. package/lib/header-attributes.js +49 -53
  41. package/lib/instrumentation/amqplib.js +8 -17
  42. package/lib/instrumentation/bluebird.js +61 -20
  43. package/lib/instrumentation/cassandra-driver.js +2 -2
  44. package/lib/instrumentation/connect.js +4 -3
  45. package/lib/instrumentation/core/async_hooks.js +11 -4
  46. package/lib/instrumentation/core/child_process.js +20 -28
  47. package/lib/instrumentation/core/crypto.js +1 -7
  48. package/lib/instrumentation/core/dns.js +3 -7
  49. package/lib/instrumentation/core/domain.js +2 -8
  50. package/lib/instrumentation/core/fs.js +22 -37
  51. package/lib/instrumentation/core/globals.js +3 -7
  52. package/lib/instrumentation/core/http-outbound.js +15 -40
  53. package/lib/instrumentation/core/http.js +29 -63
  54. package/lib/instrumentation/core/inspector.js +6 -10
  55. package/lib/instrumentation/core/net.js +3 -1
  56. package/lib/instrumentation/core/timers.js +17 -24
  57. package/lib/instrumentation/core/zlib.js +2 -10
  58. package/lib/instrumentation/express.js +4 -2
  59. package/lib/instrumentation/fastify/spec-builders.js +5 -0
  60. package/lib/instrumentation/fastify.js +37 -10
  61. package/lib/instrumentation/hapi/hapi-17.js +9 -10
  62. package/lib/instrumentation/hapi.js +15 -15
  63. package/lib/instrumentation/ioredis.js +1 -2
  64. package/lib/instrumentation/memcached.js +39 -43
  65. package/lib/instrumentation/mongodb/common.js +218 -0
  66. package/lib/instrumentation/mongodb/constants.js +87 -0
  67. package/lib/instrumentation/mongodb/v2-mongo.js +110 -0
  68. package/lib/instrumentation/mongodb/v3-mongo.js +80 -0
  69. package/lib/instrumentation/mongodb/v4-mongo.js +90 -0
  70. package/lib/instrumentation/mongodb.js +20 -312
  71. package/lib/instrumentation/mysql.js +33 -26
  72. package/lib/instrumentation/oracle.js +10 -14
  73. package/lib/instrumentation/pg.js +30 -21
  74. package/lib/instrumentation/promise.js +20 -17
  75. package/lib/instrumentation/redis.js +30 -30
  76. package/lib/instrumentation/when.js +9 -1
  77. package/lib/instrumentations.js +24 -24
  78. package/lib/logger.js +1 -1
  79. package/lib/metrics/index.js +37 -17
  80. package/lib/metrics/mapper.js +9 -9
  81. package/lib/metrics/metric-aggregator.js +5 -10
  82. package/lib/metrics/names.js +8 -7
  83. package/lib/metrics/normalizer/rule.js +6 -7
  84. package/lib/metrics/normalizer/tx_segment.js +17 -13
  85. package/lib/metrics/normalizer.js +30 -33
  86. package/lib/metrics/recorders/custom.js +3 -1
  87. package/lib/metrics/recorders/distributed-trace.js +3 -18
  88. package/lib/metrics/recorders/generic.js +3 -2
  89. package/lib/metrics/recorders/http.js +4 -6
  90. package/lib/metrics/recorders/http_external.js +1 -3
  91. package/lib/metrics/recorders/message-transaction.js +2 -12
  92. package/lib/metrics/recorders/other.js +2 -12
  93. package/lib/parse-proc-cpuinfo.js +11 -16
  94. package/lib/parse-proc-meminfo.js +5 -3
  95. package/lib/prioritized-attributes.js +12 -17
  96. package/lib/priority-queue.js +1 -1
  97. package/lib/proxy/grpc.js +1 -1
  98. package/lib/reservoir.js +9 -3
  99. package/lib/sampler.js +12 -13
  100. package/lib/serverless/api-gateway.js +3 -3
  101. package/lib/serverless/aws-lambda.js +28 -37
  102. package/lib/shim/conglomerate-shim.js +4 -4
  103. package/lib/shim/datastore-shim.js +29 -38
  104. package/lib/shim/index.js +8 -9
  105. package/lib/shim/message-shim.js +111 -113
  106. package/lib/shim/promise-shim.js +18 -13
  107. package/lib/shim/shim.js +72 -66
  108. package/lib/shim/specs/index.js +18 -19
  109. package/lib/shim/transaction-shim.js +26 -36
  110. package/lib/shim/webframework-shim.js +25 -35
  111. package/lib/shimmer.js +184 -166
  112. package/lib/spans/create-span-event-aggregator.js +24 -44
  113. package/lib/spans/span-context.js +4 -10
  114. package/lib/spans/span-event-aggregator.js +68 -13
  115. package/lib/spans/span-event.js +5 -7
  116. package/lib/spans/span-streamer.js +10 -18
  117. package/lib/spans/streaming-span-event-aggregator.js +1 -1
  118. package/lib/spans/streaming-span-event.js +4 -4
  119. package/lib/stats/apdex.js +5 -11
  120. package/lib/stats/index.js +12 -17
  121. package/lib/system-info.js +7 -3
  122. package/lib/timer.js +30 -16
  123. package/lib/transaction/dt-payload.js +1 -1
  124. package/lib/transaction/handle.js +19 -19
  125. package/lib/transaction/index.js +94 -112
  126. package/lib/transaction/name-state.js +5 -6
  127. package/lib/transaction/trace/aggregator.js +78 -73
  128. package/lib/transaction/trace/exclusive-time-calculator.js +5 -9
  129. package/lib/transaction/trace/index.js +26 -24
  130. package/lib/transaction/trace/segment.js +39 -56
  131. package/lib/transaction/tracecontext.js +37 -45
  132. package/lib/transaction/tracer/index.js +79 -44
  133. package/lib/transaction/transaction-event-aggregator.js +29 -31
  134. package/lib/uninstrumented.js +4 -5
  135. package/lib/util/attribute-types.js +1 -5
  136. package/lib/util/byte-limit.js +0 -1
  137. package/lib/util/cat.js +5 -13
  138. package/lib/util/codec.js +8 -4
  139. package/lib/util/deep-equal.js +48 -18
  140. package/lib/util/flatten.js +5 -2
  141. package/lib/util/hashes.js +2 -2
  142. package/lib/util/label-parser.js +7 -13
  143. package/lib/util/logger.js +31 -13
  144. package/lib/util/process-version.js +1 -1
  145. package/lib/util/properties.js +1 -1
  146. package/lib/util/sql/obfuscate.js +7 -17
  147. package/lib/util/stream-sink.js +2 -3
  148. package/lib/util/urltils.js +9 -13
  149. package/lib/utilization/aws-info.js +2 -3
  150. package/lib/utilization/azure-info.js +32 -30
  151. package/lib/utilization/common.js +5 -4
  152. package/lib/utilization/docker-info.js +4 -6
  153. package/lib/utilization/gcp-info.js +36 -35
  154. package/lib/utilization/index.js +1 -1
  155. package/lib/utilization/kubernetes-info.js +2 -2
  156. package/lib/utilization/pcf-info.js +4 -4
  157. package/package.json +32 -18
  158. package/stub_api.js +8 -6
@@ -11,7 +11,9 @@ function isArguments(object) {
11
11
 
12
12
  function slice(args) {
13
13
  // Array.prototype.slice on arguments array-like is expensive
14
- var l = args.length, a = [], i
14
+ var l = args.length
15
+ var a = []
16
+ var i
15
17
  for (i = 0; i < l; i++) {
16
18
  a[i] = args[i]
17
19
  }
@@ -71,45 +73,73 @@ function deeper(a, b, ca, cb) {
71
73
  } else if (a === null || b === null) {
72
74
  return false
73
75
  } else if (Buffer.isBuffer(a) && Buffer.isBuffer(b)) {
74
- if (a.length !== b.length) return false
76
+ if (a.length !== b.length) {
77
+ return false
78
+ }
75
79
 
76
80
  // potentially incredibly expensive
77
- for (var i = 0; i < a.length; i++) if (a[i] !== b[i]) return false
81
+ for (var i = 0; i < a.length; i++) {
82
+ if (a[i] !== b[i]) {
83
+ return false
84
+ }
85
+ }
78
86
 
79
87
  return true
80
88
  } else if (a instanceof Date && b instanceof Date) {
81
89
  return a.getTime() === b.getTime()
82
90
  } else if (a instanceof RegExp && b instanceof RegExp) {
83
- return a.source === b.source &&
84
- a.global === b.global &&
85
- a.multiline === b.multiline &&
86
- a.lastIndex === b.lastIndex &&
87
- a.ignoreCase === b.ignoreCase
91
+ return (
92
+ a.source === b.source &&
93
+ a.global === b.global &&
94
+ a.multiline === b.multiline &&
95
+ a.lastIndex === b.lastIndex &&
96
+ a.ignoreCase === b.ignoreCase
97
+ )
88
98
  } else if (isArguments(a) || isArguments(b)) {
89
- if (!(isArguments(a) && isArguments(b))) return false
99
+ if (!(isArguments(a) && isArguments(b))) {
100
+ return false
101
+ }
90
102
 
91
103
  return deeper(slice(a), slice(b), ca, cb)
92
104
  }
93
105
 
94
- if (a.constructor !== b.constructor) return false
106
+ if (a.constructor !== b.constructor) {
107
+ return false
108
+ }
95
109
 
96
- var ka = Object.keys(a), kb = Object.keys(b)
97
- if (ka.length !== kb.length) return false
110
+ var ka = Object.keys(a)
111
+ var kb = Object.keys(b)
112
+ if (ka.length !== kb.length) {
113
+ return false
114
+ }
98
115
 
99
116
  var cal = ca.length
100
- while (cal--) if (ca[cal] === a) return cb[cal] === b
101
- ca.push(a); cb.push(b)
117
+ while (cal--) {
118
+ if (ca[cal] === a) {
119
+ return cb[cal] === b
120
+ }
121
+ }
122
+ ca.push(a)
123
+ cb.push(b)
102
124
 
103
- ka.sort(); kb.sort()
104
- for (var j = ka.length - 1; j >= 0; j--) if (ka[j] !== kb[j]) return false
125
+ ka.sort()
126
+ kb.sort()
127
+ for (var j = ka.length - 1; j >= 0; j--) {
128
+ if (ka[j] !== kb[j]) {
129
+ return false
130
+ }
131
+ }
105
132
 
106
133
  var key
107
134
  for (var k = ka.length - 1; k >= 0; k--) {
108
135
  key = ka[k]
109
- if (!deeper(a[key], b[key], ca, cb)) return false
136
+ if (!deeper(a[key], b[key], ca, cb)) {
137
+ return false
138
+ }
110
139
  }
111
140
 
112
- ca.pop(); cb.pop()
141
+ ca.pop()
142
+ cb.pop()
113
143
 
114
144
  return true
115
145
  }
@@ -30,8 +30,11 @@ function flatten(result, prefix, obj, seen) {
30
30
  continue
31
31
  }
32
32
 
33
- if (obj[key] instanceof Object) flatten(result, prefix + key + '.', obj[key], seen)
34
- else result[prefix + key] = obj[key]
33
+ if (obj[key] instanceof Object) {
34
+ flatten(result, prefix + key + '.', obj[key], seen)
35
+ } else {
36
+ result[prefix + key] = obj[key]
37
+ }
35
38
  }
36
39
 
37
40
  return result
@@ -28,7 +28,7 @@ function deobfuscateNameUsingKey(name, key) {
28
28
  var bytes = Buffer.from(name, 'base64')
29
29
  var keyBytes = Buffer.from(key)
30
30
 
31
- return encode(bytes, keyBytes).toString("utf-8")
31
+ return encode(bytes, keyBytes).toString('utf-8')
32
32
  }
33
33
 
34
34
  function calculatePathHash(appName, pathName, referingPathHash) {
@@ -98,7 +98,7 @@ function makeId(length = 16) {
98
98
  // This could "overflow" since we're iterating over the number of ints, which could
99
99
  // be more data than needed. But out-of-bound index assignment on typed arrays are
100
100
  // discarded
101
- randBytes[(i * 4) + j] = bytes[j]
101
+ randBytes[i * 4 + j] = bytes[j]
102
102
  }
103
103
  }
104
104
 
@@ -9,10 +9,9 @@ module.exports = parse
9
9
  module.exports.fromString = fromString
10
10
  module.exports.fromMap = fromMap
11
11
 
12
-
13
12
  // this creates a copy of trim that can be used with map
14
13
  var trim = Function.prototype.call.bind(String.prototype.trim)
15
- var logger = require('../logger').child({component: 'label-parser'})
14
+ var logger = require('../logger').child({ component: 'label-parser' })
16
15
  var stringify = require('json-stringify-safe')
17
16
 
18
17
  function parse(labels) {
@@ -37,13 +36,12 @@ function fromString(raw) {
37
36
  var map = Object.create(null)
38
37
 
39
38
  if (!raw) {
40
- return {labels: [], warnings: []}
39
+ return { labels: [], warnings: [] }
41
40
  }
42
41
 
43
42
  var pairs = raw.split(';').map(trim)
44
43
  var parts
45
44
 
46
-
47
45
  while (!pairs[pairs.length - 1]) {
48
46
  pairs.pop()
49
47
  }
@@ -69,10 +67,7 @@ function fromString(raw) {
69
67
  return fromMap(map)
70
68
 
71
69
  function warn(message) {
72
- return {labels: [], warnings: [
73
- 'Invalid Label String: ' + raw,
74
- message
75
- ]}
70
+ return { labels: [], warnings: ['Invalid Label String: ' + raw, message] }
76
71
  }
77
72
  }
78
73
 
@@ -85,8 +80,7 @@ function fromMap(map) {
85
80
 
86
81
  if (!map[key] || typeof map[key] !== 'string') {
87
82
  return warnings.push(
88
- 'Label value for ' + type +
89
- 'should be a string with a length between 1 and 255 characters'
83
+ 'Label value for ' + type + 'should be a string with a length between 1 and 255 characters'
90
84
  )
91
85
  }
92
86
 
@@ -100,7 +94,7 @@ function fromMap(map) {
100
94
  warnings.push('Label value too long: ' + value)
101
95
  }
102
96
 
103
- labels.push({label_type: type, label_value: value})
97
+ labels.push({ label_type: type, label_value: value })
104
98
  })
105
99
 
106
100
  if (labels.length > 64) {
@@ -116,7 +110,7 @@ function fromMap(map) {
116
110
  }
117
111
  }
118
112
 
119
- return {labels: labels, warnings: warnings}
113
+ return { labels: labels, warnings: warnings }
120
114
  }
121
115
 
122
116
  function truncate(str, max) {
@@ -124,7 +118,7 @@ function truncate(str, max) {
124
118
  var chr
125
119
  for (var i = 0, l = str.length; i < l; ++i) {
126
120
  chr = str.charCodeAt(i)
127
- if (chr >= 0xD800 && chr <= 0xDBFF && i !== l) {
121
+ if (chr >= 0xd800 && chr <= 0xdbff && i !== l) {
128
122
  i += 1
129
123
  }
130
124
 
@@ -56,8 +56,12 @@ Logger.MAX_LOG_BUFFER = MAX_LOG_BUFFER
56
56
  Logger.prototype.coerce = function coerce(value) {
57
57
  if (!isNaN(parseInt(value, 10)) && isFinite(value)) {
58
58
  // value is numeric
59
- if (value < 10) value = 10
60
- if (value > 60) value = 60
59
+ if (value < 10) {
60
+ value = 10
61
+ }
62
+ if (value > 60) {
63
+ value = 60
64
+ }
61
65
 
62
66
  return value
63
67
  }
@@ -70,12 +74,16 @@ Object.keys(LEVELS).forEach(function buildLevel(_level) {
70
74
  var level = Logger.prototype.coerce(LEVELS[_level])
71
75
 
72
76
  function log(extra) {
73
- if (!this.options.enabled) return false
74
- if (level < this.options._level) return false
77
+ if (!this.options.enabled) {
78
+ return false
79
+ }
80
+ if (level < this.options._level) {
81
+ return false
82
+ }
75
83
 
76
- var has_extra = typeof extra === 'object'
77
- var args = Array.prototype.slice.call(arguments, has_extra ? 1 : 0)
78
- return this.write(level, args, has_extra ? extra : null)
84
+ var hasExtra = typeof extra === 'object'
85
+ var args = Array.prototype.slice.call(arguments, hasExtra ? 1 : 0)
86
+ return this.write(level, args, hasExtra ? extra : null)
79
87
  }
80
88
 
81
89
  loggingFunctions[_level] = function checkLevel() {
@@ -89,8 +97,12 @@ Object.keys(LEVELS).forEach(function buildLevel(_level) {
89
97
  return
90
98
  }
91
99
 
92
- if (!this.options.enabled) return false
93
- if (level < this.options._level) return false
100
+ if (!this.options.enabled) {
101
+ return false
102
+ }
103
+ if (level < this.options._level) {
104
+ return false
105
+ }
94
106
 
95
107
  if (seenMessages[key] !== true) {
96
108
  var args = Array.prototype.slice.call(arguments, 1)
@@ -109,8 +121,12 @@ Object.keys(LEVELS).forEach(function buildLevel(_level) {
109
121
  return
110
122
  }
111
123
 
112
- if (!this.options.enabled) return false
113
- if (level < this.options._level) return false
124
+ if (!this.options.enabled) {
125
+ return false
126
+ }
127
+ if (level < this.options._level) {
128
+ return false
129
+ }
114
130
 
115
131
  if (seenPerInterval[key] !== true) {
116
132
  var args = Array.prototype.slice.call(arguments, 2)
@@ -193,7 +209,8 @@ Logger.prototype.write = function write(level, args, extra) {
193
209
  } else if (typeof args[i] === 'object') {
194
210
  try {
195
211
  args[i] = stringify(args[i])
196
- } catch (err) { // eslint-disable-line no-unused-vars
212
+ } catch (err) {
213
+ // eslint-disable-line no-unused-vars
197
214
  this.debug('Failed to stringfy object for log')
198
215
  args[i] = '[UNPARSABLE OBJECT]'
199
216
  }
@@ -207,7 +224,8 @@ Logger.prototype.write = function write(level, args, extra) {
207
224
  var data = ''
208
225
  try {
209
226
  data = stringify(entry) + '\n'
210
- } catch (err) { // eslint-disable-line no-unused-vars
227
+ } catch (err) {
228
+ // eslint-disable-line no-unused-vars
211
229
  this.debug('Unabled to stringify log message')
212
230
  }
213
231
 
@@ -46,7 +46,7 @@ function prerelease() {
46
46
 
47
47
  function _logWarn() {
48
48
  if (!logger) {
49
- logger = require('../logger').child({component: 'util-process-version'})
49
+ logger = require('../logger').child({ component: 'util-process-version' })
50
50
  }
51
51
  logger.warn.apply(logger, arguments)
52
52
  }
@@ -10,7 +10,7 @@ var hasOwnProperty = Object.hasOwnProperty
10
10
  // The logger needs to be lazy-loaded to get around ordering issues with config.
11
11
  var _logger = null
12
12
  var getLogger = function makeLogger() {
13
- _logger = require('../logger').child({component: 'util-properties'})
13
+ _logger = require('../logger').child({ component: 'util-properties' })
14
14
  getLogger = function reallyGetLogger() {
15
15
  return _logger
16
16
  }
@@ -18,37 +18,27 @@ var hex = /0x[0-9a-f]+/
18
18
  var boolean = /true|false|null/
19
19
  var number = /\b-?(?:[0-9]+\.)?[0-9]+([eE][+-]?[0-9]+)?/
20
20
 
21
- var dialects = obfuscate.dialects = Object.create(null)
21
+ var dialects = (obfuscate.dialects = Object.create(null))
22
22
 
23
23
  dialects.mysql = [
24
- replacer(join(
25
- [doubleQuote, singleQuote, comment, multilineComment, hex, boolean, number],
26
- 'gi'
27
- )),
24
+ replacer(join([doubleQuote, singleQuote, comment, multilineComment, hex, boolean, number], 'gi')),
28
25
  unmatchedPairs(/'|"|\/\*|\*\//)
29
26
  ]
30
27
 
31
28
  dialects.postgres = [
32
- replacer(join(
33
- [dollarQuote, singleQuote, comment, multilineComment, uuid, boolean, number],
34
- 'gi'
35
- )),
29
+ replacer(
30
+ join([dollarQuote, singleQuote, comment, multilineComment, uuid, boolean, number], 'gi')
31
+ ),
36
32
  unmatchedPairs(/'|\/\*|\*\/|(?:\$(?!\?))/)
37
33
  ]
38
34
 
39
35
  dialects.cassandra = [
40
- replacer(join(
41
- [singleQuote, comment, multilineComment, uuid, hex, boolean, number],
42
- 'gi'
43
- )),
36
+ replacer(join([singleQuote, comment, multilineComment, uuid, hex, boolean, number], 'gi')),
44
37
  unmatchedPairs(/'|\/\*|\*\//)
45
38
  ]
46
39
 
47
40
  dialects.oracle = [
48
- replacer(join(
49
- [oracleQuote, singleQuote, comment, multilineComment, number],
50
- 'gi'
51
- )),
41
+ replacer(join([oracleQuote, singleQuote, comment, multilineComment, number], 'gi')),
52
42
  unmatchedPairs(/'|\/\*|\*\//)
53
43
  ]
54
44
 
@@ -8,7 +8,6 @@
8
8
  var EventEmitter = require('events').EventEmitter
9
9
  var util = require('util')
10
10
 
11
-
12
11
  /**
13
12
  * Pipe a readable stream into this sink that fulfills the Writable Stream
14
13
  * contract and the callback will be fired when the stream has been completely
@@ -22,7 +21,7 @@ function StreamSink(callback) {
22
21
  this.writable = true
23
22
 
24
23
  var sink = this
25
- this.on('error', function handle_error(error) {
24
+ this.on('error', function handleError(error) {
26
25
  sink.writable = false
27
26
  callback(error)
28
27
  })
@@ -31,7 +30,7 @@ util.inherits(StreamSink, EventEmitter)
31
30
 
32
31
  StreamSink.prototype.write = function write(string) {
33
32
  if (!this.writable) {
34
- this.emit('error', new Error("Sink no longer writable!"))
33
+ this.emit('error', new Error('Sink no longer writable!'))
35
34
  return false
36
35
  }
37
36
 
@@ -8,13 +8,13 @@
8
8
  var url = require('url')
9
9
 
10
10
  var LOCALHOST_NAMES = {
11
- "localhost": true,
12
- "127.0.0.1": true,
13
- "0.0.0.0": true,
14
- "0:0:0:0:0:0:0:1": true,
15
- "::1": true,
16
- "0:0:0:0:0:0:0:0": true,
17
- "::": true
11
+ 'localhost': true,
12
+ '127.0.0.1': true,
13
+ '0.0.0.0': true,
14
+ '0:0:0:0:0:0:0:1': true,
15
+ '::1': true,
16
+ '0:0:0:0:0:0:0:0': true,
17
+ '::': true
18
18
  }
19
19
 
20
20
  /**
@@ -208,9 +208,7 @@ module.exports = {
208
208
 
209
209
  function isIgnoredStatusCodeForErrors(config, code) {
210
210
  var codes = []
211
- if (config &&
212
- config.error_collector &&
213
- config.error_collector.ignore_status_codes) {
211
+ if (config && config.error_collector && config.error_collector.ignore_status_codes) {
214
212
  codes = config.error_collector.ignore_status_codes
215
213
  }
216
214
  return codes.indexOf(parseInt(code, 10)) >= 0
@@ -218,9 +216,7 @@ function isIgnoredStatusCodeForErrors(config, code) {
218
216
 
219
217
  function isExpectedStatusCodeForErrors(config, code) {
220
218
  var codes = []
221
- if (config &&
222
- config.error_collector &&
223
- config.error_collector.expected_status_codes) {
219
+ if (config && config.error_collector && config.error_collector.expected_status_codes) {
224
220
  codes = config.error_collector.expected_status_codes
225
221
  }
226
222
  return codes.indexOf(parseInt(code, 10)) >= 0
@@ -5,17 +5,16 @@
5
5
 
6
6
  'use strict'
7
7
 
8
- var logger = require('../logger.js').child({component: 'aws-info'})
8
+ var logger = require('../logger.js').child({ component: 'aws-info' })
9
9
  var common = require('./common')
10
10
  var NAMES = require('../metrics/names.js')
11
+ let results = null
11
12
 
12
13
  module.exports = fetchAWSInfo
13
14
  module.exports.clearCache = function clearAWSCache() {
14
15
  results = null
15
16
  }
16
17
 
17
- var results = null
18
-
19
18
  function fetchAWSInfo(agent, callback) {
20
19
  if (!agent.config.utilization || !agent.config.utilization.detect_aws) {
21
20
  return setImmediate(callback, null)
@@ -6,17 +6,15 @@
6
6
  'use strict'
7
7
 
8
8
  var common = require('./common')
9
- var logger = require('../logger.js').child({component: 'azure-info'})
9
+ var logger = require('../logger.js').child({ component: 'azure-info' })
10
10
  var NAMES = require('../metrics/names.js')
11
-
11
+ let results = null
12
12
 
13
13
  module.exports = fetchAzureInfo
14
14
  module.exports.clearCache = function clearAzureCache() {
15
15
  results = null
16
16
  }
17
17
 
18
- var results = null
19
-
20
18
  function fetchAzureInfo(agent, callback) {
21
19
  if (!agent.config.utilization || !agent.config.utilization.detect_azure) {
22
20
  return setImmediate(callback, null, null)
@@ -29,31 +27,35 @@ function fetchAzureInfo(agent, callback) {
29
27
  var instanceHost = '169.254.169.254'
30
28
  var apiVersion = '2017-03-01'
31
29
  var endpoint = '/metadata/instance/compute'
32
- common.request({
33
- host: instanceHost,
34
- path: endpoint + '?api-version=' + apiVersion,
35
- headers: {Metadata: 'true'}
36
- }, agent, function getMetadata(err, data) {
37
- if (err) {
38
- return callback(err)
39
- }
40
-
41
- // Hopefully the data is parsable as JSON.
42
- try {
43
- data = JSON.parse(data)
44
- } catch (e) {
45
- logger.debug(e, 'Failed to parse Azure metadata.')
46
- data = null
30
+ common.request(
31
+ {
32
+ host: instanceHost,
33
+ path: endpoint + '?api-version=' + apiVersion,
34
+ headers: { Metadata: 'true' }
35
+ },
36
+ agent,
37
+ function getMetadata(err, data) {
38
+ if (err) {
39
+ return callback(err)
40
+ }
41
+
42
+ // Hopefully the data is parsable as JSON.
43
+ try {
44
+ data = JSON.parse(data)
45
+ } catch (e) {
46
+ logger.debug(e, 'Failed to parse Azure metadata.')
47
+ data = null
48
+ }
49
+
50
+ // Get out just the keys we care about.
51
+ results = common.getKeys(data, ['location', 'name', 'vmId', 'vmSize'])
52
+ if (results == null) {
53
+ logger.debug('Azure metadata was invalid.')
54
+ agent.metrics.getOrCreateMetric(NAMES.UTILIZATION.AZURE_ERROR).incrementCallCount()
55
+ }
56
+
57
+ // Call back!
58
+ callback(null, results)
47
59
  }
48
-
49
- // Get out just the keys we care about.
50
- results = common.getKeys(data, ['location', 'name', 'vmId', 'vmSize'])
51
- if (results == null) {
52
- logger.debug('Azure metadata was invalid.')
53
- agent.metrics.getOrCreateMetric(NAMES.UTILIZATION.AZURE_ERROR).incrementCallCount()
54
- }
55
-
56
- // Call back!
57
- callback(null, results)
58
- })
60
+ )
59
61
  }
@@ -7,12 +7,11 @@
7
7
 
8
8
  var concat = require('concat-stream')
9
9
  var http = require('http')
10
- var logger = require('../logger').child({component: 'utilization-request'})
10
+ var logger = require('../logger').child({ component: 'utilization-request' })
11
11
  var fs = require('../util/unwrapped-core').fs
12
12
  var properties = require('../util/properties')
13
13
  const url = require('url')
14
14
 
15
-
16
15
  exports.checkValueString = checkValueString
17
16
  function checkValueString(str) {
18
17
  if (!str || !str.length || Buffer.byteLength(str) > 255) {
@@ -72,11 +71,13 @@ exports.request = function request(opts, agent, cb) {
72
71
  agent.removeListener('errored', abortRequest)
73
72
  agent.removeListener('stopped', abortRequest)
74
73
  agent.removeListener('disconnected', abortRequest)
75
-
74
+
76
75
  if (res.statusCode !== 200) {
77
76
  logger.debug(
78
77
  'Got %d %s from metadata request %j',
79
- res.statusCode, res.statusMessage || '<n/a>', opts
78
+ res.statusCode,
79
+ res.statusMessage || '<n/a>',
80
+ opts
80
81
  )
81
82
  return cb(new Error('Request for metadata failed.'))
82
83
  } else if (!data) {
@@ -5,10 +5,11 @@
5
5
 
6
6
  'use strict'
7
7
 
8
- var logger = require('../logger').child({component: 'docker-info'})
8
+ var logger = require('../logger').child({ component: 'docker-info' })
9
9
  var common = require('./common')
10
10
  var NAMES = require('../metrics/names')
11
11
  var os = require('os')
12
+ let vendorInfo = null
12
13
 
13
14
  module.exports.getVendorInfo = fetchDockerVendorInfo
14
15
  module.exports.clearVendorCache = function clearDockerVendorCache() {
@@ -46,13 +47,10 @@ module.exports.getBootId = function getBootId(agent, callback) {
46
47
  })
47
48
 
48
49
  function bootIdError() {
49
- agent.metrics.getOrCreateMetric(NAMES.UTILIZATION.BOOT_ID_ERROR)
50
- .incrementCallCount()
50
+ agent.metrics.getOrCreateMetric(NAMES.UTILIZATION.BOOT_ID_ERROR).incrementCallCount()
51
51
  }
52
52
  }
53
53
 
54
- var vendorInfo = null
55
-
56
54
  function fetchDockerVendorInfo(agent, callback) {
57
55
  if (!agent.config.utilization || !agent.config.utilization.detect_docker) {
58
56
  return callback(null, null)
@@ -84,7 +82,7 @@ function fetchDockerVendorInfo(agent, callback) {
84
82
  })
85
83
 
86
84
  if (id) {
87
- vendorInfo = {id: id}
85
+ vendorInfo = { id: id }
88
86
  callback(null, vendorInfo)
89
87
  } else {
90
88
  logger.debug('No matching cpu group found.')