DVCS Stats - HTTP

DVCS, JIRA-STATS, JIRA 9.8.0

Intro


DVCS-HTTP stats is statistic group which inherit Jira-Stats behaviour and structure. It provides two logs in Jira log file (atlassian-jira.log) : snapshot measuring activity for 5 minute period of time and total - measuring from instance start.
DVCS-HTTP is focused on monitoring HTTP traffic which can be divided to two streams : Inbound stream (request which DVCS accept and process) and Outbound stream (requests which DVCS generates and sent). 

Logged statistics

Every node logs statistics that describe information about inbound and outbound traffic. There are two types of statistics: Snapshot and Total. More detailed information can be found here: Jira stats logs.
Each stats starts with meta-data about stats itself - name, type (total/snapshot), timestamp and etc...


HTTP Stats example

{
  "_statsName": "DVCS-HTTP",
  "_statsType": "snapshot",
  "_time": "2023-02-08T15:01:58.735Z",
  "_timestamp": 1675868518735,
  "_duration": "PT5M0.004S",
  "_invocations": 0,
  "_statsOverhead": "n/a",
  "nodeId": "n/a",
  "inbound": {
    "legacyHookCount": 0,
    "hookCount": 0,
    "pushHookInMillis": {
      "count": 0,
      "min": 0,
      "max": 0,
      "sum": 0,
      "avg": 0,
      "distributionCounter": {
        "100": 0,
        "200": 0,
        "400": 0,
        "700": 0,
        "1000": 0,
        "2000": 0,
        "5000": 0,
        "10000": 0,
        "30000": 0
      }
    },
    "pullHookInMillis": {
      "count": 0,
      "min": 0,
      "max": 0,
      "sum": 0,
      "avg": 0,
      "distributionCounter": {
        "100": 0,
        "200": 0,
        "400": 0,
        "700": 0,
        "1000": 0,
        "2000": 0,
        "5000": 0,
        "10000": 0,
        "30000": 0
      }
    },
    "hookTopNRepositories": {},
    "dvcsTypes": {
      "githube": 0,
      "github": 0,
      "gitlab": 0,
      "bitbucket": 0,
      "gitlabselfmanaged": 0
    },
    "legacyHookTopNRepositories": {
      "repo-1 [org_name]": 230,
      "repo-2 [org_namx]": 120
    }
  },
  "outbound": {
    "requestToGitInMillis": {
      "count": 0,
      "min": 0,
      "max": 0,
      "sum": 0,
      "avg": 0,
      "distributionCounter": {
        "100": 0,
        "1000": 0,
        "2000": 0,
        "5000": 0,
        "10000": 0,
        "30000": 0
      }
    },
    "errorRequestToGitInMillis": {
      "count": 0,
      "min": 0,
      "max": 0,
      "sum": 0,
      "avg": 0,
      "distributionCounter": {
        "100": 0,
        "1000": 0,
        "2000": 0,
        "5000": 0,
        "10000": 0,
        "30000": 0
      }
    },
    "repositoryRequestToGitInMillis": {
      "count": 0,
      "min": 0,
      "max": 0,
      "sum": 0,
      "avg": 0,
      "distributionCounter": {
        "100": 0,
        "1000": 0,
        "5000": 0,
        "10000": 0,
        "20000": 0,
        "30000": 0,
        "60000": 0,
        "120000": 0,
        "240000": 0
      }
    },
    "branchRequestToGitInMillis": {
      "count": 0,
      "min": 0,
      "max": 0,
      "sum": 0,
      "avg": 0,
      "distributionCounter": {
        "100": 0,
        "500": 0,
        "1000": 0,
        "5000": 0,
        "10000": 0,
        "30000": 0
      }
    },
    "commitRequestToGitInMillis": {
      "count": 0,
      "min": 0,
      "max": 0,
      "sum": 0,
      "avg": 0,
      "distributionCounter": {
        "100": 0,
        "500": 0,
        "1000": 0,
        "5000": 0,
        "10000": 0,
        "30000": 0
      }
    },
    "prRequestToGitInMillis": {
      "count": 0,
      "min": 0,
      "max": 0,
      "sum": 0,
      "avg": 0,
      "distributionCounter": {
        "100": 0,
        "500": 0,
        "1000": 0,
        "5000": 0,
        "10000": 0,
        "30000": 0
      }
    },
    "repositoriesResponseSize": {
      "count": 0,
      "min": 0,
      "max": 0,
      "sum": 0,
      "avg": 0,
      "distributionCounter": {
        "50": 0,
        "100": 0,
        "500": 0,
        "1000": 0,
        "5000": 0,
        "10000": 0,
        "50000": 0,
        "100000": 0
      }
    },
    "branchesResponseSize": {
      "count": 0,
      "min": 0,
      "max": 0,
      "sum": 0,
      "avg": 0,
      "distributionCounter": {
        "50": 0,
        "100": 0,
        "500": 0,
        "1000": 0,
        "5000": 0,
        "10000": 0,
        "50000": 0,
        "100000": 0
      }
    },
    "topNRepositories": {
      "repo-1 [org_name]": 230,
      "repo-2 [org_name3]": 120
    },
    "topNErrors": {
      "Exception": 435,
      "SourceControl Exception": 123
    },
    "responseStatus": {
      "OK": 435,
      "Rate limit": 123,
      "Unknown": 120
    },
    "dvcsTypes": {
      "githube": 0,
      "github": 0,
      "gitlab": 0,
      "bitbucket": 0,
      "gitlabselfmanaged": 0
    }
  }
}


