let io = require('socket.io-client') // let {InfluxDB, Point, HttpError, ClientOptions} = await import('@influxdata/influxdb-client') // import {InfluxDB, Point, HttpError, ClientOptions} from '@influxdata/influxdb-client' // let {PingAPI} = await import('@influxdata/influxdb-client-apis') const InfluxDB = require('@influxdata/influxdb-client').InfluxDB; const Point = require('@influxdata/influxdb-client').Point; const HttpError = require('@influxdata/influxdb-client').HttpError; const ClientOptions = require('@influxdata/influxdb-client').ClientOptions; const username = const password = const database = 'archive' const retentionPolicy = 'autogen' const bucket = `${database}/${retentionPolicy}` const influxDB = new InfluxDB({ url: 'http://localhost:8086', token: `${username}:${password}`,}) const writeAPI = influxDB.getWriteApi('', bucket) // console.log(process.argv[2]); // console.log(`https://tracker.archiveteam.org:8081/${process.argv[2]}-log`) // process.exit(0) project = process.argv[2]; setTimeout(function(){ console.log("5 mins target reached exiting - ", project) process.exit(0) }, 1000 * 60 * 5); //one hour 1000 * 60 * 60 const host = `http://tracker.archiveteam.org:8080/${project}-log` // console.log("type: ", typeof(host)) // console.log("host: ", host) // process.exit(0) let socket = io.connect(host, {'reconnection': true, 'reconnectionDelay': 0, 'reconnectionAttempts': Infinity}) i = 0 console.log("Starting data collection - ", project); socket.on('log_message', function incoming(data) { json = JSON.parse(data); let points = []; // console.log(data) // console.log('Message from server:', json); points.push(new Point(project).floatField('size', json.megabytes).tag('downloader', json.downloader)); points.push(new Point(project).floatField('items', json.items.length).tag('downloader', json.downloader)); points.push(new Point(project).tag('version', json.version).stringField('version', json.version)); points.push(new Point(project).floatField('rtt_real', json.stats.values.rtt_real)); points.push(new Point(project).intField('done', json.stats.values.done_counter)); points.push(new Point(project).floatField('irsr', json.stats.values.item_request_serve_rate)); points.push(new Point(project).intField('claims', json.counts.out)); points.push(new Point(project).intField('todo', json.counts.todo)); points.push(new Point(project).intField('secondary', json.stats.queues['todo:secondary'])); points.push(new Point(project).intField('redo', json.stats.queues['todo:redo'])); points.push(new Point(project).intField('unretrievable', json.stats.queues['unretrievable'])); points.push(new Point(project).intField('backfeed', json.stats.queues['todo:backfeed'])); points.push(new Point(project).floatField('ifr', json.stats.values.item_fail_rate)); points.push(new Point(project).floatField('rr', json.stats.values.reclaim_rate)); points.push(new Point(project).floatField('rsr', json.stats.values.reclaim_serve_rate)); writeAPI.writePoints(points); // console.log('pushed: ', points); // console.log('MBs: ', json.megabytes) // console.log('Item count: ', json.items.length) // console.log('version:', json.version) // console.log('downloader:', json.downloader) // console.log('rtt_real: ', json.stats.values.rtt_real) // console.log('done counter:', json.stats.values.done_counter) // console.log('item_request_serve_rate:', json.stats.values.item_request_serve_rate) // console.log('claims:', json.counts.out) // console.log('todo', json.counts.todo) i++; writeAPI.flush(); // if(i > 30000) // { // writeAPI.flush().then(r => process.exit(0)); // console.log('exiting => ', i); // } }); socket.on("connect_error", (err) => { console.log(`connect_error due to ${err.message}`); });