diff --git a/changelogs/unreleased/31064-ensure-diff-patch-size-limit-is-monitorable.yml b/changelogs/unreleased/31064-ensure-diff-patch-size-limit-is-monitorable.yml new file mode 100644 index 0000000000000000000000000000000000000000..59bdb1905bede0daf77fad7d0bbf3216a10cff79 --- /dev/null +++ b/changelogs/unreleased/31064-ensure-diff-patch-size-limit-is-monitorable.yml @@ -0,0 +1,5 @@ +--- +title: Add `patch_hard_limit_bytes_hit` metric for monitoring diff patch size limit hits +merge_request: 52456 +author: +type: added diff --git a/doc/administration/monitoring/prometheus/gitlab_metrics.md b/doc/administration/monitoring/prometheus/gitlab_metrics.md index 105c0a408ce96aceb9bc4620151c311507912983..bd8236134a9d33844230a771c0e88c3ccef4c01e 100644 --- a/doc/administration/monitoring/prometheus/gitlab_metrics.md +++ b/doc/administration/monitoring/prometheus/gitlab_metrics.md @@ -71,6 +71,7 @@ The following metrics are available: | `gitlab_transaction_event_etag_caching_resource_changed_total` | Counter | 9.4 | Counter for ETag cache miss - resource changed | `endpoint` | | `gitlab_transaction_event_fork_repository_total` | Counter | 9.4 | Counter for repository forks (RepositoryForkWorker). Only incremented when source repository exists | | | `gitlab_transaction_event_import_repository_total` | Counter | 9.4 | Counter for repository imports (RepositoryImportWorker) | | +| `gitlab_transaction_event_patch_hard_limit_bytes_hit_total` | Counter | 13.9 | Counter for diff patch size limit hits | | | `gitlab_transaction_event_push_branch_total` | Counter | 9.4 | Counter for all branch pushes | | | `gitlab_transaction_event_push_commit_total` | Counter | 9.4 | Counter for commits | `branch` | | `gitlab_transaction_event_push_tag_total` | Counter | 9.4 | Counter for tag pushes | | diff --git a/lib/gitlab/git/diff.rb b/lib/gitlab/git/diff.rb index 209917073c7eff38d7d08762b3acb5f03f680661..53df0b7b3895bd744d430fae3e8b427af5850a1b 100644 --- a/lib/gitlab/git/diff.rb +++ b/lib/gitlab/git/diff.rb @@ -244,6 +244,8 @@ def init_from_gitaly(gitaly_diff) def prune_diff_if_eligible if too_large? + ::Gitlab::Metrics.add_event(:patch_hard_limit_bytes_hit) + too_large! elsif collapsed? collapse! diff --git a/spec/lib/gitlab/git/diff_spec.rb b/spec/lib/gitlab/git/diff_spec.rb index 783f0a9ccf771cec0f9d3fa307e2ec87656d34ad..17bb83d0f2f72a3f89fffd180520ba79c6309035 100644 --- a/spec/lib/gitlab/git/diff_spec.rb +++ b/spec/lib/gitlab/git/diff_spec.rb @@ -100,6 +100,13 @@ expect(diff.diff).to be_empty expect(diff).to be_too_large end + + it 'logs the event' do + expect(Gitlab::Metrics).to receive(:add_event) + .with(:patch_hard_limit_bytes_hit) + + diff + end end context 'using a collapsable diff that is too large' do