Adding upstream version 1.34.4.
Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
parent
e393c3af3f
commit
4978089aab
4963 changed files with 677545 additions and 0 deletions
78
plugins/inputs/win_wmi/win_wmi.go
Normal file
78
plugins/inputs/win_wmi/win_wmi.go
Normal file
|
@ -0,0 +1,78 @@
|
|||
//go:generate ../../../tools/readme_config_includer/generator
|
||||
//go:build windows
|
||||
|
||||
package win_wmi
|
||||
|
||||
import (
|
||||
_ "embed"
|
||||
"fmt"
|
||||
"sync"
|
||||
|
||||
"github.com/influxdata/telegraf"
|
||||
"github.com/influxdata/telegraf/config"
|
||||
"github.com/influxdata/telegraf/plugins/inputs"
|
||||
)
|
||||
|
||||
//go:embed sample.conf
|
||||
var sampleConfig string
|
||||
|
||||
// S_FALSE is returned by CoInitializeEx if it was already called on this thread.
|
||||
const sFalse = 0x00000001
|
||||
|
||||
type Wmi struct {
|
||||
Host string `toml:"host"`
|
||||
Username config.Secret `toml:"username"`
|
||||
Password config.Secret `toml:"password"`
|
||||
Queries []query `toml:"query"`
|
||||
Methods []method `toml:"method"`
|
||||
Log telegraf.Logger `toml:"-"`
|
||||
}
|
||||
|
||||
func (*Wmi) SampleConfig() string {
|
||||
return sampleConfig
|
||||
}
|
||||
|
||||
func (w *Wmi) Init() error {
|
||||
for i := range w.Queries {
|
||||
q := &w.Queries[i]
|
||||
if err := q.prepare(w.Host, w.Username, w.Password); err != nil {
|
||||
return fmt.Errorf("preparing query %q failed: %w", q.ClassName, err)
|
||||
}
|
||||
}
|
||||
|
||||
for i := range w.Methods {
|
||||
m := &w.Methods[i]
|
||||
if err := m.prepare(w.Host, w.Username, w.Password); err != nil {
|
||||
return fmt.Errorf("preparing method %q failed: %w", m.Method, err)
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (w *Wmi) Gather(acc telegraf.Accumulator) error {
|
||||
var wg sync.WaitGroup
|
||||
for _, q := range w.Queries {
|
||||
wg.Add(1)
|
||||
go func(q query) {
|
||||
defer wg.Done()
|
||||
acc.AddError(q.execute(acc))
|
||||
}(q)
|
||||
}
|
||||
|
||||
for _, m := range w.Methods {
|
||||
wg.Add(1)
|
||||
go func(m method) {
|
||||
defer wg.Done()
|
||||
acc.AddError(m.execute(acc))
|
||||
}(m)
|
||||
}
|
||||
|
||||
wg.Wait()
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func init() {
|
||||
inputs.Add("win_wmi", func() telegraf.Input { return &Wmi{} })
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue