Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -203,6 +203,7 @@ require (
github.com/open-telemetry/opentelemetry-collector-contrib/receiver/statsdreceiver v0.124.1
github.com/open-telemetry/opentelemetry-collector-contrib/receiver/tcplogreceiver v0.124.1
github.com/open-telemetry/opentelemetry-collector-contrib/receiver/udplogreceiver v0.124.1
github.com/open-telemetry/opentelemetry-collector-contrib/receiver/windowseventlogreceiver v0.124.1
github.com/open-telemetry/opentelemetry-collector-contrib/receiver/zipkinreceiver v0.124.1
github.com/pkg/errors v0.9.1
github.com/prometheus/client_golang v1.22.0
Expand Down
2 changes: 2 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -1387,6 +1387,8 @@ github.com/open-telemetry/opentelemetry-collector-contrib/receiver/tcplogreceive
github.com/open-telemetry/opentelemetry-collector-contrib/receiver/tcplogreceiver v0.124.1/go.mod h1:cVf9mR1NQUOSxKaG68d1f6J1R1gD+es8N4KlfXzMrzY=
github.com/open-telemetry/opentelemetry-collector-contrib/receiver/udplogreceiver v0.124.1 h1:ViSLfZ+rwltr/cJyUzxwH7+Ew/qDs4KyQpMFsDbRd/g=
github.com/open-telemetry/opentelemetry-collector-contrib/receiver/udplogreceiver v0.124.1/go.mod h1:mEiB1YGSaguEyYsq803/QgBiJVofgknWgJ3eqgvlj7I=
github.com/open-telemetry/opentelemetry-collector-contrib/receiver/windowseventlogreceiver v0.124.1 h1:4gVuHekKmzaLU1tZvIAntbkJhpThoCkZEwJCdL7SrOs=
github.com/open-telemetry/opentelemetry-collector-contrib/receiver/windowseventlogreceiver v0.124.1/go.mod h1:BcBDxsZysvBLwjGhjLP62QY9Db6uXqvhSIQJkhVfEz0=
github.com/open-telemetry/opentelemetry-collector-contrib/receiver/zipkinreceiver v0.124.1 h1:XkxqUEoukMWXF+EpEWeM9itXKt62yKi13Lzd8ZEASP4=
github.com/open-telemetry/opentelemetry-collector-contrib/receiver/zipkinreceiver v0.124.1/go.mod h1:CuCZVPz+yn88b5vhZPAlxaMrVuhAVexUV6f8b07lpUc=
github.com/openconfig/gnmi v0.0.0-20180912164834-33a1865c3029 h1:lXQqyLroROhwR2Yq/kXbLzVecgmVeZh2TFLg6OxCd+w=
Expand Down
2 changes: 2 additions & 0 deletions service/defaultcomponents/components.go
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ import (
"github.com/open-telemetry/opentelemetry-collector-contrib/receiver/statsdreceiver"
"github.com/open-telemetry/opentelemetry-collector-contrib/receiver/tcplogreceiver"
"github.com/open-telemetry/opentelemetry-collector-contrib/receiver/udplogreceiver"
"github.com/open-telemetry/opentelemetry-collector-contrib/receiver/windowseventlogreceiver"
"github.com/open-telemetry/opentelemetry-collector-contrib/receiver/zipkinreceiver"
"go.opentelemetry.io/collector/connector"
"go.opentelemetry.io/collector/connector/forwardconnector"
Expand Down Expand Up @@ -123,6 +124,7 @@ func Factories() (otelcol.Factories, error) {
systemmetricsreceiver.NewFactory(),
tcplogreceiver.NewFactory(),
udplogreceiver.NewFactory(),
windowseventlogreceiver.NewFactory(),
zipkinreceiver.NewFactory(),
); err != nil {
return otelcol.Factories{}, err
Expand Down
1 change: 1 addition & 0 deletions service/defaultcomponents/components_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ func TestComponents(t *testing.T) {
"systemmetrics",
"tcplog",
"udplog",
"windowseventlog",
"zipkin",
}
gotReceivers := collections.MapSlice(maps.Keys(factories.Receivers), component.Type.String)
Expand Down
8 changes: 5 additions & 3 deletions tool/downloader/downloader_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@ import (

"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"

"github.com/aws/amazon-cloudwatch-agent/translator/config"
)

func TestRunDownloader_DefaultOtel(t *testing.T) {
Expand All @@ -21,9 +23,9 @@ func TestRunDownloader_DefaultOtel(t *testing.T) {
content, err := os.ReadFile(filepath.Join(outputDir, "default_otel.tmp"))
require.NoError(t, err)

expected, err := os.ReadFile("../../translator/config/defaults/otel.json")
require.NoError(t, err)
assert.JSONEq(t, string(expected), string(content))
expected, ok := config.DefaultJSONConfigFor("otel")
require.True(t, ok)
assert.JSONEq(t, expected, string(content))
}

func TestRunDownloader_DefaultBare(t *testing.T) {
Expand Down
10 changes: 10 additions & 0 deletions translator/cmdutil/translatorutil_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -441,6 +441,16 @@ func TestDefaultOtelConfigSchemaValidation(t *testing.T) {
assert.True(t, result.Valid(), "default otel config must pass schema validation: %v", result.Errors())
}

func TestOpenTelemetryWindowsEventsSchemaValidation(t *testing.T) {
checkIfSchemaValidateAsExpected(t, "../../translator/config/sampleSchema/opentelemetry/validOpenTelemetryWindowsEvents.json", true, map[string]int{})
}

func TestOpenTelemetryWindowsEventsInvalidSchemaValidation(t *testing.T) {
checkIfSchemaValidateAsExpected(t, "../../translator/config/sampleSchema/opentelemetry/invalidOpenTelemetryWindowsEvents.json", false, map[string]int{
"enum": 1,
})
}

func TestCombinedV1V2SchemaValidation(t *testing.T) {
checkIfSchemaValidateAsExpected(t, "../../translator/config/sampleSchema/opentelemetry/validCombinedV1V2Config.json", true, map[string]int{})
}
5 changes: 0 additions & 5 deletions translator/config/defaultConfig.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,6 @@

package config

import _ "embed"

//go:embed defaults/otel.json
var defaultOtelConfig string

var defaultConfigs = map[string]string{
"otel": defaultOtelConfig,
}
Expand Down
6 changes: 1 addition & 5 deletions translator/config/defaultConfig_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
package config

import (
"os"
"testing"

"github.com/stretchr/testify/assert"
Expand All @@ -14,10 +13,7 @@ import (
func TestDefaultJSONConfigFor_Otel(t *testing.T) {
cfg, ok := DefaultJSONConfigFor("otel")
require.True(t, ok)

expected, err := os.ReadFile("defaults/otel.json")
require.NoError(t, err)
assert.JSONEq(t, string(expected), cfg)
assert.JSONEq(t, defaultOtelConfig, cfg)
}

func TestDefaultJSONConfigFor_Unknown(t *testing.T) {
Expand Down
11 changes: 11 additions & 0 deletions translator/config/defaultConfig_unix.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
// SPDX-License-Identifier: MIT

//go:build !windows

package config

import _ "embed"

//go:embed defaults/otel.json
var defaultOtelConfig string
11 changes: 11 additions & 0 deletions translator/config/defaultConfig_windows.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
// SPDX-License-Identifier: MIT

//go:build windows

package config

import _ "embed"

//go:embed defaults/otel_windows.json
var defaultOtelConfig string
24 changes: 24 additions & 0 deletions translator/config/defaults/otel_windows.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
{
"agent": {
"credentials": {
"role_arn": "${CWAGENT_ROLE_ARN}"
}
},
"opentelemetry": {
"collect": {
"otlp": {},
"windows_events": {
"collect_list": [
{
"event_name": "System",
"event_levels": ["ERROR", "WARNING"]
},
{
"event_name": "Application",
"event_levels": ["ERROR", "WARNING"]
}
]
}
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
{
"agent": {
"region": "us-east-1"
},
"opentelemetry": {
"collect": {
"windows_events": {
"collect_list": [
{
"event_name": "System",
"event_format": "invalid_format"
}
]
}
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
{
"agent": {
"region": "us-east-1"
},
"opentelemetry": {
"collect": {
"windows_events": {
"collect_list": [
{
"event_name": "System",
"event_levels": ["ERROR", "WARNING"],
"event_format": "xml",
"log_group_name": "/aws/windows/System"
},
{
"event_name": "Application",
"event_levels": ["INFORMATION"],
"log_group_name": "/aws/windows/Application",
"log_stream_name": "my-stream"
},
{
"event_name": "Security",
"event_ids": [4624, 4625]
}
]
}
}
}
}
62 changes: 62 additions & 0 deletions translator/config/schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -1909,6 +1909,68 @@
}
},
"additionalProperties": false
},
"windows_events": {
"type": "object",
"properties": {
"collect_list": {
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"properties": {
"event_name": {
"description": "The Windows Event Log channel to collect from",
"type": "string",
"minLength": 1,
"maxLength": 255
},
"event_levels": {
"description": "Event severity levels to collect",
"type": "array",
"items": {
"type": "string",
"enum": ["CRITICAL", "ERROR", "WARNING", "INFORMATION", "VERBOSE"]
},
"minItems": 1,
"uniqueItems": true
},
"event_ids": {
"description": "Specific event IDs to collect",
"type": "array",
"items": {
"type": "integer",
"minimum": 0,
"maximum": 65535
},
"minItems": 1,
"uniqueItems": true
},
"event_format": {
"description": "Output format: xml (raw XML) or text (structured)",
"type": "string",
"enum": ["text", "xml"]
},
"log_group_name": {
"description": "CloudWatch Logs group name override",
"type": "string",
"minLength": 1,
"maxLength": 512
},
"log_stream_name": {
"description": "CloudWatch Logs stream name override",
"type": "string",
"minLength": 1,
"maxLength": 512
}
},
"required": ["event_name"],
"additionalProperties": false
}
}
},
"required": ["collect_list"],
"additionalProperties": false
}
},
"additionalProperties": false
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
[agent]
collection_jitter = "0s"
debug = false
flush_interval = "1s"
flush_jitter = "0s"
hostname = ""
interval = "60s"
logfile = "c:\\ProgramData\\Amazon\\AmazonCloudWatchAgent\\Logs\\amazon-cloudwatch-agent.log"
logtarget = "lumberjack"
metric_batch_size = 1000
metric_buffer_limit = 10000
omit_hostname = false
precision = ""
quiet = false
round_interval = false
Loading
Loading