1 | "use strict";
|
2 |
|
3 | var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
4 |
|
5 | Object.defineProperty(exports, "__esModule", {
|
6 | value: true
|
7 | });
|
8 | exports["default"] = exports.collectMetrics = void 0;
|
9 |
|
10 | var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
11 |
|
12 | var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
13 |
|
14 | var _promClient = require("prom-client");
|
15 |
|
16 | var collectMetrics = function () {
|
17 | var _ref = (0, _asyncToGenerator2["default"])( _regenerator["default"].mark(function _callee() {
|
18 | var _this = this;
|
19 |
|
20 | var _ref2,
|
21 | _ref2$prefix,
|
22 | prefix,
|
23 | proxyList,
|
24 | proxyTestsResults,
|
25 | _args = arguments;
|
26 |
|
27 | return _regenerator["default"].wrap(function _callee$(_context) {
|
28 | while (1) {
|
29 | switch (_context.prev = _context.next) {
|
30 | case 0:
|
31 | _ref2 = _args.length > 0 && _args[0] !== undefined ? _args[0] : {}, _ref2$prefix = _ref2.prefix, prefix = _ref2$prefix === void 0 ? 'bg' : _ref2$prefix;
|
32 | if (!this.__metrics) this.__metrics = {};
|
33 |
|
34 | if (!this.__metrics.gauge) {
|
35 | this.__metrics.gauge = new _promClient.Gauge({
|
36 | name: [prefix, 'proxy'].filter(Boolean).join('_'),
|
37 | help: 'Информация по проксям',
|
38 | labelNames: ['provider', 'type', 'country', 'ipv', 'worker']
|
39 | });
|
40 | }
|
41 |
|
42 | if (!this.__metrics.gaugeTargetCount) {
|
43 | this.__metrics.gaugeTargetCount = new _promClient.Gauge({
|
44 | name: [prefix, 'proxy_count'].filter(Boolean).join('_'),
|
45 | help: 'Информация по статусам проксям',
|
46 | labelNames: ['target', 'provider', 'status', 'worker']
|
47 | });
|
48 | }
|
49 |
|
50 | _context.prev = 4;
|
51 | _context.next = 7;
|
52 | return this.getAllProxyList();
|
53 |
|
54 | case 7:
|
55 | proxyList = _context.sent;
|
56 |
|
57 | proxyList.forEach(function (proxy) {
|
58 |
|
59 | var _ref3 = proxy || {},
|
60 | provider = _ref3.provider,
|
61 | type = _ref3.type,
|
62 | tags = _ref3.tags;
|
63 |
|
64 |
|
65 | var _ref4 = tags || {},
|
66 | country = _ref4.country,
|
67 | ipv = _ref4.ipv,
|
68 | worker = _ref4.worker;
|
69 |
|
70 |
|
71 | _this.__metrics.gauge.inc({
|
72 | provider: provider,
|
73 | type: type,
|
74 | country: country,
|
75 | ipv: ipv,
|
76 | worker: worker
|
77 | });
|
78 | });
|
79 | _context.next = 14;
|
80 | break;
|
81 |
|
82 | case 11:
|
83 | _context.prev = 11;
|
84 | _context.t0 = _context["catch"](4);
|
85 | this.log.error('[collectMetrics] getProxyList', _context.t0);
|
86 |
|
87 | case 14:
|
88 | _context.prev = 14;
|
89 | _context.next = 17;
|
90 | return this.getProxyTestsResults();
|
91 |
|
92 | case 17:
|
93 | proxyTestsResults = _context.sent;
|
94 | Object.values(proxyTestsResults).forEach(function () {
|
95 | var _ref5 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
|
96 | test = _ref5.test,
|
97 | proxy = _ref5.proxy,
|
98 | time = _ref5.time,
|
99 | status = _ref5.status;
|
100 |
|
101 | var _ref6 = proxy || {},
|
102 | provider = _ref6.provider;
|
103 |
|
104 | var _ref7 = test || {},
|
105 | _ref7$tags = _ref7.tags,
|
106 | tags = _ref7$tags === void 0 ? [] : _ref7$tags;
|
107 |
|
108 | var _ref8 = proxy.tags || {},
|
109 | worker = _ref8.worker;
|
110 |
|
111 | tags.forEach(function (target) {
|
112 | if (!target) return;
|
113 |
|
114 | _this.__metrics.gaugeTargetCount.inc({
|
115 | target: target,
|
116 | provider: provider,
|
117 | status: status,
|
118 | worker: worker
|
119 | });
|
120 | });
|
121 | });
|
122 | _context.next = 24;
|
123 | break;
|
124 |
|
125 | case 21:
|
126 | _context.prev = 21;
|
127 | _context.t1 = _context["catch"](14);
|
128 | this.log.error('[collectMetrics] getProxyTests', _context.t1);
|
129 |
|
130 | case 24:
|
131 | return _context.abrupt("return", this.__metrics);
|
132 |
|
133 | case 25:
|
134 | case "end":
|
135 | return _context.stop();
|
136 | }
|
137 | }
|
138 | }, _callee, this, [[4, 11], [14, 21]]);
|
139 | }));
|
140 |
|
141 | return function collectMetrics() {
|
142 | return _ref.apply(this, arguments);
|
143 | };
|
144 | }();
|
145 |
|
146 | exports.collectMetrics = collectMetrics;
|
147 | var _default = collectMetrics;
|
148 | exports["default"] = _default;
|
149 |
|
\ | No newline at end of file |