Skip to content
Snippets Groups Projects
Select Git revision
  • acd7cdcde0e1d58d7313de851ae0645878fb1d0e
  • main default protected
  • 14-env
  • fix-version-3
  • automated-updates-fix-action
  • release-0.15
  • automated-updates-main
  • release-0.13
  • automated-updates-release-0.13
  • release-0.14
  • release-0.10
  • release-0.11
  • release-0.12
  • fix-versions-action
  • versions-fix
  • release-0.9
  • release-0.8
  • release-0.7
  • release-0.6
  • release-0.5
  • release-0.4
  • v0.15.0
  • v0.14.0
  • v0.13.0
  • v0.12.0
  • v0.11.0
  • v0.10.0
  • v0.9.0
  • v0.8.0
  • v0.7.0
  • v0.6.0
  • v0.5.0
  • v0.4.0
  • v0.3.0
  • v0.2.0
  • v0.1.0
36 results

monitoring-external-etcd.md

Blame
  • stats.ts 1.81 KiB
    import URL from 'url';
    import { logger } from '../../logger';
    import * as memCache from '../../util/cache/memory';
    import type { RequestStats } from '../../util/http/types';
    
    export function printRequestStats(): void {
      const httpRequests = memCache.get<RequestStats[]>('http-requests');
      // istanbul ignore next
      if (!httpRequests) {
        return;
      }
      httpRequests.sort((a, b) => {
        if (a.url === b.url) {
          return 0;
        }
        if (a.url < b.url) {
          return -1;
        }
        return 1;
      });
      const allRequests: string[] = [];
      const requestHosts: Record<string, RequestStats[]> = {};
      for (const httpRequest of httpRequests) {
        const { method, url, duration, queueDuration } = httpRequest;
        allRequests.push(
          `${method.toUpperCase()} ${url} ${duration} ${queueDuration}`
        );
        const { hostname } = URL.parse(url);
        requestHosts[hostname] = requestHosts[hostname] || [];
        requestHosts[hostname].push(httpRequest);
      }
      logger.trace({ allRequests, requestHosts }, 'full stats');
      const hostStats: string[] = [];
      let totalRequests = 0;
      for (const [hostname, requests] of Object.entries(requestHosts)) {
        const hostRequests = requests.length;
        totalRequests += hostRequests;
        const requestSum = requests
          .map(({ duration }) => duration)
          .reduce((a, b) => a + b, 0);
        const requestAvg = Math.round(requestSum / hostRequests);
    
        const queueSum = requests
          .map(({ queueDuration }) => queueDuration)
          .reduce((a, b) => a + b, 0);
        const queueAvg = Math.round(queueSum / hostRequests);
        const requestCount =
          `${hostRequests} ` + (hostRequests > 1 ? 'requests' : 'request');
        hostStats.push(
          `${hostname}, ${requestCount}, ${requestAvg}ms request average, ${queueAvg}ms queue average`
        );
      }
      logger.debug({ hostStats, totalRequests }, 'http statistics');
    }