UNPKG

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