mirror of
https://github.com/prometheus-community/windows_exporter.git
synced 2026-02-26 14:46:35 +00:00
scheduled_task: do not report windows_scheduled_task_last_result for task that never run before (#1562)
This commit is contained in:
@@ -51,7 +51,11 @@ const (
|
|||||||
TASK_STATE_QUEUED
|
TASK_STATE_QUEUED
|
||||||
TASK_STATE_READY
|
TASK_STATE_READY
|
||||||
TASK_STATE_RUNNING
|
TASK_STATE_RUNNING
|
||||||
TASK_RESULT_SUCCESS TaskResult = 0x0
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
SCHED_S_SUCCESS TaskResult = 0x0
|
||||||
|
SCHED_S_TASK_HAS_NOT_RUN TaskResult = 0x00041303
|
||||||
)
|
)
|
||||||
|
|
||||||
type ScheduledTask struct {
|
type ScheduledTask struct {
|
||||||
@@ -102,19 +106,19 @@ func NewWithFlags(app *kingpin.Application) *Collector {
|
|||||||
app.Flag(
|
app.Flag(
|
||||||
"collector.scheduled_task.include",
|
"collector.scheduled_task.include",
|
||||||
"Regexp of tasks to include. Task path must both match include and not match exclude to be included.",
|
"Regexp of tasks to include. Task path must both match include and not match exclude to be included.",
|
||||||
).Default(c.config.TaskExclude.String()).StringVar(&taskInclude)
|
).Default(c.config.TaskInclude.String()).StringVar(&taskInclude)
|
||||||
|
|
||||||
app.Action(func(*kingpin.ParseContext) error {
|
app.Action(func(*kingpin.ParseContext) error {
|
||||||
var err error
|
var err error
|
||||||
|
|
||||||
c.config.TaskExclude, err = regexp.Compile(fmt.Sprintf("^(?:%s)$", taskExclude))
|
c.config.TaskExclude, err = regexp.Compile(fmt.Sprintf("^(?:%s)$", taskExclude))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("collector.physical_disk.disk-exclude: %w", err)
|
return fmt.Errorf("collector.scheduled_task.exclude: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
c.config.TaskInclude, err = regexp.Compile(fmt.Sprintf("^(?:%s)$", taskInclude))
|
c.config.TaskInclude, err = regexp.Compile(fmt.Sprintf("^(?:%s)$", taskInclude))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("collector.physical_disk.disk-include: %w", err)
|
return fmt.Errorf("collector.scheduled_task.include: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
@@ -187,8 +191,28 @@ func (c *Collector) collect(ch chan<- prometheus.Metric) error {
|
|||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for _, state := range TASK_STATES {
|
||||||
|
var stateValue float64
|
||||||
|
|
||||||
|
if strings.ToLower(task.State.String()) == state {
|
||||||
|
stateValue = 1.0
|
||||||
|
}
|
||||||
|
|
||||||
|
ch <- prometheus.MustNewConstMetric(
|
||||||
|
c.state,
|
||||||
|
prometheus.GaugeValue,
|
||||||
|
stateValue,
|
||||||
|
task.Path,
|
||||||
|
state,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
if task.LastTaskResult == SCHED_S_TASK_HAS_NOT_RUN {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
lastResult := 0.0
|
lastResult := 0.0
|
||||||
if task.LastTaskResult == TASK_RESULT_SUCCESS {
|
if task.LastTaskResult == SCHED_S_SUCCESS {
|
||||||
lastResult = 1.0
|
lastResult = 1.0
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -205,22 +229,6 @@ func (c *Collector) collect(ch chan<- prometheus.Metric) error {
|
|||||||
task.MissedRunsCount,
|
task.MissedRunsCount,
|
||||||
task.Path,
|
task.Path,
|
||||||
)
|
)
|
||||||
|
|
||||||
for _, state := range TASK_STATES {
|
|
||||||
var stateValue float64
|
|
||||||
|
|
||||||
if strings.ToLower(task.State.String()) == state {
|
|
||||||
stateValue = 1.0
|
|
||||||
}
|
|
||||||
|
|
||||||
ch <- prometheus.MustNewConstMetric(
|
|
||||||
c.state,
|
|
||||||
prometheus.GaugeValue,
|
|
||||||
stateValue,
|
|
||||||
task.Path,
|
|
||||||
state,
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
|
|||||||
@@ -4,5 +4,5 @@ import "regexp"
|
|||||||
|
|
||||||
var (
|
var (
|
||||||
RegExpAny = regexp.MustCompile(".+")
|
RegExpAny = regexp.MustCompile(".+")
|
||||||
RegExpEmpty = regexp.MustCompile("^$")
|
RegExpEmpty = regexp.MustCompile("")
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -43,6 +43,7 @@ windows_exporter_collector_success{collector="logical_disk"} 1
|
|||||||
windows_exporter_collector_success{collector="physical_disk"} 1
|
windows_exporter_collector_success{collector="physical_disk"} 1
|
||||||
windows_exporter_collector_success{collector="net"} 1
|
windows_exporter_collector_success{collector="net"} 1
|
||||||
windows_exporter_collector_success{collector="os"} 1
|
windows_exporter_collector_success{collector="os"} 1
|
||||||
|
windows_exporter_collector_success{collector="scheduled_task"} 1
|
||||||
windows_exporter_collector_success{collector="service"} 1
|
windows_exporter_collector_success{collector="service"} 1
|
||||||
windows_exporter_collector_success{collector="system"} 1
|
windows_exporter_collector_success{collector="system"} 1
|
||||||
windows_exporter_collector_success{collector="textfile"} 1
|
windows_exporter_collector_success{collector="textfile"} 1
|
||||||
@@ -54,6 +55,7 @@ windows_exporter_collector_timeout{collector="logical_disk"} 0
|
|||||||
windows_exporter_collector_timeout{collector="physical_disk"} 0
|
windows_exporter_collector_timeout{collector="physical_disk"} 0
|
||||||
windows_exporter_collector_timeout{collector="net"} 0
|
windows_exporter_collector_timeout{collector="net"} 0
|
||||||
windows_exporter_collector_timeout{collector="os"} 0
|
windows_exporter_collector_timeout{collector="os"} 0
|
||||||
|
windows_exporter_collector_timeout{collector="scheduled_task"} 0
|
||||||
windows_exporter_collector_timeout{collector="service"} 0
|
windows_exporter_collector_timeout{collector="service"} 0
|
||||||
windows_exporter_collector_timeout{collector="system"} 0
|
windows_exporter_collector_timeout{collector="system"} 0
|
||||||
windows_exporter_collector_timeout{collector="textfile"} 0
|
windows_exporter_collector_timeout{collector="textfile"} 0
|
||||||
@@ -169,6 +171,13 @@ windows_exporter_collector_timeout{collector="textfile"} 0
|
|||||||
# TYPE windows_os_virtual_memory_free_bytes gauge
|
# TYPE windows_os_virtual_memory_free_bytes gauge
|
||||||
# HELP windows_os_visible_memory_bytes OperatingSystem.TotalVisibleMemorySize
|
# HELP windows_os_visible_memory_bytes OperatingSystem.TotalVisibleMemorySize
|
||||||
# TYPE windows_os_visible_memory_bytes gauge
|
# TYPE windows_os_visible_memory_bytes gauge
|
||||||
|
# HELP windows_scheduled_task_state The current state of a scheduled task
|
||||||
|
# TYPE windows_scheduled_task_state gauge
|
||||||
|
windows_scheduled_task_state{state="disabled",task="/Microsoft/Windows/Maintenance/WinSAT"} 1
|
||||||
|
windows_scheduled_task_state{state="queued",task="/Microsoft/Windows/Maintenance/WinSAT"} 0
|
||||||
|
windows_scheduled_task_state{state="ready",task="/Microsoft/Windows/Maintenance/WinSAT"} 0
|
||||||
|
windows_scheduled_task_state{state="running",task="/Microsoft/Windows/Maintenance/WinSAT"} 0
|
||||||
|
windows_scheduled_task_state{state="unknown",task="/Microsoft/Windows/Maintenance/WinSAT"} 0
|
||||||
# HELP windows_service_info A metric with a constant '1' value labeled with service information
|
# HELP windows_service_info A metric with a constant '1' value labeled with service information
|
||||||
# TYPE windows_service_info gauge
|
# TYPE windows_service_info gauge
|
||||||
# HELP windows_service_start_mode The start mode of the service (StartMode)
|
# HELP windows_service_start_mode The start mode of the service (StartMode)
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ $skip_re = "^(go_|windows_exporter_build_info|windows_exporter_collector_duratio
|
|||||||
$exporter_proc = Start-Process `
|
$exporter_proc = Start-Process `
|
||||||
-PassThru `
|
-PassThru `
|
||||||
-FilePath ..\windows_exporter.exe `
|
-FilePath ..\windows_exporter.exe `
|
||||||
-ArgumentList "--log.level=debug --web.disable-exporter-metrics --collectors.enabled=[defaults],textfile --collector.textfile.directories=$($textfile_dir)" `
|
-ArgumentList "--log.level=debug --web.disable-exporter-metrics --collectors.enabled=[defaults],textfile,scheduled_task --collector.scheduled_task.include=.*WinSAT --collector.textfile.directories=$($textfile_dir)" `
|
||||||
-WindowStyle Hidden `
|
-WindowStyle Hidden `
|
||||||
-RedirectStandardOutput "$($temp_dir)/windows_exporter.log" `
|
-RedirectStandardOutput "$($temp_dir)/windows_exporter.log" `
|
||||||
-RedirectStandardError "$($temp_dir)/windows_exporter_error.log"
|
-RedirectStandardError "$($temp_dir)/windows_exporter_error.log"
|
||||||
@@ -36,7 +36,7 @@ for ($i=1; $i -le 5; $i++) {
|
|||||||
|
|
||||||
$netstat_output = netstat -anp tcp | Select-String 'listening'
|
$netstat_output = netstat -anp tcp | Select-String 'listening'
|
||||||
if ($netstat_output -like '*:9182*') {
|
if ($netstat_output -like '*:9182*') {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
Write-Host "Waiting for exporter to start"
|
Write-Host "Waiting for exporter to start"
|
||||||
}
|
}
|
||||||
@@ -64,5 +64,6 @@ if (-not ($null -eq $output_diff)) {
|
|||||||
Get-Content "$($temp_dir)/windows_exporter.log"
|
Get-Content "$($temp_dir)/windows_exporter.log"
|
||||||
Write-Host "STDERR"
|
Write-Host "STDERR"
|
||||||
Get-Content "$($temp_dir)/windows_exporter_error.log"
|
Get-Content "$($temp_dir)/windows_exporter_error.log"
|
||||||
|
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user