UNPKG

strong-trace

Version:

StrongTrace Node.js Tracer

179 lines (158 loc) 4.02 kB
transactionlog === Logs transactions (by string id) and collects stats over time about them. This tool is part of the StrongTrace node.js instrumentation. ```js var TransactionLog = require("./transactionlog") var tlog = new TransactionLog({ raw_subset: true, subset_stats: true, transactions_per_ms: true }) tlog.update("/index.html", 13) tlog.update("/index.html", 22) tlog.update("/user/foo?blah=zap", 101) var subset = tlog.reapSubset() console.log(JSON.stringify(subset, null, 2)) /* { "start": 1403045590568, "end": 1403045590569, "transactions": { "/index.html": { "stats": { "n": 2, "min": 13, "max": 22, "sum": 35, "mean": 17.5, "variance": 20.25, "standard_deviation": 4.5 }, "subset": [ 13, 22 ], "subset_stats": { "n": 2, "min": 13, "max": 22, "sum": 35, "mean": 17.5, "variance": 20.25, "standard_deviation": 4.5 }, "transactions_per_ms": { "n": 1, "min": 2, "max": 2, "sum": 2, "mean": 2, "variance": 0, "standard_deviation": 0 } }, "/user/foo?blah=zap": { "stats": { "n": 1, "min": 101, "max": 101, "sum": 101, "mean": 101, "variance": 0, "standard_deviation": 0 }, "subset": [ 101 ], "subset_stats": { "n": 1, "min": 101, "max": 101, "sum": 101, "mean": 101, "variance": 0, "standard_deviation": 0 }, "transactions_per_ms": { "n": 1, "min": 1, "max": 1, "sum": 1, "mean": 1, "variance": 0, "standard_deviation": 0 } } } } */ setTimeout(function () { tlog.update("/index.html", 50) var subset = tlog.reapSubset() console.log(JSON.stringify(subset, null, 2)) }, 1000) /* { "start": 1403045590568, "end": 1403045591581, "transactions": { "/index.html": { "stats": { "n": 3, "min": 13, "max": 50, "sum": 85, "mean": 28.333333333333336, "variance": 248.2222222222222, "standard_deviation": 15.755069730795297 }, "subset": [ 50 ], "subset_stats": { "n": 1, "min": 50, "max": 50, "sum": 50, "mean": 50, "variance": 0, "standard_deviation": 0 }, "transactions_per_ms": { "n": 2, "min": 0.0009871668311944718, "max": 2, "sum": 2.0009871668311945, "mean": 1.0004935834155972, "variance": 0.9990130767933937, "standard_deviation": 0.9995064165844028 } } } } */ ``` API === `var transactionLog = require("concurix-transactionlog")(config)` --- Create a new transaction log config: * raw_subset [false]: show the raw values for each member of this subset * subset_stats: [true]: show stats for just this subset * transactions_per_ms: [true]: show transactions per millisecond stats `transactionLog.update(transactionId, measurement)` --- Log an instance of this transaction. `transactionId` should be a string and `measurement` should be a number. `transactionLog.reapSubset()` --- Extract the current subset of the transaction log and clear the subset buffer. When reaped, statistics for each transaction id that was **active** in this subset is returned, with optional fields depending on the `config` provided. * stats: statistics for this tansaction id for all history * subset: raw values for this subset * subset_stats: statistics for just this subset * transactions_per_ms: Instances of this transaction id per millisecond, sampled at each `reapSubset()` call for all history. Long-term stats are kept intact between `reapSubset` calls. `transactionLog.clearAll()` --- Completely empty the transaction log of all transactions and long-term stats.