process: Use registry collector for V1 data (#1814)

Signed-off-by: Jan-Otto Kröpke <mail@jkroepke.de>
This commit is contained in:
Jan-Otto Kröpke
2024-12-21 22:58:47 +01:00
committed by GitHub
parent 39c929eefe
commit a9f8b3b722
158 changed files with 7793 additions and 7748 deletions

View File

@@ -1,107 +0,0 @@
// Copyright 2024 The Prometheus Authors
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//go:build windows
package dns
const (
_ = "% User Time"
_ = "176"
_ = "Async Fast Reads/sec"
axfrRequestReceived = "AXFR Request Received"
axfrRequestSent = "AXFR Request Sent"
axfrResponseReceived = "AXFR Response Received"
axfrSuccessReceived = "AXFR Success Received"
axfrSuccessSent = "AXFR Success Sent"
cachingMemory = "Caching Memory"
_ = "Data Flush Pages/sec"
_ = "Data Flushes/sec"
databaseNodeMemory = "Database Node Memory"
dynamicUpdateNoOperation = "Dynamic Update NoOperation"
_ = "Dynamic Update NoOperation/sec"
dynamicUpdateQueued = "Dynamic Update Queued"
_ = "Dynamic Update Received"
_ = "Dynamic Update Received/sec"
dynamicUpdateRejected = "Dynamic Update Rejected"
dynamicUpdateTimeOuts = "Dynamic Update TimeOuts"
dynamicUpdateWrittenToDatabase = "Dynamic Update Written to Database"
_ = "Dynamic Update Written to Database/sec"
_ = "Enumerations Server/sec"
_ = "Fast Read Not Possibles/sec"
_ = "Fast Read Resource Misses/sec"
ixfrRequestReceived = "IXFR Request Received"
ixfrRequestSent = "IXFR Request Sent"
ixfrResponseReceived = "IXFR Response Received"
_ = "IXFR Success Received"
ixfrSuccessSent = "IXFR Success Sent"
ixfrTCPSuccessReceived = "IXFR TCP Success Received"
ixfrUDPSuccessReceived = "IXFR UDP Success Received"
_ = "Lazy Write Flushes/sec"
_ = "Lazy Write Pages/sec"
_ = "Level 2 TLB Fills/sec"
nbStatMemory = "Nbstat Memory"
notifyReceived = "Notify Received"
notifySent = "Notify Sent"
_ = "Query Dropped Bad Socket"
_ = "Query Dropped Bad Socket/sec"
_ = "Query Dropped By Policy"
_ = "Query Dropped By Policy/sec"
_ = "Query Dropped By Response Rate Limiting"
_ = "Query Dropped By Response Rate Limiting/sec"
_ = "Query Dropped Send"
_ = "Query Dropped Send/sec"
_ = "Query Dropped Total"
_ = "Query Dropped Total/sec"
recordFlowMemory = "Record Flow Memory"
recursiveQueries = "Recursive Queries"
_ = "Recursive Queries/sec"
recursiveQueryFailure = "Recursive Query Failure"
_ = "Recursive Query Failure/sec"
_ = "Recursive Send TimeOuts"
recursiveSendTimeOuts = "Recursive TimeOut/sec"
_ = "Responses Suppressed"
_ = "Responses Suppressed/sec"
secureUpdateFailure = "Secure Update Failure"
secureUpdateReceived = "Secure Update Received"
_ = "Secure Update Received/sec"
tcpMessageMemory = "TCP Message Memory"
tcpQueryReceived = "TCP Query Received"
_ = "TCP Query Received/sec"
tcpResponseSent = "TCP Response Sent"
_ = "TCP Response Sent/sec"
_ = "Total Query Received"
_ = "Total Query Received/sec"
_ = "Total Remote Inflight Queries"
_ = "Total Response Sent"
_ = "Total Response Sent/sec"
udpMessageMemory = "UDP Message Memory"
udpQueryReceived = "UDP Query Received"
_ = "UDP Query Received/sec"
udpResponseSent = "UDP Response Sent"
_ = "UDP Response Sent/sec"
unmatchedResponsesReceived = "Unmatched Responses Received"
_ = "Virtual Bytes"
winsLookupReceived = "WINS Lookup Received"
_ = "WINS Lookup Received/sec"
winsResponseSent = "WINS Response Sent"
_ = "WINS Response Sent/sec"
winsReverseLookupReceived = "WINS Reverse Lookup Received"
_ = "WINS Reverse Lookup Received/sec"
winsReverseResponseSent = "WINS Reverse Response Sent"
_ = "WINS Reverse Response Sent/sec"
zoneTransferFailure = "Zone Transfer Failure"
zoneTransferSOARequestSent = "Zone Transfer Request Received"
_ = "Zone Transfer SOA Request Sent"
_ = "Zone Transfer Success"
)

View File

@@ -21,7 +21,7 @@ import (
"github.com/alecthomas/kingpin/v2"
"github.com/prometheus-community/windows_exporter/internal/mi"
"github.com/prometheus-community/windows_exporter/internal/perfdata"
"github.com/prometheus-community/windows_exporter/internal/pdh"
"github.com/prometheus-community/windows_exporter/internal/types"
"github.com/prometheus/client_golang/prometheus"
)
@@ -37,7 +37,8 @@ var ConfigDefaults = Config{}
type Collector struct {
config Config
perfDataCollector *perfdata.Collector
perfDataCollector *pdh.Collector
perfDataObject []perfDataCounterValues
dynamicUpdatesFailures *prometheus.Desc
dynamicUpdatesQueued *prometheus.Desc
@@ -92,48 +93,7 @@ func (c *Collector) Close() error {
func (c *Collector) Build(_ *slog.Logger, _ *mi.Session) error {
var err error
c.perfDataCollector, err = perfdata.NewCollector("DNS", perfdata.InstancesAll, []string{
axfrRequestReceived,
axfrRequestSent,
axfrResponseReceived,
axfrSuccessReceived,
axfrSuccessSent,
cachingMemory,
databaseNodeMemory,
dynamicUpdateNoOperation,
dynamicUpdateQueued,
dynamicUpdateRejected,
dynamicUpdateTimeOuts,
dynamicUpdateWrittenToDatabase,
ixfrRequestReceived,
ixfrRequestSent,
ixfrResponseReceived,
ixfrSuccessSent,
ixfrTCPSuccessReceived,
ixfrUDPSuccessReceived,
nbStatMemory,
notifyReceived,
notifySent,
recordFlowMemory,
recursiveQueries,
recursiveQueryFailure,
recursiveSendTimeOuts,
secureUpdateFailure,
secureUpdateReceived,
tcpMessageMemory,
tcpQueryReceived,
tcpResponseSent,
udpMessageMemory,
udpQueryReceived,
udpResponseSent,
unmatchedResponsesReceived,
winsLookupReceived,
winsResponseSent,
winsReverseLookupReceived,
winsReverseResponseSent,
zoneTransferFailure,
zoneTransferSOARequestSent,
})
c.perfDataCollector, err = pdh.NewCollector[perfDataCounterValues]("DNS", pdh.InstancesAll)
if err != nil {
return fmt.Errorf("failed to create DNS collector: %w", err)
}
@@ -277,79 +237,74 @@ func (c *Collector) Build(_ *slog.Logger, _ *mi.Session) error {
// Collect sends the metric values for each metric
// to the provided prometheus Metric channel.
func (c *Collector) Collect(ch chan<- prometheus.Metric) error {
perfData, err := c.perfDataCollector.Collect()
err := c.perfDataCollector.Collect(&c.perfDataObject)
if err != nil {
return fmt.Errorf("failed to collect DNS metrics: %w", err)
}
data, ok := perfData[perfdata.InstanceEmpty]
if !ok {
return fmt.Errorf("failed to collect DNS metrics: %w", types.ErrNoData)
}
ch <- prometheus.MustNewConstMetric(
c.zoneTransferRequestsReceived,
prometheus.CounterValue,
data[axfrRequestReceived].FirstValue,
c.perfDataObject[0].AxfrRequestReceived,
"full",
)
ch <- prometheus.MustNewConstMetric(
c.zoneTransferRequestsReceived,
prometheus.CounterValue,
data[ixfrRequestReceived].FirstValue,
c.perfDataObject[0].IxfrRequestReceived,
"incremental",
)
ch <- prometheus.MustNewConstMetric(
c.zoneTransferRequestsSent,
prometheus.CounterValue,
data[axfrRequestSent].FirstValue,
c.perfDataObject[0].AxfrRequestSent,
"full",
)
ch <- prometheus.MustNewConstMetric(
c.zoneTransferRequestsSent,
prometheus.CounterValue,
data[ixfrRequestSent].FirstValue,
c.perfDataObject[0].IxfrRequestSent,
"incremental",
)
ch <- prometheus.MustNewConstMetric(
c.zoneTransferRequestsSent,
prometheus.CounterValue,
data[zoneTransferSOARequestSent].FirstValue,
c.perfDataObject[0].ZoneTransferSOARequestSent,
"soa",
)
ch <- prometheus.MustNewConstMetric(
c.zoneTransferResponsesReceived,
prometheus.CounterValue,
data[axfrResponseReceived].FirstValue,
c.perfDataObject[0].AxfrResponseReceived,
"full",
)
ch <- prometheus.MustNewConstMetric(
c.zoneTransferResponsesReceived,
prometheus.CounterValue,
data[ixfrResponseReceived].FirstValue,
c.perfDataObject[0].IxfrResponseReceived,
"incremental",
)
ch <- prometheus.MustNewConstMetric(
c.zoneTransferSuccessReceived,
prometheus.CounterValue,
data[axfrSuccessReceived].FirstValue,
c.perfDataObject[0].AxfrSuccessReceived,
"full",
"tcp",
)
ch <- prometheus.MustNewConstMetric(
c.zoneTransferSuccessReceived,
prometheus.CounterValue,
data[ixfrTCPSuccessReceived].FirstValue,
c.perfDataObject[0].IxfrTCPSuccessReceived,
"incremental",
"tcp",
)
ch <- prometheus.MustNewConstMetric(
c.zoneTransferSuccessReceived,
prometheus.CounterValue,
data[ixfrTCPSuccessReceived].FirstValue,
c.perfDataObject[0].IxfrTCPSuccessReceived,
"incremental",
"udp",
)
@@ -357,183 +312,183 @@ func (c *Collector) Collect(ch chan<- prometheus.Metric) error {
ch <- prometheus.MustNewConstMetric(
c.zoneTransferSuccessSent,
prometheus.CounterValue,
data[axfrSuccessSent].FirstValue,
c.perfDataObject[0].AxfrSuccessSent,
"full",
)
ch <- prometheus.MustNewConstMetric(
c.zoneTransferSuccessSent,
prometheus.CounterValue,
data[ixfrSuccessSent].FirstValue,
c.perfDataObject[0].IxfrSuccessSent,
"incremental",
)
ch <- prometheus.MustNewConstMetric(
c.zoneTransferFailures,
prometheus.CounterValue,
data[zoneTransferFailure].FirstValue,
c.perfDataObject[0].ZoneTransferFailure,
)
ch <- prometheus.MustNewConstMetric(
c.memoryUsedBytes,
prometheus.GaugeValue,
data[cachingMemory].FirstValue,
c.perfDataObject[0].CachingMemory,
"caching",
)
ch <- prometheus.MustNewConstMetric(
c.memoryUsedBytes,
prometheus.GaugeValue,
data[databaseNodeMemory].FirstValue,
c.perfDataObject[0].DatabaseNodeMemory,
"database_node",
)
ch <- prometheus.MustNewConstMetric(
c.memoryUsedBytes,
prometheus.GaugeValue,
data[nbStatMemory].FirstValue,
c.perfDataObject[0].NbStatMemory,
"nbstat",
)
ch <- prometheus.MustNewConstMetric(
c.memoryUsedBytes,
prometheus.GaugeValue,
data[recordFlowMemory].FirstValue,
c.perfDataObject[0].RecordFlowMemory,
"record_flow",
)
ch <- prometheus.MustNewConstMetric(
c.memoryUsedBytes,
prometheus.GaugeValue,
data[tcpMessageMemory].FirstValue,
c.perfDataObject[0].TcpMessageMemory,
"tcp_message",
)
ch <- prometheus.MustNewConstMetric(
c.memoryUsedBytes,
prometheus.GaugeValue,
data[udpMessageMemory].FirstValue,
c.perfDataObject[0].UdpMessageMemory,
"udp_message",
)
ch <- prometheus.MustNewConstMetric(
c.dynamicUpdatesReceived,
prometheus.CounterValue,
data[dynamicUpdateNoOperation].FirstValue,
c.perfDataObject[0].DynamicUpdateNoOperation,
"noop",
)
ch <- prometheus.MustNewConstMetric(
c.dynamicUpdatesReceived,
prometheus.CounterValue,
data[dynamicUpdateWrittenToDatabase].FirstValue,
c.perfDataObject[0].DynamicUpdateWrittenToDatabase,
"written",
)
ch <- prometheus.MustNewConstMetric(
c.dynamicUpdatesQueued,
prometheus.GaugeValue,
data[dynamicUpdateQueued].FirstValue,
c.perfDataObject[0].DynamicUpdateQueued,
)
ch <- prometheus.MustNewConstMetric(
c.dynamicUpdatesFailures,
prometheus.CounterValue,
data[dynamicUpdateRejected].FirstValue,
c.perfDataObject[0].DynamicUpdateRejected,
"rejected",
)
ch <- prometheus.MustNewConstMetric(
c.dynamicUpdatesFailures,
prometheus.CounterValue,
data[dynamicUpdateTimeOuts].FirstValue,
c.perfDataObject[0].DynamicUpdateTimeOuts,
"timeout",
)
ch <- prometheus.MustNewConstMetric(
c.notifyReceived,
prometheus.CounterValue,
data[notifyReceived].FirstValue,
c.perfDataObject[0].NotifyReceived,
)
ch <- prometheus.MustNewConstMetric(
c.notifySent,
prometheus.CounterValue,
data[notifySent].FirstValue,
c.perfDataObject[0].NotifySent,
)
ch <- prometheus.MustNewConstMetric(
c.recursiveQueries,
prometheus.CounterValue,
data[recursiveQueries].FirstValue,
c.perfDataObject[0].RecursiveQueries,
)
ch <- prometheus.MustNewConstMetric(
c.recursiveQueryFailures,
prometheus.CounterValue,
data[recursiveQueryFailure].FirstValue,
c.perfDataObject[0].RecursiveQueryFailure,
)
ch <- prometheus.MustNewConstMetric(
c.recursiveQuerySendTimeouts,
prometheus.CounterValue,
data[recursiveSendTimeOuts].FirstValue,
c.perfDataObject[0].RecursiveSendTimeOuts,
)
ch <- prometheus.MustNewConstMetric(
c.queries,
prometheus.CounterValue,
data[tcpQueryReceived].FirstValue,
c.perfDataObject[0].TcpQueryReceived,
"tcp",
)
ch <- prometheus.MustNewConstMetric(
c.queries,
prometheus.CounterValue,
data[udpQueryReceived].FirstValue,
c.perfDataObject[0].UdpQueryReceived,
"udp",
)
ch <- prometheus.MustNewConstMetric(
c.responses,
prometheus.CounterValue,
data[tcpResponseSent].FirstValue,
c.perfDataObject[0].TcpResponseSent,
"tcp",
)
ch <- prometheus.MustNewConstMetric(
c.responses,
prometheus.CounterValue,
data[udpResponseSent].FirstValue,
c.perfDataObject[0].UdpResponseSent,
"udp",
)
ch <- prometheus.MustNewConstMetric(
c.unmatchedResponsesReceived,
prometheus.CounterValue,
data[unmatchedResponsesReceived].FirstValue,
c.perfDataObject[0].UnmatchedResponsesReceived,
)
ch <- prometheus.MustNewConstMetric(
c.winsQueries,
prometheus.CounterValue,
data[winsLookupReceived].FirstValue,
c.perfDataObject[0].WinsLookupReceived,
"forward",
)
ch <- prometheus.MustNewConstMetric(
c.winsQueries,
prometheus.CounterValue,
data[winsReverseLookupReceived].FirstValue,
c.perfDataObject[0].WinsReverseLookupReceived,
"reverse",
)
ch <- prometheus.MustNewConstMetric(
c.winsResponses,
prometheus.CounterValue,
data[winsResponseSent].FirstValue,
c.perfDataObject[0].WinsResponseSent,
"forward",
)
ch <- prometheus.MustNewConstMetric(
c.winsResponses,
prometheus.CounterValue,
data[winsReverseResponseSent].FirstValue,
c.perfDataObject[0].WinsReverseResponseSent,
"reverse",
)
ch <- prometheus.MustNewConstMetric(
c.secureUpdateFailures,
prometheus.CounterValue,
data[secureUpdateFailure].FirstValue,
c.perfDataObject[0].SecureUpdateFailure,
)
ch <- prometheus.MustNewConstMetric(
c.secureUpdateReceived,
prometheus.CounterValue,
data[secureUpdateReceived].FirstValue,
c.perfDataObject[0].SecureUpdateReceived,
)
return nil

View File

@@ -0,0 +1,107 @@
// Copyright 2024 The Prometheus Authors
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//go:build windows
package dns
type perfDataCounterValues struct {
_ float64 `perfdata:"% User Time"`
_ float64 `perfdata:"176"`
_ float64 `perfdata:"Async Fast Reads/sec"`
AxfrRequestReceived float64 `perfdata:"AXFR Request Received"`
AxfrRequestSent float64 `perfdata:"AXFR Request Sent"`
AxfrResponseReceived float64 `perfdata:"AXFR Response Received"`
AxfrSuccessReceived float64 `perfdata:"AXFR Success Received"`
AxfrSuccessSent float64 `perfdata:"AXFR Success Sent"`
CachingMemory float64 `perfdata:"Caching Memory"`
_ float64 `perfdata:"Data Flush Pages/sec"`
_ float64 `perfdata:"Data Flushes/sec"`
DatabaseNodeMemory float64 `perfdata:"Database Node Memory"`
DynamicUpdateNoOperation float64 `perfdata:"Dynamic Update NoOperation"`
_ float64 `perfdata:"Dynamic Update NoOperation/sec"`
DynamicUpdateQueued float64 `perfdata:"Dynamic Update Queued"`
_ float64 `perfdata:"Dynamic Update Received"`
_ float64 `perfdata:"Dynamic Update Received/sec"`
DynamicUpdateRejected float64 `perfdata:"Dynamic Update Rejected"`
DynamicUpdateTimeOuts float64 `perfdata:"Dynamic Update TimeOuts"`
DynamicUpdateWrittenToDatabase float64 `perfdata:"Dynamic Update Written to Database"`
_ float64 `perfdata:"Dynamic Update Written to Database/sec"`
_ float64 `perfdata:"Enumerations Server/sec"`
_ float64 `perfdata:"Fast Read Not Possibles/sec"`
_ float64 `perfdata:"Fast Read Resource Misses/sec"`
IxfrRequestReceived float64 `perfdata:"IXFR Request Received"`
IxfrRequestSent float64 `perfdata:"IXFR Request Sent"`
IxfrResponseReceived float64 `perfdata:"IXFR Response Received"`
_ float64 `perfdata:"IXFR Success Received"`
IxfrSuccessSent float64 `perfdata:"IXFR Success Sent"`
IxfrTCPSuccessReceived float64 `perfdata:"IXFR TCP Success Received"`
IxfrUDPSuccessReceived float64 `perfdata:"IXFR UDP Success Received"`
_ float64 `perfdata:"Lazy Write Flushes/sec"`
_ float64 `perfdata:"Lazy Write Pages/sec"`
_ float64 `perfdata:"Level 2 TLB Fills/sec"`
NbStatMemory float64 `perfdata:"Nbstat Memory"`
NotifyReceived float64 `perfdata:"Notify Received"`
NotifySent float64 `perfdata:"Notify Sent"`
_ float64 `perfdata:"Query Dropped Bad Socket"`
_ float64 `perfdata:"Query Dropped Bad Socket/sec"`
_ float64 `perfdata:"Query Dropped By Policy"`
_ float64 `perfdata:"Query Dropped By Policy/sec"`
_ float64 `perfdata:"Query Dropped By Response Rate Limiting"`
_ float64 `perfdata:"Query Dropped By Response Rate Limiting/sec"`
_ float64 `perfdata:"Query Dropped Send"`
_ float64 `perfdata:"Query Dropped Send/sec"`
_ float64 `perfdata:"Query Dropped Total"`
_ float64 `perfdata:"Query Dropped Total/sec"`
RecordFlowMemory float64 `perfdata:"Record Flow Memory"`
RecursiveQueries float64 `perfdata:"Recursive Queries"`
_ float64 `perfdata:"Recursive Queries/sec"`
RecursiveQueryFailure float64 `perfdata:"Recursive Query Failure"`
_ float64 `perfdata:"Recursive Query Failure/sec"`
_ float64 `perfdata:"Recursive Send TimeOuts"`
RecursiveSendTimeOuts float64 `perfdata:"Recursive TimeOut/sec"`
_ float64 `perfdata:"Responses Suppressed"`
_ float64 `perfdata:"Responses Suppressed/sec"`
SecureUpdateFailure float64 `perfdata:"Secure Update Failure"`
SecureUpdateReceived float64 `perfdata:"Secure Update Received"`
_ float64 `perfdata:"Secure Update Received/sec"`
TcpMessageMemory float64 `perfdata:"TCP Message Memory"`
TcpQueryReceived float64 `perfdata:"TCP Query Received"`
_ float64 `perfdata:"TCP Query Received/sec"`
TcpResponseSent float64 `perfdata:"TCP Response Sent"`
_ float64 `perfdata:"TCP Response Sent/sec"`
_ float64 `perfdata:"Total Query Received"`
_ float64 `perfdata:"Total Query Received/sec"`
_ float64 `perfdata:"Total Remote Inflight Queries"`
_ float64 `perfdata:"Total Response Sent"`
_ float64 `perfdata:"Total Response Sent/sec"`
UdpMessageMemory float64 `perfdata:"UDP Message Memory"`
UdpQueryReceived float64 `perfdata:"UDP Query Received"`
_ float64 `perfdata:"UDP Query Received/sec"`
UdpResponseSent float64 `perfdata:"UDP Response Sent"`
_ float64 `perfdata:"UDP Response Sent/sec"`
UnmatchedResponsesReceived float64 `perfdata:"Unmatched Responses Received"`
_ float64 `perfdata:"Virtual Bytes"`
WinsLookupReceived float64 `perfdata:"WINS Lookup Received"`
_ float64 `perfdata:"WINS Lookup Received/sec"`
WinsResponseSent float64 `perfdata:"WINS Response Sent"`
_ float64 `perfdata:"WINS Response Sent/sec"`
WinsReverseLookupReceived float64 `perfdata:"WINS Reverse Lookup Received"`
_ float64 `perfdata:"WINS Reverse Lookup Received/sec"`
WinsReverseResponseSent float64 `perfdata:"WINS Reverse Response Sent"`
_ float64 `perfdata:"WINS Reverse Response Sent/sec"`
ZoneTransferFailure float64 `perfdata:"Zone Transfer Failure"`
ZoneTransferSOARequestSent float64 `perfdata:"Zone Transfer Request Received"`
_ float64 `perfdata:"Zone Transfer SOA Request Sent"`
_ float64 `perfdata:"Zone Transfer Success"`
}