DVCS Stats - HTTP

Platform Notice: Data Center Only - This article only applies to Atlassian products on the Data Center platform.

Note that this KB was created for the Data Center version of the product. Data Center KBs for non-Data-Center-specific features may also work for Server versions of the product, however they have not been tested. Support for Server* products ended on February 15th 2024. If you are running a Server product, you can visit the Atlassian Server end of support announcement to review your migration options.

*Except Fisheye and Crucible

Summary

DVCS, JIRA-STATS, JIRA 9.8.0

Solution

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:

Parameter

Description

Recommended value

legacyHookCount

This metric will provide information if legacy webhooks are still used by customer.

(used before JIRA 8.14.X)

N/A

hookCount

All webhooks count which are accepted.

N/A

pushHookInMillis

All webhooks describing "push" type events.

N/A

pullHookInMillis

All webhooks describing "pull" type events.

N/A

hookTopNRepositories

Provide 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:

Parameter

Description

Recommended value

requestToGitInMillis

All requests count and distribution by time in milliseconds.

N/A

errorRequestToGitInMillis

All requests count with error response codes.

Example - rate limit exceed, repository not found, unauthorised requests.

0

repositoryRequestToGitInMillis

All requests count and distribution by times in ms executed on repository level.

N/A

branchRequestToGitInMillis

All requests count and distribution by times in ms executed on branch level.

N/A

commitRequestToGitInMillis

All requests count and distribution by times in ms executed on commit level.

N/A

prRequestToGitInMillis

All requests count and distribution by times in ms executed on pull request level.

N/A

repositoriesResponseSize

Metric providing count of repositories fetched for synchronisation.

N/A

branchesResponseSize

Metric providing count of branches fetched for synchronisation.

N/A

topNRepositories

Provide top 10 repositories generating outbound traffic in descending order.

N/A

topNErrors

Provide top 15 most common errors which appear in descending order

N/A

responseStatus

Provide top 15 most common response statuses in descending order

N/A

dvcsTypes

Provide information about outbound traffic generated by dvcs types (git providers).

N/A

(Auto-migrated image: description temporarily unavailable)
(Auto-migrated image: description temporarily unavailable)
(Auto-migrated image: description temporarily unavailable)
(Auto-migrated image: description temporarily unavailable)
(Auto-migrated image: description temporarily unavailable)
(Auto-migrated image: description temporarily unavailable)
(Auto-migrated image: description temporarily unavailable)
(Auto-migrated image: description temporarily unavailable)
(Auto-migrated image: description temporarily unavailable)

Updated on April 8, 2025

Still need help?

The Atlassian Community is here for you.