smtp: refactor collector (#1739)

Signed-off-by: Jan-Otto Kröpke <mail@jkroepke.de>
This commit is contained in:
Jan-Otto Kröpke
2024-11-15 20:39:56 +01:00
committed by GitHub
parent 78bd720e88
commit b209ab6d6a
2 changed files with 193 additions and 150 deletions

View File

@@ -0,0 +1,46 @@
package smtp
const (
badmailedMessagesBadPickupFileTotal = "Badmailed Messages (Bad Pickup File)"
badmailedMessagesGeneralFailureTotal = "Badmailed Messages (General Failure)"
badmailedMessagesHopCountExceededTotal = "Badmailed Messages (Hop Count Exceeded)"
badmailedMessagesNDROfDSNTotal = "Badmailed Messages (NDR of DSN)"
badmailedMessagesNoRecipientsTotal = "Badmailed Messages (No Recipients)"
badmailedMessagesTriggeredViaEventTotal = "Badmailed Messages (Triggered via Event)"
bytesSentTotal = "Bytes Sent Total"
bytesReceivedTotal = "Bytes Received Total"
categorizerQueueLength = "Categorizer Queue Length"
connectionErrorsTotal = "Total Connection Errors"
currentMessagesInLocalDelivery = "Current Messages in Local Delivery"
directoryDropsTotal = "Directory Drops Total"
dnsQueriesTotal = "DNS Queries Total"
dsnFailuresTotal = "Total DSN Failures"
etrnMessagesTotal = "ETRN Messages Total"
inboundConnectionsCurrent = "Inbound Connections Current"
inboundConnectionsTotal = "Inbound Connections Total"
localQueueLength = "Local Queue Length"
localRetryQueueLength = "Local Retry Queue Length"
mailFilesOpen = "Number of MailFiles Open"
messageBytesReceivedTotal = "Message Bytes Received Total"
messageBytesSentTotal = "Message Bytes Sent Total"
messageDeliveryRetriesTotal = "Message Delivery Retries"
messageSendRetriesTotal = "Message Send Retries"
messagesCurrentlyUndeliverable = "Messages Currently Undeliverable"
messagesDeliveredTotal = "Messages Delivered Total"
messagesPendingRouting = "Messages Pending Routing"
messagesReceivedTotal = "Messages Received Total"
messagesRefusedForAddressObjectsTotal = "Messages Refused for Address Objects"
messagesRefusedForMailObjectsTotal = "Messages Refused for Mail Objects"
messagesRefusedForSizeTotal = "Messages Refused for Size"
messagesSentTotal = "Messages Sent Total"
messagesSubmittedTotal = "Total messages submitted"
ndrsGeneratedTotal = "NDRs Generated"
outboundConnectionsCurrent = "Outbound Connections Current"
outboundConnectionsRefusedTotal = "Outbound Connections Refused"
outboundConnectionsTotal = "Outbound Connections Total"
queueFilesOpen = "Number of QueueFiles Open"
pickupDirectoryMessagesRetrievedTotal = "Pickup Directory Messages Retrieved Total"
remoteQueueLength = "Remote Queue Length"
remoteRetryQueueLength = "Remote Retry Queue Length"
routingTableLookupsTotal = "Routing Table Lookups Total"
)

View File

@@ -9,7 +9,7 @@ import (
"github.com/alecthomas/kingpin/v2" "github.com/alecthomas/kingpin/v2"
"github.com/prometheus-community/windows_exporter/internal/mi" "github.com/prometheus-community/windows_exporter/internal/mi"
v1 "github.com/prometheus-community/windows_exporter/internal/perfdata/v1" "github.com/prometheus-community/windows_exporter/internal/perfdata"
"github.com/prometheus-community/windows_exporter/internal/types" "github.com/prometheus-community/windows_exporter/internal/types"
"github.com/prometheus/client_golang/prometheus" "github.com/prometheus/client_golang/prometheus"
) )
@@ -29,6 +29,8 @@ var ConfigDefaults = Config{
type Collector struct { type Collector struct {
config Config config Config
perfDataCollector perfdata.Collector
badMailedMessagesBadPickupFileTotal *prometheus.Desc badMailedMessagesBadPickupFileTotal *prometheus.Desc
badMailedMessagesGeneralFailureTotal *prometheus.Desc badMailedMessagesGeneralFailureTotal *prometheus.Desc
badMailedMessagesHopCountExceededTotal *prometheus.Desc badMailedMessagesHopCountExceededTotal *prometheus.Desc
@@ -138,10 +140,62 @@ func (c *Collector) GetPerfCounter(_ *slog.Logger) ([]string, error) {
} }
func (c *Collector) Close(_ *slog.Logger) error { func (c *Collector) Close(_ *slog.Logger) error {
c.perfDataCollector.Close()
return nil return nil
} }
func (c *Collector) Build(logger *slog.Logger, _ *mi.Session) error { func (c *Collector) Build(logger *slog.Logger, _ *mi.Session) error {
var err error
c.perfDataCollector, err = perfdata.NewCollector(perfdata.V2, "SMTP Server", perfdata.AllInstances, []string{
badmailedMessagesBadPickupFileTotal,
badmailedMessagesGeneralFailureTotal,
badmailedMessagesHopCountExceededTotal,
badmailedMessagesNDROfDSNTotal,
badmailedMessagesNoRecipientsTotal,
badmailedMessagesTriggeredViaEventTotal,
bytesSentTotal,
bytesReceivedTotal,
categorizerQueueLength,
connectionErrorsTotal,
currentMessagesInLocalDelivery,
directoryDropsTotal,
dnsQueriesTotal,
dsnFailuresTotal,
etrnMessagesTotal,
inboundConnectionsCurrent,
inboundConnectionsTotal,
localQueueLength,
localRetryQueueLength,
mailFilesOpen,
messageBytesReceivedTotal,
messageBytesSentTotal,
messageDeliveryRetriesTotal,
messageSendRetriesTotal,
messagesCurrentlyUndeliverable,
messagesDeliveredTotal,
messagesPendingRouting,
messagesReceivedTotal,
messagesRefusedForAddressObjectsTotal,
messagesRefusedForMailObjectsTotal,
messagesRefusedForSizeTotal,
messagesSentTotal,
messagesSubmittedTotal,
ndrsGeneratedTotal,
outboundConnectionsCurrent,
outboundConnectionsRefusedTotal,
outboundConnectionsTotal,
queueFilesOpen,
pickupDirectoryMessagesRetrievedTotal,
remoteQueueLength,
remoteRetryQueueLength,
routingTableLookupsTotal,
})
if err != nil {
return fmt.Errorf("failed to create SMTP Server collector: %w", err)
}
logger.Info("smtp collector is in an experimental state! Metrics for this collector have not been tested.", logger.Info("smtp collector is in an experimental state! Metrics for this collector have not been tested.",
slog.String("collector", Name), slog.String("collector", Name),
) )
@@ -404,368 +458,311 @@ func (c *Collector) Build(logger *slog.Logger, _ *mi.Session) error {
// Collect sends the metric values for each metric // Collect sends the metric values for each metric
// to the provided prometheus Metric channel. // to the provided prometheus Metric channel.
func (c *Collector) Collect(ctx *types.ScrapeContext, logger *slog.Logger, ch chan<- prometheus.Metric) error { func (c *Collector) Collect(_ *types.ScrapeContext, _ *slog.Logger, ch chan<- prometheus.Metric) error {
logger = logger.With(slog.String("collector", Name)) if err := c.collect(ch); err != nil {
if err := c.collect(ctx, logger, ch); err != nil { return fmt.Errorf("failed collecting smtp metrics: %w", err)
logger.Error("failed collecting smtp metrics",
slog.Any("err", err),
)
return err
} }
return nil return nil
} }
// PerflibSMTPServer Perflib: "SMTP Server". func (c *Collector) collect(ch chan<- prometheus.Metric) error {
type PerflibSMTPServer struct { perfData, err := c.perfDataCollector.Collect()
Name string if err != nil {
return fmt.Errorf("failed to collect SMTP Server metrics: %w", err)
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 *Collector) collect(ctx *types.ScrapeContext, logger *slog.Logger, ch chan<- prometheus.Metric) error {
logger = logger.With(slog.String("collector", Name))
var dst []PerflibSMTPServer
if err := v1.UnmarshalObject(ctx.PerfObjects["SMTP Server"], &dst, logger); err != nil {
return err
} }
for _, server := range dst { for name, server := range perfData {
if server.Name == "_Total" || if c.config.ServerExclude.MatchString(name) ||
c.config.ServerExclude.MatchString(server.Name) || !c.config.ServerInclude.MatchString(name) {
!c.config.ServerInclude.MatchString(server.Name) {
continue continue
} }
ch <- prometheus.MustNewConstMetric( ch <- prometheus.MustNewConstMetric(
c.badMailedMessagesBadPickupFileTotal, c.badMailedMessagesBadPickupFileTotal,
prometheus.CounterValue, prometheus.CounterValue,
server.BadmailedMessagesBadPickupFileTotal, server[badmailedMessagesBadPickupFileTotal].FirstValue,
server.Name, name,
) )
ch <- prometheus.MustNewConstMetric( ch <- prometheus.MustNewConstMetric(
c.badMailedMessagesHopCountExceededTotal, c.badMailedMessagesHopCountExceededTotal,
prometheus.CounterValue, prometheus.CounterValue,
server.BadmailedMessagesHopCountExceededTotal, server[badmailedMessagesHopCountExceededTotal].FirstValue,
server.Name, name,
) )
ch <- prometheus.MustNewConstMetric( ch <- prometheus.MustNewConstMetric(
c.badMailedMessagesNDROfDSNTotal, c.badMailedMessagesNDROfDSNTotal,
prometheus.CounterValue, prometheus.CounterValue,
server.BadmailedMessagesNDROfDSNTotal, server[badmailedMessagesNDROfDSNTotal].FirstValue,
server.Name, name,
) )
ch <- prometheus.MustNewConstMetric( ch <- prometheus.MustNewConstMetric(
c.badMailedMessagesNoRecipientsTotal, c.badMailedMessagesNoRecipientsTotal,
prometheus.CounterValue, prometheus.CounterValue,
server.BadmailedMessagesNoRecipientsTotal, server[badmailedMessagesNoRecipientsTotal].FirstValue,
server.Name, name,
) )
ch <- prometheus.MustNewConstMetric( ch <- prometheus.MustNewConstMetric(
c.badMailedMessagesTriggeredViaEventTotal, c.badMailedMessagesTriggeredViaEventTotal,
prometheus.CounterValue, prometheus.CounterValue,
server.BadmailedMessagesTriggeredViaEventTotal, server[badmailedMessagesTriggeredViaEventTotal].FirstValue,
server.Name, name,
) )
ch <- prometheus.MustNewConstMetric( ch <- prometheus.MustNewConstMetric(
c.bytesSentTotal, c.bytesSentTotal,
prometheus.CounterValue, prometheus.CounterValue,
server.BytesSentTotal, server[bytesSentTotal].FirstValue,
server.Name, name,
) )
ch <- prometheus.MustNewConstMetric( ch <- prometheus.MustNewConstMetric(
c.bytesReceivedTotal, c.bytesReceivedTotal,
prometheus.CounterValue, prometheus.CounterValue,
server.BytesReceivedTotal, server[bytesReceivedTotal].FirstValue,
server.Name, name,
) )
ch <- prometheus.MustNewConstMetric( ch <- prometheus.MustNewConstMetric(
c.categorizerQueueLength, c.categorizerQueueLength,
prometheus.GaugeValue, prometheus.GaugeValue,
server.CategorizerQueueLength, server[categorizerQueueLength].FirstValue,
server.Name, name,
) )
ch <- prometheus.MustNewConstMetric( ch <- prometheus.MustNewConstMetric(
c.connectionErrorsTotal, c.connectionErrorsTotal,
prometheus.CounterValue, prometheus.CounterValue,
server.ConnectionErrorsTotal, server[connectionErrorsTotal].FirstValue,
server.Name, name,
) )
ch <- prometheus.MustNewConstMetric( ch <- prometheus.MustNewConstMetric(
c.currentMessagesInLocalDelivery, c.currentMessagesInLocalDelivery,
prometheus.GaugeValue, prometheus.GaugeValue,
server.CurrentMessagesInLocalDelivery, server[currentMessagesInLocalDelivery].FirstValue,
server.Name, name,
) )
ch <- prometheus.MustNewConstMetric( ch <- prometheus.MustNewConstMetric(
c.directoryDropsTotal, c.directoryDropsTotal,
prometheus.CounterValue, prometheus.CounterValue,
server.DirectoryDropsTotal, server[directoryDropsTotal].FirstValue,
server.Name, name,
) )
ch <- prometheus.MustNewConstMetric( ch <- prometheus.MustNewConstMetric(
c.dsnFailuresTotal, c.dsnFailuresTotal,
prometheus.CounterValue, prometheus.CounterValue,
server.DSNFailuresTotal, server[dsnFailuresTotal].FirstValue,
server.Name, name,
) )
ch <- prometheus.MustNewConstMetric( ch <- prometheus.MustNewConstMetric(
c.dnsQueriesTotal, c.dnsQueriesTotal,
prometheus.CounterValue, prometheus.CounterValue,
server.DNSQueriesTotal, server[dnsQueriesTotal].FirstValue,
server.Name, name,
) )
ch <- prometheus.MustNewConstMetric( ch <- prometheus.MustNewConstMetric(
c.etrnMessagesTotal, c.etrnMessagesTotal,
prometheus.CounterValue, prometheus.CounterValue,
server.ETRNMessagesTotal, server[etrnMessagesTotal].FirstValue,
server.Name, name,
) )
ch <- prometheus.MustNewConstMetric( ch <- prometheus.MustNewConstMetric(
c.inboundConnectionsTotal, c.inboundConnectionsTotal,
prometheus.CounterValue, prometheus.CounterValue,
server.InboundConnectionsTotal, server[inboundConnectionsTotal].FirstValue,
server.Name, name,
) )
ch <- prometheus.MustNewConstMetric( ch <- prometheus.MustNewConstMetric(
c.inboundConnectionsCurrent, c.inboundConnectionsCurrent,
prometheus.GaugeValue, prometheus.GaugeValue,
server.InboundConnectionsCurrent, server[inboundConnectionsCurrent].FirstValue,
server.Name, name,
) )
ch <- prometheus.MustNewConstMetric( ch <- prometheus.MustNewConstMetric(
c.localQueueLength, c.localQueueLength,
prometheus.GaugeValue, prometheus.GaugeValue,
server.LocalQueueLength, server[localQueueLength].FirstValue,
server.Name, name,
) )
ch <- prometheus.MustNewConstMetric( ch <- prometheus.MustNewConstMetric(
c.localRetryQueueLength, c.localRetryQueueLength,
prometheus.GaugeValue, prometheus.GaugeValue,
server.LocalRetryQueueLength, server[localRetryQueueLength].FirstValue,
server.Name, name,
) )
ch <- prometheus.MustNewConstMetric( ch <- prometheus.MustNewConstMetric(
c.mailFilesOpen, c.mailFilesOpen,
prometheus.GaugeValue, prometheus.GaugeValue,
server.MailFilesOpen, server[mailFilesOpen].FirstValue,
server.Name, name,
) )
ch <- prometheus.MustNewConstMetric( ch <- prometheus.MustNewConstMetric(
c.messageBytesReceivedTotal, c.messageBytesReceivedTotal,
prometheus.CounterValue, prometheus.CounterValue,
server.MessageBytesReceivedTotal, server[messageBytesReceivedTotal].FirstValue,
server.Name, name,
) )
ch <- prometheus.MustNewConstMetric( ch <- prometheus.MustNewConstMetric(
c.messageBytesSentTotal, c.messageBytesSentTotal,
prometheus.CounterValue, prometheus.CounterValue,
server.MessageBytesSentTotal, server[messageBytesSentTotal].FirstValue,
server.Name, name,
) )
ch <- prometheus.MustNewConstMetric( ch <- prometheus.MustNewConstMetric(
c.messageDeliveryRetriesTotal, c.messageDeliveryRetriesTotal,
prometheus.CounterValue, prometheus.CounterValue,
server.MessageDeliveryRetriesTotal, server[messageDeliveryRetriesTotal].FirstValue,
server.Name, name,
) )
ch <- prometheus.MustNewConstMetric( ch <- prometheus.MustNewConstMetric(
c.messageSendRetriesTotal, c.messageSendRetriesTotal,
prometheus.CounterValue, prometheus.CounterValue,
server.MessageSendRetriesTotal, server[messageSendRetriesTotal].FirstValue,
server.Name, name,
) )
ch <- prometheus.MustNewConstMetric( ch <- prometheus.MustNewConstMetric(
c.messagesCurrentlyUndeliverable, c.messagesCurrentlyUndeliverable,
prometheus.GaugeValue, prometheus.GaugeValue,
server.MessagesCurrentlyUndeliverable, server[messagesCurrentlyUndeliverable].FirstValue,
server.Name, name,
) )
ch <- prometheus.MustNewConstMetric( ch <- prometheus.MustNewConstMetric(
c.messagesDeliveredTotal, c.messagesDeliveredTotal,
prometheus.CounterValue, prometheus.CounterValue,
server.MessagesDeliveredTotal, server[messagesDeliveredTotal].FirstValue,
server.Name, name,
) )
ch <- prometheus.MustNewConstMetric( ch <- prometheus.MustNewConstMetric(
c.messagesPendingRouting, c.messagesPendingRouting,
prometheus.GaugeValue, prometheus.GaugeValue,
server.MessagesPendingRouting, server[messagesPendingRouting].FirstValue,
server.Name, name,
) )
ch <- prometheus.MustNewConstMetric( ch <- prometheus.MustNewConstMetric(
c.messagesReceivedTotal, c.messagesReceivedTotal,
prometheus.CounterValue, prometheus.CounterValue,
server.MessagesReceivedTotal, server[messagesReceivedTotal].FirstValue,
server.Name, name,
) )
ch <- prometheus.MustNewConstMetric( ch <- prometheus.MustNewConstMetric(
c.messagesRefusedForAddressObjectsTotal, c.messagesRefusedForAddressObjectsTotal,
prometheus.CounterValue, prometheus.CounterValue,
server.MessagesRefusedForAddressObjectsTotal, server[messagesRefusedForAddressObjectsTotal].FirstValue,
server.Name, name,
) )
ch <- prometheus.MustNewConstMetric( ch <- prometheus.MustNewConstMetric(
c.messagesRefusedForMailObjectsTotal, c.messagesRefusedForMailObjectsTotal,
prometheus.CounterValue, prometheus.CounterValue,
server.MessagesRefusedForMailObjectsTotal, server[messagesRefusedForMailObjectsTotal].FirstValue,
server.Name, name,
) )
ch <- prometheus.MustNewConstMetric( ch <- prometheus.MustNewConstMetric(
c.messagesRefusedForSizeTotal, c.messagesRefusedForSizeTotal,
prometheus.CounterValue, prometheus.CounterValue,
server.MessagesRefusedForSizeTotal, server[messagesRefusedForSizeTotal].FirstValue,
server.Name, name,
) )
ch <- prometheus.MustNewConstMetric( ch <- prometheus.MustNewConstMetric(
c.messagesSentTotal, c.messagesSentTotal,
prometheus.CounterValue, prometheus.CounterValue,
server.MessagesSentTotal, server[messagesSentTotal].FirstValue,
server.Name, name,
) )
ch <- prometheus.MustNewConstMetric( ch <- prometheus.MustNewConstMetric(
c.messagesSubmittedTotal, c.messagesSubmittedTotal,
prometheus.CounterValue, prometheus.CounterValue,
server.MessagesSubmittedTotal, server[messagesSubmittedTotal].FirstValue,
server.Name, name,
) )
ch <- prometheus.MustNewConstMetric( ch <- prometheus.MustNewConstMetric(
c.ndrsGeneratedTotal, c.ndrsGeneratedTotal,
prometheus.CounterValue, prometheus.CounterValue,
server.NDRsGeneratedTotal, server[ndrsGeneratedTotal].FirstValue,
server.Name, name,
) )
ch <- prometheus.MustNewConstMetric( ch <- prometheus.MustNewConstMetric(
c.outboundConnectionsCurrent, c.outboundConnectionsCurrent,
prometheus.GaugeValue, prometheus.GaugeValue,
server.OutboundConnectionsCurrent, server[outboundConnectionsCurrent].FirstValue,
server.Name, name,
) )
ch <- prometheus.MustNewConstMetric( ch <- prometheus.MustNewConstMetric(
c.outboundConnectionsRefusedTotal, c.outboundConnectionsRefusedTotal,
prometheus.CounterValue, prometheus.CounterValue,
server.OutboundConnectionsRefusedTotal, server[outboundConnectionsRefusedTotal].FirstValue,
server.Name, name,
) )
ch <- prometheus.MustNewConstMetric( ch <- prometheus.MustNewConstMetric(
c.outboundConnectionsTotal, c.outboundConnectionsTotal,
prometheus.CounterValue, prometheus.CounterValue,
server.OutboundConnectionsTotal, server[outboundConnectionsTotal].FirstValue,
server.Name, name,
) )
ch <- prometheus.MustNewConstMetric( ch <- prometheus.MustNewConstMetric(
c.queueFilesOpen, c.queueFilesOpen,
prometheus.GaugeValue, prometheus.GaugeValue,
server.QueueFilesOpen, server[queueFilesOpen].FirstValue,
server.Name, name,
) )
ch <- prometheus.MustNewConstMetric( ch <- prometheus.MustNewConstMetric(
c.pickupDirectoryMessagesRetrievedTotal, c.pickupDirectoryMessagesRetrievedTotal,
prometheus.CounterValue, prometheus.CounterValue,
server.PickupDirectoryMessagesRetrievedTotal, server[pickupDirectoryMessagesRetrievedTotal].FirstValue,
server.Name, name,
) )
ch <- prometheus.MustNewConstMetric( ch <- prometheus.MustNewConstMetric(
c.remoteQueueLength, c.remoteQueueLength,
prometheus.GaugeValue, prometheus.GaugeValue,
server.RemoteQueueLength, server[remoteQueueLength].FirstValue,
server.Name, name,
) )
ch <- prometheus.MustNewConstMetric( ch <- prometheus.MustNewConstMetric(
c.remoteRetryQueueLength, c.remoteRetryQueueLength,
prometheus.GaugeValue, prometheus.GaugeValue,
server.RemoteRetryQueueLength, server[remoteRetryQueueLength].FirstValue,
server.Name, name,
) )
ch <- prometheus.MustNewConstMetric( ch <- prometheus.MustNewConstMetric(
c.routingTableLookupsTotal, c.routingTableLookupsTotal,
prometheus.CounterValue, prometheus.CounterValue,
server.RoutingTableLookupsTotal, server[routingTableLookupsTotal].FirstValue,
server.Name, name,
) )
} }