Description
Component(s)
receiver/windowseventlog
What happened?
Description
When the Windows Event Log Receiver encounters an older style event, it is unable to correctly ingest the event details as the vendor xml template is seemingly missing. This "appears" to be because the source of the event uses some other legacy templating system (DLL) to create the event, and the receiver is setup to expect that a Vendor XML Template will always exist. Assuming the XML lookup is used because it is more efficient than directly rendering, it maybe best to implement a fallback strategy to ensure all data is captured using an alternative rendering API.
Steps to Reproduce
Setup a windows event log receiver and capture the events generated by the following built in Windows commands:
diskpart
chkdsk /c
This has also been observed from events generated by the DHCPServer
service and VSS
, however recreating these conditions is more complicated.
Expected Result
No error should be logged about a missing template as the event is structured correctly in the Windows Event Log viewer.
All fields should be populated the same as the Event Log viewer and per other events extracted via the receiver.
Actual Result
The following error is logged:
2024-09-11T12:01:22.070+1000 error windows/input.go:283 Failed to render formatted event {"kind": "receiver", "name": "windowseventlog/system", "data_type": "logs", "operator_id": "windows_eventlog_input", "operator_type": "windows_eventlog_input", "error": "syscall to 'EvtFormatMessage' failed: The message ID for the desired message could not be found."}
github.com/open-telemetry/opentelemetry-collector-contrib/pkg/stanza/operator/input/windows.(*Input).processEvent
github.com/open-telemetry/opentelemetry-collector-contrib/pkg/[email protected]/operator/input/windows/input.go:283
github.com/open-telemetry/opentelemetry-collector-contrib/pkg/stanza/operator/input/windows.(*Input).read
github.com/open-telemetry/opentelemetry-collector-contrib/pkg/[email protected]/operator/input/windows/input.go:223
github.com/open-telemetry/opentelemetry-collector-contrib/pkg/stanza/operator/input/windows.(*Input).readToEnd
github.com/open-telemetry/opentelemetry-collector-contrib/pkg/[email protected]/operator/input/windows/input.go:198
github.com/open-telemetry/opentelemetry-collector-contrib/pkg/stanza/operator/input/windows.(*Input).readOnInterval
github.com/open-telemetry/opentelemetry-collector-contrib/pkg/[email protected]/operator/input/windows/input.go:186
Fields such as the Message
, Keywords
, Opcode
contain missing or unexpected data.
{
"channel": "System",
"computer": "SVRSYDDHCP01",
"event_data": {
"data": [
{
"": "@2010001"
}
]
},
"event_id": {
"id": 4,
"qualifiers": 16896
},
"execution": {
"process_id": 0,
"thread_id": 0
},
"keywords": [
"0x80000000000000"
],
"level": "4",
"message": "",
"opcode": "0",
"provider": {
"event_source": "",
"guid": "",
"name": "Virtual Disk Service"
},
"record_id": 29962,
"system_time": "2024-09-11T02:01:21.5315561Z",
"task": "0"
}
The Provider
used to contain incomplete data in 0.107 and below, but the recent change to rendering the name using system
properties appears to have addressed this.
#34914
Collector version
v0.109.0
Environment information
Environment
OS: ("Windows 2022")
Compiler(n/a)
OpenTelemetry Collector configuration
receivers:
windowseventlog/application:
channel: Application
poll_interval: 1s
exclude_providers: [VSS]
windowseventlog/system:
channel: System
poll_interval: 1s
windowseventlog/security:
channel: Security
poll_interval: 1s
exclude_providers: [Service Control Manager]
exporters:
debug:
verbosity: detailed
service:
pipelines:
logs:
receivers: [windowseventlog/application, windowseventlog/system, windowseventlog/security]
exporters: [debug]
Log output
No response
Additional context
No response