Skip to the content.

Monitor

Monitor is a TARS(TUP) service and feature monitoring and reporting module.

It consists of 3 sub-modules:

Installation

npm install @tars/monitor

Initialization

If the service runs through node-agent (or on the TARS platform), you don’t need to execute this method.

Initialization is achieved by calling the init(data) method of a specific module.

data: You can configure the file path for tars or a configured (@tars/utils).Config instance.

Service monitoring (stat)

var stat = require ('@tars/monitor'). stat;

The service monitoring mainly counts (reports) the success, failure, and timeout invocations of each request, and collects the invocation time when the invocation is successful.

Because other modules have integrated this module, so in general, the service script does not need to use this module explicitly.

The integrated modules are as follows:

If you decide to report manually, you can use the following code:

stat.report (headers, type [, timeout]);

headers:

If set to set then headers also needs to include the following information:

If the key is set, then the headers also need to include the following information:

The value of the parameter type is one of stat.TYPE, as shown below:

stat.TYPE:

If type === stat.TYPE.SUCCESS must report the response time-consuming timeout (integer)

After the data is reported, the user can view the reported data in the service monitoring tab.

Property monitoring (property)

var property = require ('@ tars / monitor'). property;

The feature monitoring report is the “custom feature” of the service script, which consists of the feature name, feature value, and statistical method (key / value pairs).

property.create (name, policies)

Calling the create method will return (or create) a report object, which can be reported by calling the report (value) method of the returned object.

Where name is the name of the reported attribute value, and policies is an instance array of the statistical method class (specifying the statistical method of the data).

property.create ('name', [new property.POLICY.Count, new property.POLICY.Max]);

The instance objects in the policies array must not have duplicate statistical methods.

Please note: Do not call the create method to get the report object every time you report. This will cause performance loss.

obj.report (value)

property.create will return a report object, which can be reported by calling the report method of the object.

Data can only be reported once for each call to report, and value must be a numeric value in general.

After the data is reported, the user can view the reported data in the feature monitoring.

PP Monitor (propertyplus)

var pp = require('@tars/monitor').propertyplus;

PP monitoring allows users to report features through custom dimensions and ` custom indicators`, which are composed of dimension names, index values, and corresponding index statistical methods.

Compared with feature monitoring, PP monitoring has more dimensions and can be customized more widely. Can output multi-dimensional service monitoring like service monitoring.

pp.create (name [, policies, options])

Calling the create method will return (or create) a report object, which can be reported by calling the report(keys, values) method of the returned object.

pp.create ('name', [property.POLICY.Count, property.POLICY.Max]);

The statistical method of the corresponding position in the policies array specifies the statistical policy of the corresponding position of the indicator value array at the time of reporting. Therefore, the number of statistical methods should be the same as the number of indicators reported each time, that is, policies.length === values.length

All statistical methods except POLICY.Distr can be used for this monitoring.

If the number of dimensions reported by the service script (the cardinality of the dimension values) is very large, it is recommended to enable cacheKeyPolicy to improve performance and avoid memory overflow.

Do not call the create method to get the report object every time you report. This will cause performance loss.

obj.report (keys, values)

pp.create will return a report object, which can be reported by calling the object’s report method.

Each item in the keys array must be character, which represents dimension name.

Each item in the values array must be value, which represents indicator value.

The number of dimensions and indicators of the same report object must be the same each time (the order is the same), and the order of the indicator values ​​must be consistent with the order of the policies statistical method.

Examples

When calling the DB in the service, you need to monitor the DB call. Among them:  

var obj = pp.create ('db_status', [pp.POLICY.Sum, pp.POLICY.Avg]);

Calling DB: abc@192.168.1.1, takes 12.2ms:

obj.report (['abc', '192.168.1.1'], [1, 12.2]);

Call DB: test@127.0.0.1, takes 25.6ms:

obj.report (['test', '127.0.0.1'], [1, 25.6]);

statistical methods

The data reported by characteristic monitoring (that is, when create is called) needs to specify one or more statistical methods in order to count the values ​​over a period of time. These methods are defined in POLICY. They are :

Except for property.POLICY.Distr, no construction parameters need to be passed

property.POLICY.Distr (ranges)

Distr is statistics between partitions. The interval is divided in advance, and the number of value falling into this interval will be automatically counted when reporting.

At the same time, when displaying data, the statistical display between partitions becomes pie chart type.

Among them, the parameter ranges is an array, each item of which is a value (Int), and they are arranged in ascending order.

E.g:

var monitor = property.create ('name', [new property.POLICY.Distr ([0, 10, 100, 1000])]);
monitor.report (2);
monitor.repott (20);
monitor.report (200);

The statistics of the above example are:   

[0-10] = 1 (10-100) = 1 (100-1000) = 1

Each interval includes the right side and does not include the left side (except the first interval)

Reporting interval

In monitoring and reporting, the data is not reported every time the report method is called. The module collects the data submitted within a certain period of time, and performs integrated statistics for one-time reporting (one-way calling).

The module will automatically read the tars.application.client.report-interval configuration section (unit: ms) in the TARS configuration file to configure the reporting interval.

Please note: The configured reporting interval cannot be lower than 10s, nor higher than the TARS master refresh time (that is, the tars.application.client.refresh-endpoint-interval configuration section).

In order to prevent cyclic calls, the call status of the reporting module itself is reported by the called party (that is, the reporting logic of the one-way call).