Monitoring
chasquid includes an HTTP server for monitoring purposes, which for security
it is not enabled by default.
You can use the monitoring_address
configuration option to enable it.
Then just browse the address and human-friendly links to various monitoring
and debugging tools should appear.
These include:
- Command-line flags.
- Traces of both short and long
lived requests (sampled).
- State of the queue.
- State of goroutines.
- Exported variables for whitebox monitoring.
- Profiling endpoints, for use with
go tool pprof
or similar tools.
Variables
chasquid exports some variables for monitoring, via the standard
expvar package and the
OpenMetrics text format, which can be useful for
whitebox monitoring.
They're accessible on the monitoring HTTP server, at /debug/vars
(default
endpoint for expvars) and /metrics
(common endpoint for openmetrics).
The /metrics
endpoint is also compatible with
Prometheus.
Note these are still subject to change, although breaking changes will be
avoided whenever possible, and will be noted in the
release notes.
List of exported variables:
- chasquid/aliases/hookResults (hook result -> counter)
count of aliases hook results, by hook and result.
- chasquid/queue/deliverAttempts (recipient type -> counter)
attempts to deliver mail, by recipient type (pipe/local email/remote email).
- chasquid/queue/dsnQueued (counter)
count of DSNs that we generated (queued).
- chasquid/queue/itemsWritten (counter)
count of items the queue wrote to disk.
- chasquid/queue/putCount (counter)
number of envelopes put in the queue.
- chasquid/smtpIn/commandCount (map of command -> count)
count of SMTP commands received, by command. Note that for unknown commands
we use unknown<COMMAND>
.
- chasquid/smtpIn/hookResults (result -> counter)
count of hook invocations, by result.
- chasquid/smtpIn/loopsDetected (counter)
count of email loops detected.
- chasquid/smtpIn/responseCodeCount (code -> counter)
count of response codes returned to incoming SMTP connections, by result
code.
- chasquid/smtpIn/securityLevelChecks (result -> counter)
count of security level checks on incoming connections, by result.
- chasquid/smtpIn/spfResultCount (result -> counter)
count of SPF checks, by result.
- chasquid/smtpIn/tlsCount (tls status -> counter)
count of TLS statuses (plain/tls) for incoming SMTP connections.
- chasquid/smtpIn/wrongProtoCount (command -> counter)
count of commands for other protocols (e.g. HTTP commands).
- chasquid/smtpOut/securityLevelChecks (result -> counter)
count of security level checks on outgoing connections, by result.
- chasquid/smtpOut/sts/mode (mode -> counter)
count of STS checks on outgoing connections, by mode (enforce/testing).
- chasquid/smtpOut/sts/security (result -> counter)
count of STS security checks on outgoing connections, by result (pass/fail).
- chasquid/smtpOut/tlsCount (status -> counter)
count of TLS status (insecure TLS/secure TLS/plain) on outgoing connections.
- chasquid/smarthostOut/attempts (counter)
count of attempts to deliver via smarthost.
- chasquid/smarthostOut/errors (reason -> counter)
count of smarthost delivery errors, per reason.
- chasquid/smarthostOut/success (counter)
count of successful delivering via smarthost.
- chasquid/sourceDateStr (string)
timestamp when the binary was built, in human readable format.
- chasquid/sourceDateTimestamp (int)
timestamp when the binary was built, in seconds since epoch.
- chasquid/sts/cache/expired (counter)
count of expired entries in the STS cache.
- chasquid/sts/cache/failedFetch (counter)
count of failed fetches in the STS cache.
- chasquid/sts/cache/fetches (counter)
count of total fetches in the STS cache.
- chasquid/sts/cache/hits (counter)
count of hits in the STS cache.
- chasquid/sts/cache/invalid (counter)
count of invalid policies in the STS cache.
- chasquid/sts/cache/ioErrors (counter)
count of I/O errors when maintaining the STS cache.
- chasquid/sts/cache/marshalErrors (counter)
count of marshaling errors when maintaining the STS cache.
- chasquid/sts/cache/refreshCycles (counter)
count of STS cache refresh cycles.
- chasquid/sts/cache/refreshErrors (counter)
count of STS cache refresh errors.
- chasquid/sts/cache/refreshes (counter)
count of STS cache refreshes.
- chasquid/sts/cache/unmarshalErrors (counter)
count of unmarshaling errors in the STS cache.
- chasquid/version (string)
version string.