6 "github.com/prometheus/client_golang/prometheus"
7 "github.com/prometheus/client_golang/prometheus/promauto"
10var metricPanic = promauto.NewCounterVec(
11 prometheus.CounterOpts{
12 Name: "mox_panic_total",
13 Help: "Number of unhandled panics, by package.",
24 Import Panic = "import"
26 Imapserver Panic = "imapserver"
27 Dmarcdb Panic = "dmarcdb"
28 Mtastsdb Panic = "mtastsdb"
30 Smtpclient Panic = "smtpclient"
31 Smtpserver Panic = "smtpserver"
32 Tlsrptdb Panic = "tlsrptdb"
33 Dkimverify Panic = "dkimverify"
34 Spfverify Panic = "spfverify"
35 Upgradethreads Panic = "upgradethreads"
36 Importmanage Panic = "importmanage"
37 Importmessages Panic = "importmessages"
39 Webadmin Panic = "webadmin"
40 Webapi Panic = "webapi"
41 Webmailsendevent Panic = "webmailsendevent"
42 Webmail Panic = "webmail"
43 Webmailrequest Panic = "webmailrequest"
44 Webmailquery Panic = "webmailquery"
45 Webmailhandle Panic = "webmailhandle"
49 // Ensure the panic counts are initialized to 0, so the query for change also picks
50 // up the first panic.
72 for _, name := range names {
73 metricPanic.WithLabelValues(string(name)).Add(0)
77var Panics atomic.Int64
79func PanicInc(name Panic) {
81 metricPanic.WithLabelValues(string(name)).Inc()