saveStats method

Future saveStats(
  1. int queriesCount,
  2. int timeMs
)

Implementation

Future saveStats(int queriesCount, int timeMs) async {
  if (config.getOptional<String>('influx.url', 'none') == 'none') {
    return;
  }

  var client = InfluxDBClient(
    url: config.getRequired<String>('influx.url'),
    token: config.getRequired<String>('influx.token'),
    org: config.getRequired<String>('influx.org'),
    bucket: config.getRequired<String>('influx.bucket'),
  );

  // Create write service
  var writeApi = client.getWriteService(WriteOptions().merge(precision: WritePrecision.s, batchSize: 100, flushInterval: 5000, gzip: true));

  var time = DateTime.now().toUtc();
  var taggedPoint = Point(
    '$pointPrefix${prefix}_api',
  ).addTag('service_id', serviceId.toString()).addTag('action', className).addField('response_time', timeMs).addField('db_queries', queriesCount);

  var untaggedPoint = Point(
    '$pointPrefix${prefix}_api',
  ).addTag('service_id', 'ALL').addTag('action', 'ALL').addField('response_time', timeMs).addField('db_queries', queriesCount);

  tags.forEach((key, value) {
    taggedPoint.addTag(key, value);
    untaggedPoint.addTag(key, 'ALL');
  });

  points.add(taggedPoint);
  points.add(untaggedPoint);

  for (var i = 0; i < points.length; i++) {
    points[i].time(time);
  }
  await writeApi.write(points).catchError((exception) {
    print('STATS SAVE ERROR');
    print(exception);
  });
}