forked from jet/dotnet-templates
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathIngesterPrometheus.fs
More file actions
28 lines (20 loc) · 1.17 KB
/
IngesterPrometheus.fs
File metadata and controls
28 lines (20 loc) · 1.17 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
module PeriodicIngesterTemplate.Ingester.Prometheus
let baseName stat = "PeriodicIngesterTemplate_ingester_" + stat
let baseDesc desc = "PeriodicIngesterTemplate: Ingester " + desc
module private Counter =
let private make (config: Prometheus.CounterConfiguration) name desc =
let ctr = Prometheus.Metrics.CreateCounter(name, desc, config)
fun tagValues -> ctr.WithLabels(tagValues).Inc
let create (tagNames, tagValues) stat desc =
let config = Prometheus.CounterConfiguration(LabelNames = tagNames)
make config (baseName stat) (baseDesc desc) tagValues
module Stats =
let observeOutcomeStatus s = Counter.create ([| "status" |],[| s |]) "outcome_total" "Outcome"
let observeChanged = observeOutcomeStatus "changed"
let observeUnchanged = observeOutcomeStatus "unchanged"
let observeStale = observeOutcomeStatus "stale"
open PeriodicIngesterTemplate.Domain
let observeIngestionOutcome = function
| IngestionOutcome.Changed -> observeChanged ()
| IngestionOutcome.Unchanged -> observeUnchanged ()
| IngestionOutcome.Stale -> observeStale ()