Skip to content

Commit 0cb783e

Browse files
Valentine Zavgorodnevsneak
authored andcommitted
Add newrelic instrumentation for steem-js and tarantool (steemit#1497)
* add newrelic support * adds hardware stats tracing at a set interval (steemit#1480) * New redux actions for terms confirm dialog, new logic in creation account, styling (steemit#1481) * New improved wallet delegation verbiage, display only when delegation… (steemit#1477) * New improved wallet delegation verbiage, display only when delegation is detected * Update veribage for delegation, refactor for locals * updates * updates * add newrelic performance tracker for steem-js * instrument tarantool
1 parent 571f6c6 commit 0cb783e

File tree

4 files changed

+32
-18
lines changed

4 files changed

+32
-18
lines changed

db/tarantool.js

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1+
import config from 'config';
2+
const newrelic = config.get('newrelic') ? require('newrelic') : undefined;
13
import TarantoolDriver from 'tarantool-driver';
24

3-
const config = require('config');
4-
55
let instance = null;
66

77
class Tarantool {
@@ -16,13 +16,24 @@ class Tarantool {
1616
connection.connect()
1717
.then(() => connection.auth(username, password))
1818
.then(() => resolve())
19-
.catch(error => resolve(false));
19+
.catch(() => resolve(false));
2020
});
2121
}
2222

2323
makeCall(call_name, args) {
2424
return this.ready_promise
25-
.then(() => this.connection[call_name].apply(this.connection, args))
25+
.then(() => {
26+
const call_time = Date.now();
27+
return new Promise((resolve, reject) => {
28+
this.connection[call_name].apply(this.connection, args).then(res => {
29+
if (newrelic) {
30+
const time_taken = Date.now() - call_time;
31+
newrelic.recordMetric(`WebTransaction/Performance/tarantool/${call_name}/${args['0']}`, time_taken / 1000.0);
32+
}
33+
resolve(res)
34+
}).catch(error => reject(error));
35+
});
36+
})
2637
.catch(error => {
2738
if (error.message.indexOf('connect') >= 0)
2839
instance = null;

newrelic.js

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
'use strict'
1+
'use strict';
22

33
/**
44
* New Relic agent configuration.
@@ -7,8 +7,6 @@
77
* description of configuration variables and their potential values.
88
*/
99

10-
var license_key = require('config').get('newrelic');
11-
1210
exports.config = {
1311
/**
1412
* Array of application names.
@@ -17,7 +15,7 @@ exports.config = {
1715
/**
1816
* Your New Relic license key.
1917
*/
20-
license_key: license_key,
18+
license_key: require('config').get('newrelic'),
2119
logging: {
2220
/**
2321
* Level at which to log. 'trace' is most useful to New Relic when diagnosing
@@ -26,4 +24,4 @@ exports.config = {
2624
*/
2725
level: 'info'
2826
}
29-
}
27+
};

server/index.js

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import config from 'config';
2-
if(config.get('newrelic')) require('newrelic');
2+
const newrelic = config.get('newrelic') ? require('newrelic') : undefined;
33

44
import * as steem from 'steem';
55

@@ -41,7 +41,12 @@ global.webpackIsomorphicTools = new WebpackIsomorphicTools(
4141
);
4242

4343
global.webpackIsomorphicTools.server(ROOT, () => {
44-
steem.config.set('websocket', config.get('ws_connection_server'))
44+
steem.config.set('websocket', config.get('ws_connection_server'));
45+
if (newrelic) {
46+
steem.api.on('track-performance', (method, time_taken) => {
47+
newrelic.recordMetric(`WebTransaction/Performance/steem-js/${method}`, time_taken / 1000.0);
48+
});
49+
}
4550
// const CliWalletClient = require('shared/api_client/CliWalletClient').default;
4651
// if (process.env.NODE_ENV === 'production') connect_promises.push(CliWalletClient.instance().connect_promise());
4752
try {

yarn.lock

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1959,12 +1959,18 @@ dateformat@^2.0.0:
19591959
version "2.0.0"
19601960
resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-2.0.0.tgz#2743e3abb5c3fc2462e527dca445e04e9f4dee17"
19611961

1962-
debug@*, debug@2, debug@^2.1.1, debug@^2.2.0:
1962+
debug@*, debug@^2.1.1, debug@^2.2.0:
19631963
version "2.6.3"
19641964
resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.3.tgz#0f7eb8c30965ec08c72accfa0130c8b79984141d"
19651965
dependencies:
19661966
ms "0.7.2"
19671967

1968+
debug@2, debug@^2.6.8:
1969+
version "2.6.8"
1970+
resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.8.tgz#e731531ca2ede27d188222427da17821d68ff4fc"
1971+
dependencies:
1972+
ms "2.0.0"
1973+
19681974
19691975
version "2.2.0"
19701976
resolved "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da"
@@ -1977,12 +1983,6 @@ [email protected]:
19771983
dependencies:
19781984
ms "0.7.2"
19791985

1980-
debug@^2.6.8:
1981-
version "2.6.8"
1982-
resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.8.tgz#e731531ca2ede27d188222427da17821d68ff4fc"
1983-
dependencies:
1984-
ms "2.0.0"
1985-
19861986
decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2:
19871987
version "1.2.0"
19881988
resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"

0 commit comments

Comments
 (0)