diff options
author | John Cai <jcai@gitlab.com> | 2020-03-18 23:31:54 +0300 |
---|---|---|
committer | John Cai <jcai@gitlab.com> | 2020-03-21 03:26:35 +0300 |
commit | 011ff5d66328c94e6c240f385b881f1ea1da799e (patch) | |
tree | 55574577a43f9596432867790eacbb45de42a90b | |
parent | 1b7629e1c76556e0e216784deebb989b43169d62 (diff) |
Add metric counter for mismatched checksums after replication
-rw-r--r-- | changelogs/unreleased/jc-add-metric-for-bad-checksums.yml | 5 | ||||
-rw-r--r-- | internal/praefect/metrics/prometheus.go | 15 | ||||
-rw-r--r-- | internal/praefect/replicator.go | 4 |
3 files changed, 22 insertions, 2 deletions
diff --git a/changelogs/unreleased/jc-add-metric-for-bad-checksums.yml b/changelogs/unreleased/jc-add-metric-for-bad-checksums.yml new file mode 100644 index 000000000..5f5cc0a5b --- /dev/null +++ b/changelogs/unreleased/jc-add-metric-for-bad-checksums.yml @@ -0,0 +1,5 @@ +--- +title: Add metric counter for mismatched checksums after replication +merge_request: 1943 +author: +type: added diff --git a/internal/praefect/metrics/prometheus.go b/internal/praefect/metrics/prometheus.go index 12a7d7dfc..0b8bb0f8f 100644 --- a/internal/praefect/metrics/prometheus.go +++ b/internal/praefect/metrics/prometheus.go @@ -49,9 +49,20 @@ var PrimaryGauge = prometheus.NewGaugeVec( }, []string{"virtual_storage", "gitaly_storage"}, ) +var ChecksumMismatchCounter = prometheus.NewCounterVec( + prometheus.CounterOpts{ + Namespace: "gitaly", + Subsystem: "praefect", + Name: "checksum_mismatch_total", + }, []string{"target", "source"}, +) + func init() { - prometheus.MustRegister(MethodTypeCounter) - prometheus.MustRegister(PrimaryGauge) + prometheus.MustRegister( + MethodTypeCounter, + PrimaryGauge, + ChecksumMismatchCounter, + ) } // Gauge is a subset of a prometheus Gauge diff --git a/internal/praefect/replicator.go b/internal/praefect/replicator.go index d10a5640c..9fa23eeb6 100644 --- a/internal/praefect/replicator.go +++ b/internal/praefect/replicator.go @@ -83,6 +83,10 @@ func (dr defaultReplicator) Replicate(ctx context.Context, job datastore.ReplJob // TODO: Do something meaninful with the result of confirmChecksums if checksums do not match if !checksumsMatch { + metrics.ChecksumMismatchCounter.WithLabelValues( + targetRepository.GetStorageName(), + sourceRepository.GetStorageName(), + ).Inc() dr.log.WithFields(logrus.Fields{ "primary": sourceRepository, "replica": targetRepository, |