adfs: Implement PDH collector (#1656)

This commit is contained in:
Jan-Otto Kröpke
2024-09-29 13:25:04 +02:00
committed by GitHub
parent e6aaf91df1
commit 996080c1e9
9 changed files with 577 additions and 183 deletions

View File

@@ -77,19 +77,19 @@ func (c *Collector) Close(_ *slog.Logger) error {
func (c *Collector) Build(_ *slog.Logger, _ *wmi.Client) error {
if utils.PDHEnabled() {
counters := []string{
RequestsPerSecond,
RequestProcessingTime,
RetrievalsPerSecond,
RetrievalProcessingTime,
FailedRequestsPerSecond,
IssuedRequestsPerSecond,
PendingRequestsPerSecond,
RequestCryptographicSigningTime,
RequestPolicyModuleProcessingTime,
ChallengeResponsesPerSecond,
ChallengeResponseProcessingTime,
SignedCertificateTimestampListsPerSecond,
SignedCertificateTimestampListProcessingTime,
requestsPerSecond,
requestProcessingTime,
retrievalsPerSecond,
retrievalProcessingTime,
failedRequestsPerSecond,
issuedRequestsPerSecond,
pendingRequestsPerSecond,
requestCryptographicSigningTime,
requestPolicyModuleProcessingTime,
challengeResponsesPerSecond,
challengeResponseProcessingTime,
signedCertificateTimestampListsPerSecond,
signedCertificateTimestampListProcessingTime,
}
var err error
@@ -317,79 +317,79 @@ func (c *Collector) collectPDH(ch chan<- prometheus.Metric) error {
ch <- prometheus.MustNewConstMetric(
c.requestsPerSecond,
prometheus.CounterValue,
adcsData[RequestsPerSecond].FirstValue,
adcsData[requestsPerSecond].FirstValue,
name,
)
ch <- prometheus.MustNewConstMetric(
c.requestProcessingTime,
prometheus.GaugeValue,
utils.MilliSecToSec(adcsData[RequestProcessingTime].FirstValue),
utils.MilliSecToSec(adcsData[requestProcessingTime].FirstValue),
name,
)
ch <- prometheus.MustNewConstMetric(
c.retrievalsPerSecond,
prometheus.CounterValue,
adcsData[RetrievalsPerSecond].FirstValue,
adcsData[retrievalsPerSecond].FirstValue,
name,
)
ch <- prometheus.MustNewConstMetric(
c.retrievalProcessingTime,
prometheus.GaugeValue,
utils.MilliSecToSec(adcsData[RetrievalProcessingTime].FirstValue),
utils.MilliSecToSec(adcsData[retrievalProcessingTime].FirstValue),
name,
)
ch <- prometheus.MustNewConstMetric(
c.failedRequestsPerSecond,
prometheus.CounterValue,
adcsData[FailedRequestsPerSecond].FirstValue,
adcsData[failedRequestsPerSecond].FirstValue,
name,
)
ch <- prometheus.MustNewConstMetric(
c.issuedRequestsPerSecond,
prometheus.CounterValue,
adcsData[IssuedRequestsPerSecond].FirstValue,
adcsData[issuedRequestsPerSecond].FirstValue,
name,
)
ch <- prometheus.MustNewConstMetric(
c.pendingRequestsPerSecond,
prometheus.CounterValue,
adcsData[PendingRequestsPerSecond].FirstValue,
adcsData[pendingRequestsPerSecond].FirstValue,
name,
)
ch <- prometheus.MustNewConstMetric(
c.requestCryptographicSigningTime,
prometheus.GaugeValue,
utils.MilliSecToSec(adcsData[RequestCryptographicSigningTime].FirstValue),
utils.MilliSecToSec(adcsData[requestCryptographicSigningTime].FirstValue),
name,
)
ch <- prometheus.MustNewConstMetric(
c.requestPolicyModuleProcessingTime,
prometheus.GaugeValue,
utils.MilliSecToSec(adcsData[RequestPolicyModuleProcessingTime].FirstValue),
utils.MilliSecToSec(adcsData[requestPolicyModuleProcessingTime].FirstValue),
name,
)
ch <- prometheus.MustNewConstMetric(
c.challengeResponsesPerSecond,
prometheus.CounterValue,
adcsData[ChallengeResponsesPerSecond].FirstValue,
adcsData[challengeResponsesPerSecond].FirstValue,
name,
)
ch <- prometheus.MustNewConstMetric(
c.challengeResponseProcessingTime,
prometheus.GaugeValue,
utils.MilliSecToSec(adcsData[ChallengeResponseProcessingTime].FirstValue),
utils.MilliSecToSec(adcsData[challengeResponseProcessingTime].FirstValue),
name,
)
ch <- prometheus.MustNewConstMetric(
c.signedCertificateTimestampListsPerSecond,
prometheus.CounterValue,
adcsData[SignedCertificateTimestampListsPerSecond].FirstValue,
adcsData[signedCertificateTimestampListsPerSecond].FirstValue,
name,
)
ch <- prometheus.MustNewConstMetric(
c.signedCertificateTimestampListProcessingTime,
prometheus.GaugeValue,
utils.MilliSecToSec(adcsData[SignedCertificateTimestampListProcessingTime].FirstValue),
utils.MilliSecToSec(adcsData[signedCertificateTimestampListProcessingTime].FirstValue),
name,
)
}

View File

@@ -1,19 +1,19 @@
package adcs
const (
RequestsPerSecond = "Requests/sec"
RequestProcessingTime = "Request processing time (ms)"
RetrievalsPerSecond = "Retrievals/sec"
RetrievalProcessingTime = "Retrieval processing time (ms)"
FailedRequestsPerSecond = "Failed Requests/sec"
IssuedRequestsPerSecond = "Issued Requests/sec"
PendingRequestsPerSecond = "Pending Requests/sec"
RequestCryptographicSigningTime = "Request cryptographic signing time (ms)"
RequestPolicyModuleProcessingTime = "Request policy module processing time (ms)"
ChallengeResponsesPerSecond = "Challenge Responses/sec"
ChallengeResponseProcessingTime = "Challenge Response processing time (ms)"
SignedCertificateTimestampListsPerSecond = "Signed Certificate Timestamp Lists/sec"
SignedCertificateTimestampListProcessingTime = "Signed Certificate Timestamp List processing time (ms)"
challengeResponseProcessingTime = "Challenge Response processing time (ms)"
challengeResponsesPerSecond = "Challenge Responses/sec"
failedRequestsPerSecond = "Failed Requests/sec"
issuedRequestsPerSecond = "Issued Requests/sec"
pendingRequestsPerSecond = "Pending Requests/sec"
requestCryptographicSigningTime = "Request cryptographic signing time (ms)"
requestPolicyModuleProcessingTime = "Request policy module processing time (ms)"
requestProcessingTime = "Request processing time (ms)"
requestsPerSecond = "Requests/sec"
retrievalProcessingTime = "Retrieval processing time (ms)"
retrievalsPerSecond = "Retrievals/sec"
signedCertificateTimestampListProcessingTime = "Signed Certificate Timestamp List processing time (ms)"
signedCertificateTimestampListsPerSecond = "Signed Certificate Timestamp Lists/sec"
)
type perflibADCS struct {