2021-12-18 18:01:29 +00:00
//go:build windows
2020-11-08 05:49:59 +00:00
// +build windows
package collector
import (
2023-04-01 07:48:23 +00:00
"errors"
2020-11-08 05:49:59 +00:00
"fmt"
2023-04-22 10:17:51 +00:00
"regexp"
2023-03-12 23:32:17 +00:00
"github.com/alecthomas/kingpin/v2"
2023-04-22 10:17:51 +00:00
"github.com/go-kit/log"
"github.com/go-kit/log/level"
2020-11-08 05:49:59 +00:00
"github.com/prometheus/client_golang/prometheus"
)
2023-04-16 09:45:07 +00:00
const (
2023-04-01 07:48:23 +00:00
FlagSmtpServerOldExclude = "collector.smtp.server-blacklist"
FlagSmtpServerOldInclude = "collector.smtp.server-whitelist"
FlagSmtpServerExclude = "collector.smtp.server-exclude"
FlagSmtpServerInclude = "collector.smtp.server-include"
2023-04-16 09:45:07 +00:00
)
2020-11-08 05:49:59 +00:00
var (
2023-04-01 07:48:23 +00:00
serverOldInclude * string
serverOldExclude * string
serverInclude * string
serverExclude * string
serverIncludeSet bool
serverExcludeSet bool
2020-11-08 05:49:59 +00:00
)
type SMTPCollector struct {
2023-04-22 10:17:51 +00:00
logger log . Logger
2020-11-08 05:49:59 +00:00
BadmailedMessagesBadPickupFileTotal * prometheus . Desc
BadmailedMessagesGeneralFailureTotal * prometheus . Desc
BadmailedMessagesHopCountExceededTotal * prometheus . Desc
BadmailedMessagesNDROfDSNTotal * prometheus . Desc
BadmailedMessagesNoRecipientsTotal * prometheus . Desc
BadmailedMessagesTriggeredViaEventTotal * prometheus . Desc
BytesSentTotal * prometheus . Desc
BytesReceivedTotal * prometheus . Desc
CategorizerQueueLength * prometheus . Desc
ConnectionErrorsTotal * prometheus . Desc
CurrentMessagesInLocalDelivery * prometheus . Desc
DirectoryDropsTotal * prometheus . Desc
DNSQueriesTotal * prometheus . Desc
DSNFailuresTotal * prometheus . Desc
ETRNMessagesTotal * prometheus . Desc
InboundConnectionsCurrent * prometheus . Desc
InboundConnectionsTotal * prometheus . Desc
LocalQueueLength * prometheus . Desc
LocalRetryQueueLength * prometheus . Desc
MailFilesOpen * prometheus . Desc
MessageBytesReceivedTotal * prometheus . Desc
MessageBytesSentTotal * prometheus . Desc
MessageDeliveryRetriesTotal * prometheus . Desc
MessageSendRetriesTotal * prometheus . Desc
MessagesCurrentlyUndeliverable * prometheus . Desc
MessagesDeliveredTotal * prometheus . Desc
MessagesPendingRouting * prometheus . Desc
MessagesReceivedTotal * prometheus . Desc
MessagesRefusedForAddressObjectsTotal * prometheus . Desc
MessagesRefusedForMailObjectsTotal * prometheus . Desc
MessagesRefusedForSizeTotal * prometheus . Desc
MessagesSentTotal * prometheus . Desc
MessagesSubmittedTotal * prometheus . Desc
NDRsGeneratedTotal * prometheus . Desc
OutboundConnectionsCurrent * prometheus . Desc
OutboundConnectionsRefusedTotal * prometheus . Desc
OutboundConnectionsTotal * prometheus . Desc
QueueFilesOpen * prometheus . Desc
PickupDirectoryMessagesRetrievedTotal * prometheus . Desc
RemoteQueueLength * prometheus . Desc
RemoteRetryQueueLength * prometheus . Desc
RoutingTableLookupsTotal * prometheus . Desc
2023-04-01 07:48:23 +00:00
serverIncludePattern * regexp . Regexp
serverExcludePattern * regexp . Regexp
2020-11-08 05:49:59 +00:00
}
2023-04-16 09:45:07 +00:00
func newSMTPCollectorFlags ( app * kingpin . Application ) {
2023-04-01 07:48:23 +00:00
serverInclude = app . Flag (
FlagSmtpServerInclude ,
"Regexp of virtual servers to include. Server name must both match include and not match exclude to be included." ,
) . Default ( ".+" ) . PreAction ( func ( c * kingpin . ParseContext ) error {
serverIncludeSet = true
return nil
} ) . String ( )
serverExclude = app . Flag (
FlagSmtpServerExclude ,
"Regexp of virtual servers to exclude. Server name must both match include and not match exclude to be included." ,
) . Default ( "" ) . PreAction ( func ( c * kingpin . ParseContext ) error {
serverExcludeSet = true
return nil
} ) . String ( )
serverOldInclude = app . Flag (
FlagSmtpServerOldInclude ,
"DEPRECATED: Use --collector.smtp.server-include" ,
) . Hidden ( ) . String ( )
serverOldExclude = app . Flag (
FlagSmtpServerOldExclude ,
"DEPRECATED: Use --collector.smtp.server-exclude" ,
) . Hidden ( ) . String ( )
2023-04-16 09:45:07 +00:00
}
2023-04-22 10:17:51 +00:00
func newSMTPCollector ( logger log . Logger ) ( Collector , error ) {
const subsystem = "smtp"
logger = log . With ( logger , "collector" , subsystem )
2023-06-08 00:29:50 +00:00
_ = level . Info ( logger ) . Log ( "msg" , "smtp collector is in an experimental state! Metrics for this collector have not been tested." )
2020-11-08 05:49:59 +00:00
2023-04-01 07:48:23 +00:00
if * serverOldExclude != "" {
if ! serverExcludeSet {
2023-06-08 00:29:50 +00:00
_ = level . Warn ( logger ) . Log ( "msg" , "--collector.smtp.server-blacklist is DEPRECATED and will be removed in a future release, use --collector.smtp.server-exclude" )
2023-04-01 07:48:23 +00:00
* serverExclude = * serverOldExclude
} else {
return nil , errors . New ( "--collector.smtp.server-blacklist and --collector.smtp.server-exclude are mutually exclusive" )
}
}
if * serverOldInclude != "" {
if ! serverIncludeSet {
2023-06-08 00:29:50 +00:00
_ = level . Warn ( logger ) . Log ( "msg" , "--collector.smtp.server-whitelist is DEPRECATED and will be removed in a future release, use --collector.smtp.server-include" )
2023-04-01 07:48:23 +00:00
* serverInclude = * serverOldInclude
} else {
return nil , errors . New ( "--collector.smtp.server-whitelist and --collector.smtp.server-include are mutually exclusive" )
}
}
2020-11-08 05:49:59 +00:00
return & SMTPCollector {
2023-04-22 10:17:51 +00:00
logger : logger ,
2020-11-08 05:49:59 +00:00
BadmailedMessagesBadPickupFileTotal : prometheus . NewDesc (
prometheus . BuildFQName ( Namespace , subsystem , "badmailed_messages_bad_pickup_file_total" ) ,
"Total number of malformed pickup messages sent to badmail" ,
[ ] string { "site" } ,
nil ,
) ,
BadmailedMessagesGeneralFailureTotal : prometheus . NewDesc (
prometheus . BuildFQName ( Namespace , subsystem , "badmailed_messages_general_failure_total" ) ,
"Total number of messages sent to badmail for reasons not associated with a specific counter" ,
[ ] string { "site" } ,
nil ,
) ,
BadmailedMessagesHopCountExceededTotal : prometheus . NewDesc (
prometheus . BuildFQName ( Namespace , subsystem , "badmailed_messages_hop_count_exceeded_total" ) ,
"Total number of messages sent to badmail because they had exceeded the maximum hop count" ,
[ ] string { "site" } ,
nil ,
) ,
BadmailedMessagesNDROfDSNTotal : prometheus . NewDesc (
prometheus . BuildFQName ( Namespace , subsystem , "badmailed_messages_ndr_of_dns_total" ) ,
"Total number of Delivery Status Notifications sent to badmail because they could not be delivered" ,
[ ] string { "site" } ,
nil ,
) ,
BadmailedMessagesNoRecipientsTotal : prometheus . NewDesc (
prometheus . BuildFQName ( Namespace , subsystem , "badmailed_messages_no_recipients_total" ) ,
"Total number of messages sent to badmail because they had no recipients" ,
[ ] string { "site" } ,
nil ,
) ,
BadmailedMessagesTriggeredViaEventTotal : prometheus . NewDesc (
prometheus . BuildFQName ( Namespace , subsystem , "badmailed_messages_triggered_via_event_total" ) ,
"Total number of messages sent to badmail at the request of a server event sink" ,
[ ] string { "site" } ,
nil ,
) ,
BytesSentTotal : prometheus . NewDesc (
prometheus . BuildFQName ( Namespace , subsystem , "bytes_sent_total" ) ,
"Total number of bytes sent" ,
[ ] string { "site" } ,
nil ,
) ,
BytesReceivedTotal : prometheus . NewDesc (
prometheus . BuildFQName ( Namespace , subsystem , "bytes_received_total" ) ,
"Total number of bytes received" ,
[ ] string { "site" } ,
nil ,
) ,
CategorizerQueueLength : prometheus . NewDesc (
prometheus . BuildFQName ( Namespace , subsystem , "categorizer_queue_length" ) ,
"Number of messages in the categorizer queue" ,
[ ] string { "site" } ,
nil ,
) ,
ConnectionErrorsTotal : prometheus . NewDesc (
prometheus . BuildFQName ( Namespace , subsystem , "connection_errors_total" ) ,
"Total number of connection errors" ,
[ ] string { "site" } ,
nil ,
) ,
CurrentMessagesInLocalDelivery : prometheus . NewDesc (
prometheus . BuildFQName ( Namespace , subsystem , "current_messages_in_local_delivery" ) ,
"Number of messages that are currently being processed by a server event sink for local delivery" ,
[ ] string { "site" } ,
nil ,
) ,
DirectoryDropsTotal : prometheus . NewDesc (
prometheus . BuildFQName ( Namespace , subsystem , "directory_drops_total" ) ,
"Total number of messages placed in a drop directory" ,
[ ] string { "site" } ,
nil ,
) ,
DSNFailuresTotal : prometheus . NewDesc (
prometheus . BuildFQName ( Namespace , subsystem , "dsn_failures_total" ) ,
"Total number of failed DSN generation attempts" ,
[ ] string { "site" } ,
nil ,
) ,
DNSQueriesTotal : prometheus . NewDesc (
prometheus . BuildFQName ( Namespace , subsystem , "dns_queries_total" ) ,
"Total number of DNS lookups" ,
[ ] string { "site" } ,
nil ,
) ,
ETRNMessagesTotal : prometheus . NewDesc (
prometheus . BuildFQName ( Namespace , subsystem , "etrn_messages_total" ) ,
"Total number of ETRN messages received by the server" ,
[ ] string { "site" } ,
nil ,
) ,
InboundConnectionsCurrent : prometheus . NewDesc (
prometheus . BuildFQName ( Namespace , subsystem , "inbound_connections_current" ) ,
"Total number of connections currently inbound" ,
[ ] string { "site" } ,
nil ,
) ,
InboundConnectionsTotal : prometheus . NewDesc (
prometheus . BuildFQName ( Namespace , subsystem , "inbound_connections_total" ) ,
"Total number of inbound connections received" ,
[ ] string { "site" } ,
nil ,
) ,
LocalQueueLength : prometheus . NewDesc (
prometheus . BuildFQName ( Namespace , subsystem , "local_queue_length" ) ,
"Number of messages in the local queue" ,
[ ] string { "site" } ,
nil ,
) ,
LocalRetryQueueLength : prometheus . NewDesc (
prometheus . BuildFQName ( Namespace , subsystem , "local_retry_queue_length" ) ,
"Number of messages in the local retry queue" ,
[ ] string { "site" } ,
nil ,
) ,
MailFilesOpen : prometheus . NewDesc (
prometheus . BuildFQName ( Namespace , subsystem , "mail_files_open" ) ,
"Number of handles to open mail files" ,
[ ] string { "site" } ,
nil ,
) ,
MessageBytesReceivedTotal : prometheus . NewDesc (
prometheus . BuildFQName ( Namespace , subsystem , "message_bytes_received_total" ) ,
"Total number of bytes received in messages" ,
[ ] string { "site" } ,
nil ,
) ,
MessageBytesSentTotal : prometheus . NewDesc (
prometheus . BuildFQName ( Namespace , subsystem , "message_bytes_sent_total" ) ,
"Total number of bytes sent in messages" ,
[ ] string { "site" } ,
nil ,
) ,
MessageDeliveryRetriesTotal : prometheus . NewDesc (
prometheus . BuildFQName ( Namespace , subsystem , "message_delivery_retries_total" ) ,
"Total number of local deliveries that were retried" ,
[ ] string { "site" } ,
nil ,
) ,
MessageSendRetriesTotal : prometheus . NewDesc (
prometheus . BuildFQName ( Namespace , subsystem , "message_send_retries_total" ) ,
"Total number of outbound message sends that were retried" ,
[ ] string { "site" } ,
nil ,
) ,
MessagesCurrentlyUndeliverable : prometheus . NewDesc (
prometheus . BuildFQName ( Namespace , subsystem , "messages_currently_undeliverable" ) ,
"Number of messages that have been reported as currently undeliverable by routing" ,
[ ] string { "site" } ,
nil ,
) ,
MessagesDeliveredTotal : prometheus . NewDesc (
prometheus . BuildFQName ( Namespace , subsystem , "messages_delivered_total" ) ,
"Total number of messages delivered to local mailboxes" ,
[ ] string { "site" } ,
nil ,
) ,
MessagesPendingRouting : prometheus . NewDesc (
prometheus . BuildFQName ( Namespace , subsystem , "messages_pending_routing" ) ,
"Number of messages that have been categorized but not routed" ,
[ ] string { "site" } ,
nil ,
) ,
MessagesReceivedTotal : prometheus . NewDesc (
prometheus . BuildFQName ( Namespace , subsystem , "messages_received_total" ) ,
"Total number of inbound messages accepted" ,
[ ] string { "site" } ,
nil ,
) ,
MessagesRefusedForAddressObjectsTotal : prometheus . NewDesc (
prometheus . BuildFQName ( Namespace , subsystem , "messages_refused_for_address_objects_total" ) ,
"Total number of messages refused due to no address objects" ,
[ ] string { "site" } ,
nil ,
) ,
MessagesRefusedForMailObjectsTotal : prometheus . NewDesc (
prometheus . BuildFQName ( Namespace , subsystem , "messages_refused_for_mail_objects_total" ) ,
"Total number of messages refused due to no mail objects" ,
[ ] string { "site" } ,
nil ,
) ,
MessagesRefusedForSizeTotal : prometheus . NewDesc (
prometheus . BuildFQName ( Namespace , subsystem , "messages_refused_for_size_total" ) ,
"Total number of messages rejected because they were too big" ,
[ ] string { "site" } ,
nil ,
) ,
MessagesSentTotal : prometheus . NewDesc (
prometheus . BuildFQName ( Namespace , subsystem , "messages_sent_total" ) ,
"Total number of outbound messages sent" ,
[ ] string { "site" } ,
nil ,
) ,
MessagesSubmittedTotal : prometheus . NewDesc (
prometheus . BuildFQName ( Namespace , subsystem , "messages_submitted_total" ) ,
"Total number of messages submitted to queuing for delivery" ,
[ ] string { "site" } ,
nil ,
) ,
NDRsGeneratedTotal : prometheus . NewDesc (
prometheus . BuildFQName ( Namespace , subsystem , "ndrs_generated_total" ) ,
"Total number of non-delivery reports that have been generated" ,
[ ] string { "site" } ,
nil ,
) ,
OutboundConnectionsCurrent : prometheus . NewDesc (
prometheus . BuildFQName ( Namespace , subsystem , "outbound_connections_current" ) ,
"Number of connections currently outbound" ,
[ ] string { "site" } ,
nil ,
) ,
OutboundConnectionsRefusedTotal : prometheus . NewDesc (
prometheus . BuildFQName ( Namespace , subsystem , "outbound_connections_refused_total" ) ,
"Total number of connection attempts refused by remote sites" ,
[ ] string { "site" } ,
nil ,
) ,
OutboundConnectionsTotal : prometheus . NewDesc (
prometheus . BuildFQName ( Namespace , subsystem , "outbound_connections_total" ) ,
"Total number of outbound connections attempted" ,
[ ] string { "site" } ,
nil ,
) ,
PickupDirectoryMessagesRetrievedTotal : prometheus . NewDesc (
prometheus . BuildFQName ( Namespace , subsystem , "pickup_directory_messages_retrieved_total" ) ,
"Total number of messages retrieved from the mail pick-up directory" ,
[ ] string { "site" } ,
nil ,
) ,
QueueFilesOpen : prometheus . NewDesc (
prometheus . BuildFQName ( Namespace , subsystem , "queue_files_open" ) ,
"Number of handles to open queue files" ,
[ ] string { "site" } ,
nil ,
) ,
RemoteQueueLength : prometheus . NewDesc (
prometheus . BuildFQName ( Namespace , subsystem , "remote_queue_length" ) ,
"Number of messages in the remote queue" ,
[ ] string { "site" } ,
nil ,
) ,
RemoteRetryQueueLength : prometheus . NewDesc (
prometheus . BuildFQName ( Namespace , subsystem , "remote_retry_queue_length" ) ,
"Number of messages in the retry queue for remote delivery" ,
[ ] string { "site" } ,
nil ,
) ,
RoutingTableLookupsTotal : prometheus . NewDesc (
prometheus . BuildFQName ( Namespace , subsystem , "routing_table_lookups_total" ) ,
"Total number of routing table lookups" ,
[ ] string { "site" } ,
nil ,
) ,
2023-04-01 07:48:23 +00:00
serverIncludePattern : regexp . MustCompile ( fmt . Sprintf ( "^(?:%s)$" , * serverInclude ) ) ,
serverExcludePattern : regexp . MustCompile ( fmt . Sprintf ( "^(?:%s)$" , * serverExclude ) ) ,
2020-11-08 05:49:59 +00:00
} , nil
}
// Collect sends the metric values for each metric
// to the provided prometheus Metric channel.
func ( c * SMTPCollector ) Collect ( ctx * ScrapeContext , ch chan <- prometheus . Metric ) error {
if desc , err := c . collect ( ctx , ch ) ; err != nil {
2023-06-08 00:29:50 +00:00
_ = level . Error ( c . logger ) . Log ( "failed collecting smtp metrics" , "desc" , desc , "err" , err )
2020-11-08 05:49:59 +00:00
return err
}
return nil
}
// Perflib: "SMTP Server"
type PerflibSMTPServer struct {
Name string
BadmailedMessagesBadPickupFileTotal float64 ` perflib:"Badmailed Messages (Bad Pickup File)" `
BadmailedMessagesGeneralFailureTotal float64 ` perflib:"Badmailed Messages (General Failure)" `
BadmailedMessagesHopCountExceededTotal float64 ` perflib:"Badmailed Messages (Hop Count Exceeded)" `
BadmailedMessagesNDROfDSNTotal float64 ` perflib:"Badmailed Messages (NDR of DSN)" `
BadmailedMessagesNoRecipientsTotal float64 ` perflib:"Badmailed Messages (No Recipients)" `
BadmailedMessagesTriggeredViaEventTotal float64 ` perflib:"Badmailed Messages (Triggered via Event)" `
BytesSentTotal float64 ` perflib:"Bytes Sent Total" `
BytesReceivedTotal float64 ` perflib:"Bytes Received Total" `
CategorizerQueueLength float64 ` perflib:"Categorizer Queue Length" `
ConnectionErrorsTotal float64 ` perflib:"Total Connection Errors" `
CurrentMessagesInLocalDelivery float64 ` perflib:"Current Messages in Local Delivery" `
DirectoryDropsTotal float64 ` perflib:"Directory Drops Total" `
DNSQueriesTotal float64 ` perflib:"DNS Queries Total" `
DSNFailuresTotal float64 ` perflib:"Total DSN Failures" `
ETRNMessagesTotal float64 ` perflib:"ETRN Messages Total" `
InboundConnectionsCurrent float64 ` perflib:"Inbound Connections Current" `
InboundConnectionsTotal float64 ` perflib:"Inbound Connections Total" `
LocalQueueLength float64 ` perflib:"Local Queue Length" `
LocalRetryQueueLength float64 ` perflib:"Local Retry Queue Length" `
MailFilesOpen float64 ` perflib:"Number of MailFiles Open" `
MessageBytesReceivedTotal float64 ` perflib:"Message Bytes Received Total" `
MessageBytesSentTotal float64 ` perflib:"Message Bytes Sent Total" `
MessageDeliveryRetriesTotal float64 ` perflib:"Message Delivery Retries" `
MessageSendRetriesTotal float64 ` perflib:"Message Send Retries" `
MessagesCurrentlyUndeliverable float64 ` perflib:"Messages Currently Undeliverable" `
MessagesDeliveredTotal float64 ` perflib:"Messages Delivered Total" `
MessagesPendingRouting float64 ` perflib:"Messages Pending Routing" `
MessagesReceivedTotal float64 ` perflib:"Messages Received Total" `
MessagesRefusedForAddressObjectsTotal float64 ` perflib:"Messages Refused for Address Objects" `
MessagesRefusedForMailObjectsTotal float64 ` perflib:"Messages Refused for Mail Objects" `
MessagesRefusedForSizeTotal float64 ` perflib:"Messages Refused for Size" `
MessagesSentTotal float64 ` perflib:"Messages Sent Total" `
MessagesSubmittedTotal float64 ` perflib:"Total messages submitted" `
NDRsGeneratedTotal float64 ` perflib:"NDRs Generated" `
OutboundConnectionsCurrent float64 ` perflib:"Outbound Connections Current" `
OutboundConnectionsRefusedTotal float64 ` perflib:"Outbound Connections Refused" `
OutboundConnectionsTotal float64 ` perflib:"Outbound Connections Total" `
QueueFilesOpen float64 ` perflib:"Number of QueueFiles Open" `
PickupDirectoryMessagesRetrievedTotal float64 ` perflib:"Pickup Directory Messages Retrieved Total" `
RemoteQueueLength float64 ` perflib:"Remote Queue Length" `
RemoteRetryQueueLength float64 ` perflib:"Remote Retry Queue Length" `
RoutingTableLookupsTotal float64 ` perflib:"Routing Table Lookups Total" `
}
func ( c * SMTPCollector ) collect ( ctx * ScrapeContext , ch chan <- prometheus . Metric ) ( * prometheus . Desc , error ) {
var dst [ ] PerflibSMTPServer
2023-04-22 10:17:51 +00:00
if err := unmarshalObject ( ctx . perfObjects [ "SMTP Server" ] , & dst , c . logger ) ; err != nil {
2020-11-08 05:49:59 +00:00
return nil , err
}
for _ , server := range dst {
if server . Name == "_Total" ||
2023-04-01 07:48:23 +00:00
c . serverExcludePattern . MatchString ( server . Name ) ||
! c . serverIncludePattern . MatchString ( server . Name ) {
2020-11-08 05:49:59 +00:00
continue
}
ch <- prometheus . MustNewConstMetric (
c . BadmailedMessagesBadPickupFileTotal ,
prometheus . CounterValue ,
server . BadmailedMessagesBadPickupFileTotal ,
server . Name ,
)
ch <- prometheus . MustNewConstMetric (
c . BadmailedMessagesHopCountExceededTotal ,
prometheus . CounterValue ,
server . BadmailedMessagesHopCountExceededTotal ,
server . Name ,
)
ch <- prometheus . MustNewConstMetric (
c . BadmailedMessagesNDROfDSNTotal ,
prometheus . CounterValue ,
server . BadmailedMessagesNDROfDSNTotal ,
server . Name ,
)
ch <- prometheus . MustNewConstMetric (
c . BadmailedMessagesNoRecipientsTotal ,
prometheus . CounterValue ,
server . BadmailedMessagesNoRecipientsTotal ,
server . Name ,
)
ch <- prometheus . MustNewConstMetric (
c . BadmailedMessagesTriggeredViaEventTotal ,
prometheus . CounterValue ,
server . BadmailedMessagesTriggeredViaEventTotal ,
server . Name ,
)
ch <- prometheus . MustNewConstMetric (
c . BytesSentTotal ,
prometheus . CounterValue ,
server . BytesSentTotal ,
server . Name ,
)
ch <- prometheus . MustNewConstMetric (
c . BytesReceivedTotal ,
prometheus . CounterValue ,
server . BytesReceivedTotal ,
server . Name ,
)
ch <- prometheus . MustNewConstMetric (
c . CategorizerQueueLength ,
prometheus . GaugeValue ,
server . CategorizerQueueLength ,
server . Name ,
)
ch <- prometheus . MustNewConstMetric (
c . ConnectionErrorsTotal ,
prometheus . CounterValue ,
server . ConnectionErrorsTotal ,
server . Name ,
)
ch <- prometheus . MustNewConstMetric (
c . CurrentMessagesInLocalDelivery ,
prometheus . GaugeValue ,
server . CurrentMessagesInLocalDelivery ,
server . Name ,
)
ch <- prometheus . MustNewConstMetric (
c . DirectoryDropsTotal ,
prometheus . CounterValue ,
server . DirectoryDropsTotal ,
server . Name ,
)
ch <- prometheus . MustNewConstMetric (
c . DSNFailuresTotal ,
prometheus . CounterValue ,
server . DSNFailuresTotal ,
server . Name ,
)
ch <- prometheus . MustNewConstMetric (
c . DNSQueriesTotal ,
prometheus . CounterValue ,
server . DNSQueriesTotal ,
server . Name ,
)
ch <- prometheus . MustNewConstMetric (
c . ETRNMessagesTotal ,
prometheus . CounterValue ,
server . ETRNMessagesTotal ,
server . Name ,
)
ch <- prometheus . MustNewConstMetric (
c . InboundConnectionsTotal ,
prometheus . CounterValue ,
server . InboundConnectionsTotal ,
server . Name ,
)
ch <- prometheus . MustNewConstMetric (
c . InboundConnectionsCurrent ,
prometheus . GaugeValue ,
server . InboundConnectionsCurrent ,
server . Name ,
)
ch <- prometheus . MustNewConstMetric (
c . LocalQueueLength ,
prometheus . GaugeValue ,
server . LocalQueueLength ,
server . Name ,
)
ch <- prometheus . MustNewConstMetric (
c . LocalRetryQueueLength ,
prometheus . GaugeValue ,
server . LocalRetryQueueLength ,
server . Name ,
)
ch <- prometheus . MustNewConstMetric (
c . MailFilesOpen ,
prometheus . GaugeValue ,
server . MailFilesOpen ,
server . Name ,
)
ch <- prometheus . MustNewConstMetric (
c . MessageBytesReceivedTotal ,
prometheus . CounterValue ,
server . MessageBytesReceivedTotal ,
server . Name ,
)
ch <- prometheus . MustNewConstMetric (
c . MessageBytesSentTotal ,
prometheus . CounterValue ,
server . MessageBytesSentTotal ,
server . Name ,
)
ch <- prometheus . MustNewConstMetric (
c . MessageDeliveryRetriesTotal ,
prometheus . CounterValue ,
server . MessageDeliveryRetriesTotal ,
server . Name ,
)
ch <- prometheus . MustNewConstMetric (
c . MessageSendRetriesTotal ,
prometheus . CounterValue ,
server . MessageSendRetriesTotal ,
server . Name ,
)
ch <- prometheus . MustNewConstMetric (
c . MessagesCurrentlyUndeliverable ,
prometheus . GaugeValue ,
server . MessagesCurrentlyUndeliverable ,
server . Name ,
)
ch <- prometheus . MustNewConstMetric (
c . MessagesDeliveredTotal ,
prometheus . CounterValue ,
server . MessagesDeliveredTotal ,
server . Name ,
)
ch <- prometheus . MustNewConstMetric (
c . MessagesPendingRouting ,
prometheus . GaugeValue ,
server . MessagesPendingRouting ,
server . Name ,
)
ch <- prometheus . MustNewConstMetric (
c . MessagesReceivedTotal ,
prometheus . CounterValue ,
server . MessagesReceivedTotal ,
server . Name ,
)
ch <- prometheus . MustNewConstMetric (
c . MessagesRefusedForAddressObjectsTotal ,
prometheus . CounterValue ,
server . MessagesRefusedForAddressObjectsTotal ,
server . Name ,
)
ch <- prometheus . MustNewConstMetric (
c . MessagesRefusedForMailObjectsTotal ,
prometheus . CounterValue ,
server . MessagesRefusedForMailObjectsTotal ,
server . Name ,
)
ch <- prometheus . MustNewConstMetric (
c . MessagesRefusedForSizeTotal ,
prometheus . CounterValue ,
server . MessagesRefusedForSizeTotal ,
server . Name ,
)
ch <- prometheus . MustNewConstMetric (
c . MessagesSentTotal ,
prometheus . CounterValue ,
server . MessagesSentTotal ,
server . Name ,
)
ch <- prometheus . MustNewConstMetric (
c . MessagesSubmittedTotal ,
prometheus . CounterValue ,
server . MessagesSubmittedTotal ,
server . Name ,
)
ch <- prometheus . MustNewConstMetric (
c . NDRsGeneratedTotal ,
prometheus . CounterValue ,
server . NDRsGeneratedTotal ,
server . Name ,
)
ch <- prometheus . MustNewConstMetric (
c . OutboundConnectionsCurrent ,
prometheus . GaugeValue ,
server . OutboundConnectionsCurrent ,
server . Name ,
)
ch <- prometheus . MustNewConstMetric (
c . OutboundConnectionsRefusedTotal ,
prometheus . CounterValue ,
server . OutboundConnectionsRefusedTotal ,
server . Name ,
)
ch <- prometheus . MustNewConstMetric (
c . OutboundConnectionsTotal ,
prometheus . CounterValue ,
server . OutboundConnectionsTotal ,
server . Name ,
)
ch <- prometheus . MustNewConstMetric (
c . QueueFilesOpen ,
prometheus . GaugeValue ,
server . QueueFilesOpen ,
server . Name ,
)
ch <- prometheus . MustNewConstMetric (
c . PickupDirectoryMessagesRetrievedTotal ,
prometheus . CounterValue ,
server . PickupDirectoryMessagesRetrievedTotal ,
server . Name ,
)
ch <- prometheus . MustNewConstMetric (
c . RemoteQueueLength ,
prometheus . GaugeValue ,
server . RemoteQueueLength ,
server . Name ,
)
ch <- prometheus . MustNewConstMetric (
c . RemoteRetryQueueLength ,
prometheus . GaugeValue ,
server . RemoteRetryQueueLength ,
server . Name ,
)
ch <- prometheus . MustNewConstMetric (
c . RoutingTableLookupsTotal ,
prometheus . CounterValue ,
server . RoutingTableLookupsTotal ,
server . Name ,
)
}
return nil , nil
}