In this stats we are monitoring following subgroups : 

To be more convenient stats will be split to two tables - inbound and outbound.

*It is hard to create standards for different stats 
because it have dozens of dependencies:
DB type, Configuration, Hardware, OS, Organisation Size, 
Repositories amount, Organisation amount, Commits,
Branches, HTTP traffic and many more.


Inbound subgroup:

ParameterDescriptionRecommended value
legacyHookCount

This metric will provide information if legacy webhooks are still used by customer.
(used before JIRA 8.14.X)

N/A
hookCountAll webhooks count which are accepted.N/A
pushHookInMillisAll webhooks describing "push" type events.N/A
pullHookInMillisAll webhooks describing "pull" type events.N/A
hookTopNRepositoriesProvide top 10 (by default) repositories which generates highest amount of webhooks.N/A
legacyHookTopNRepositories

Provide top 10 (by default) repositories which generates legacy webhooks.
After Jira 8.13.X webhooks were changed to be more efficient.

N/A


Outbound subgroup:

ParameterDescriptionRecommended value
requestToGitInMillisAll requests count and distribution by time in milliseconds.N/A
errorRequestToGitInMillisAll requests count with error response codes.
Example - rate limit exceed, repository not found, unauthorised requests.
0
repositoryRequestToGitInMillisAll requests count and distribution by times in ms executed on repository level.N/A
branchRequestToGitInMillisAll requests count and distribution by times in ms executed on branch level.N/A
commitRequestToGitInMillisAll requests count and distribution by times in ms executed on commit level.N/A
prRequestToGitInMillisAll requests count and distribution by times in ms executed on pull request level.N/A
repositoriesResponseSizeMetric providing count of repositories fetched for synchronisation.N/A
branchesResponseSizeMetric providing count of branches fetched for synchronisation.N/A
topNRepositoriesProvide top 10 repositories generating outbound traffic in descending order.N/A
topNErrorsProvide top 15 most common errors which appear in descending orderN/A
responseStatusProvide top 15 most common response statuses in descending orderN/A
dvcsTypesProvide information about outbound traffic generated by dvcs types (git providers).N/A




Last modified on Jan 17, 2025

Was this helpful?

Yes
No
Provide feedback about this article
Powered by Confluence and Scroll Viewport.