@@ -6,6 +6,7 @@ package useragent
6
6
import (
7
7
"fmt"
8
8
"os"
9
+ "reflect"
9
10
"sort"
10
11
"strings"
11
12
"sync"
@@ -33,6 +34,9 @@ const (
33
34
flagEnhancedContainerInsights = "enhanced_container_insights"
34
35
flagSELinux = "selinux"
35
36
flagROSA = "rosa"
37
+ flagWindowsEventIDs = "windows_event_ids"
38
+ flagWindowsEventFilters = "windows_event_filters"
39
+ flagWindowsEventLevels = "windows_event_levels"
36
40
separator = " "
37
41
38
42
typeInputs = "inputs"
@@ -74,6 +78,35 @@ var _ UserAgent = (*userAgent)(nil)
74
78
func (ua * userAgent ) SetComponents (otelCfg * otelcol.Config , telegrafCfg * telegraf.Config ) {
75
79
for _ , input := range telegrafCfg .Inputs {
76
80
ua .inputs .Add (input .Config .Name )
81
+
82
+ if input .Config .Name == "windows_event_log" {
83
+ pluginValue := reflect .ValueOf (input .Input )
84
+ if pluginValue .Kind () == reflect .Ptr {
85
+ pluginValue = pluginValue .Elem ()
86
+ }
87
+
88
+ eventsField := pluginValue .FieldByName ("Events" )
89
+ if eventsField .IsValid () && eventsField .Kind () == reflect .Slice {
90
+ for i := 0 ; i < eventsField .Len (); i ++ {
91
+ eventConfig := eventsField .Index (i )
92
+
93
+ // Add event_ids status
94
+ if eventIDsField := eventConfig .FieldByName ("EventIDs" ); eventIDsField .IsValid () && eventIDsField .Len () > 0 {
95
+ ua .inputs .Add (flagWindowsEventIDs )
96
+ }
97
+
98
+ // Add filters status
99
+ if filtersField := eventConfig .FieldByName ("Filters" ); filtersField .IsValid () && filtersField .Len () > 0 {
100
+ ua .inputs .Add (flagWindowsEventFilters )
101
+ }
102
+
103
+ // Add event levesls status
104
+ if levelsField := eventConfig .FieldByName ("Levels" ); levelsField .IsValid () && levelsField .Len () > 0 {
105
+ ua .inputs .Add (flagWindowsEventLevels )
106
+ }
107
+ }
108
+ }
109
+ }
77
110
}
78
111
for _ , output := range telegrafCfg .Outputs {
79
112
ua .outputs .Add (output .Config .Name )
0 commit comments