Statful client for Javascript. This client is intended to gather metrics and send them to Statful.
It supports every browser that has full support for the ECMAScript 5 specification.
npm install --save statful-client-javascript
or
bower install --save statful-client-javascript
After installing Statful Client you are ready to use it. The quickest way is to do the following:
<scripttype="text/javascript"src="node_modules/statful-client-javascript/dist/statful.umd.min.js"></script><script>// Init statful statful.initialize({dryrun: false,debug: false,app: 'exampleApp',flushInterval: 5000});// Send a metricstatful.counter('page_load');</script>Reference if you want to take full advantage from Statful.
The custom options that can be set on config param are detailed below.
| Option | Description | Type | Default | Required |
|---|---|---|---|---|
| dryRun | Defines if metrics should be output to the logger instead of being send. | boolean | false | NO |
| debug | Defines logs should be sent to console. | boolean | false | NO |
| app | Defines the application global name. If specified sets a global tag app=setValue. | string | undefined | NO |
| namespace | Defines the global namespace. | string | web | NO |
| sampleRate | Defines the rate sampling. Should be a number between [1, 100]. | number | 100 | NO |
| flushInterval | Defines the periodicity of buffer flushes in milliseconds. | number | 10000 | NO |
| timeout | Defines the timeout. | number | 2000 | NO |
| tags | Defines the global tags. | object | {} | NO |
| aggregations | Defines the global aggregations. | object | [] | NO |
| aggregationFrequency | Defines the global aggregation frequency. | number | 10 | NO |
These methods receive a metric name and a metric value as arguments and send a counter/gauge/timer metric. If the options parameter is omitted, the default values are used. These methods will add metrics to a queue that will be flushed using the interval defined on flushInterval.
statful.counter('myCounter',1,{agg: ['sum']});statful.gauge('myGauge',10,{tags: {host: 'localhost'}});statful.timer('myCounter',200,{namespace: 'sandbox'});This method receive a metric type, metric name and a metric value as arguments and send a counter/gauge/timer metric. If the options parameter is omitted, the default values are used. This method will send metrics to the server without being added to the queue.
statful.sendMetric('counter','myCounter',1,{agg: ['sum']});Read the methods options reference bellow to get more information about the default values.
| Option | Description | Type | Default for Counter | Default for Gauge | Default for Timer |
|---|---|---|---|---|---|
| agg | Defines the aggregations to be executed. These aggregations are merged with the ones configured globally, including method defaults. Valid Aggregations: avg, count, sum, first, last, p90, p95, p99, min, max | array | ['sum', 'count'] | [last] | ['avg', 'p90', 'count'] |
| aggFreq | Defines the aggregation frequency in seconds. It overrides the global aggregation frequency configuration. Valid Aggregation Frequencies: 10, 30, 60, 120, 180, 300 | number | 10 | 10 | 10 |
| sampleRate | Defines the rate sampling. It overrides the global namespace configuration. | number | 100 | 100 | 100 |
| namespace | Defines the namespace of the metric. It overrides the global namespace configuration. | string | web | web | web |
| tags | Defines the tags of the metric. These tags are merged with the ones configured globally, including method defaults. | object | {} | {} | { unit: 'ms' } |
- statful-browser-plugin - add browser tags
Support for the user-timing specification is available. You can check the current compatibility table here.
statful.registerMark('mark_start');
statful.registerMark('mark_end');
// Measure and Timer between two marks
statful.registerMark('mark_start');
statful.registerMark('mark_end');
var options = {
startMark: 'mark_start',
endMark: 'mark_end'
tags: {mark: my_tag}
}
statful.registerMeasure('measure_name', 'metric_name' options);
// Measure and Timer from the navigationStart event until the current time
var options = {
tags: {mark: my_tag}
}
statful.registerMeasure('measure_name', 'metric_name' options);
You can omit both start and end mark names:
- if startMark is missing it will be measured from the navigationStart event
- if endMark is missing it will be measured until the current high precision time
$ npm install$ npm testFollow the standard Fork and Pull Request workflow and:
- Add tests for new feats
- Make sure the test suite passes
- Update or add documentation accordingly
Statful Javascript Client is available under the MIT license. See the LICENSE file for more information.