UNPKG

4.85 kBJavaScriptView Raw
1"use strict";
2
3var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
5Object.defineProperty(exports, "__esModule", {
6 value: true
7});
8exports["default"] = exports.collectMetrics = void 0;
9
10var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
11
12var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
13
14var _promClient = require("prom-client");
15
16var collectMetrics = /*#__PURE__*/function () {
17 var _ref = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_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 // console.log({ proxyList });
57 proxyList.forEach(function (proxy) {
58 // console.log({ proxy });
59 var _ref3 = proxy || {},
60 provider = _ref3.provider,
61 type = _ref3.type,
62 tags = _ref3.tags; // console.log({provider})
63
64
65 var _ref4 = tags || {},
66 country = _ref4.country,
67 ipv = _ref4.ipv,
68 worker = _ref4.worker; // console.log({country})
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
146exports.collectMetrics = collectMetrics;
147var _default = collectMetrics;
148exports["default"] = _default;
149//# sourceMappingURL=collectMetrics.js.map
\No newline at end of file