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
25 changes: 25 additions & 0 deletions translator/config/schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -132,6 +132,9 @@
"diskio": {
"$ref": "#/definitions/metricsDefinition/definitions/diskioDefinitions"
},
"efa": {
"$ref": "#/definitions/metricsDefinition/definitions/efaDefinitions"
},
"statsd": {
"$ref": "#/definitions/metricsDefinition/definitions/statsdDefinitions"
},
Expand Down Expand Up @@ -358,6 +361,28 @@
}
]
},
"efaDefinitions": {
"type": "object",
"properties": {
Comment thread
sky333999 marked this conversation as resolved.
"metrics_collection_interval": {
"$ref": "#/definitions/timeIntervalDefinition"
},
"measurement": {
"$ref": "#/definitions/metricsDefinition/definitions/metricsMeasurementDefinition"
},
"drop_original_metrics": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"uniqueItems": true
}
},
"required": [
"measurement"
]
},
"jmxDefinitions": {
"oneOf": [
{
Expand Down
1 change: 1 addition & 0 deletions translator/translate/otel/common/common.go
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,7 @@ const (
Console = "console"
DiskKey = "disk"
DiskIOKey = "diskio"
EfaKey = "efa"
NetKey = "net"
Emf = "emf"
StructuredLog = "structuredlog"
Expand Down
2 changes: 1 addition & 1 deletion translator/translate/otel/common/metrics.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ const (
)

// Map to support dropping metrics without measurement.
var toDropMap = collections.NewSet("collectd", "statsd", "ethtool")
var toDropMap = collections.NewSet("collectd", "statsd", "ethtool", "efa")

func GetRollupDimensions(conf *confmap.Conf) [][]string {
key := ConfigKey(MetricsKey, AggregationDimensionsKey)
Expand Down
9 changes: 9 additions & 0 deletions translator/translate/otel/pipeline/host/translators.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import (
"github.com/aws/amazon-cloudwatch-agent/receiver/adapter"
"github.com/aws/amazon-cloudwatch-agent/translator/translate/otel/common"
adaptertranslator "github.com/aws/amazon-cloudwatch-agent/translator/translate/otel/receiver/adapter"
"github.com/aws/amazon-cloudwatch-agent/translator/translate/otel/receiver/awsefa"
"github.com/aws/amazon-cloudwatch-agent/translator/translate/otel/receiver/awsnvme"
"github.com/aws/amazon-cloudwatch-agent/translator/translate/otel/receiver/otlp"
)
Expand Down Expand Up @@ -50,6 +51,10 @@ func NewTranslators(conf *confmap.Conf, configSection, os string) (common.Transl
deltaReceivers.Set(awsnvme.NewTranslator())
}

if shouldAddEfaReceiver(conf, configSection) {
deltaReceivers.Set(awsefa.NewTranslator())
}

otlpReceivers.Merge(otlp.NewTranslators(conf, common.PipelineNameHostOtlpMetrics, common.ConfigKey(configSection, common.OtlpKey)))

hasHostPipeline := hostReceivers.Len() != 0
Expand Down Expand Up @@ -112,6 +117,10 @@ func NewTranslators(conf *confmap.Conf, configSection, os string) (common.Transl
return translators, nil
}

func shouldAddEfaReceiver(conf *confmap.Conf, configSection string) bool {
return conf.IsSet(common.ConfigKey(configSection, common.EfaKey))
}

func shouldAddNvmeReceiver(conf *confmap.Conf, configSection string) bool {
diskioMap := conf.Get(common.ConfigKey(configSection, common.DiskIOKey))
if diskioMap == nil {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ const (
var (
netKey = common.ConfigKey(common.MetricsKey, common.MetricsCollectedKey, common.NetKey)
diskioKey = common.ConfigKey(common.MetricsKey, common.MetricsCollectedKey, common.DiskIOKey)
efaKey = common.ConfigKey(common.MetricsKey, common.MetricsCollectedKey, common.EfaKey)
otlpKey = common.ConfigKey(common.MetricsKey, common.MetricsCollectedKey, common.OtlpKey)
otlpEmfKey = common.ConfigKey(common.LogsKey, common.MetricsCollectedKey, common.OtlpKey)

Expand All @@ -39,7 +40,7 @@ var (
)

func WithDefaultKeys() common.TranslatorOption {
return WithConfigKeys(diskioKey, netKey, otlpKey, otlpEmfKey)
return WithConfigKeys(diskioKey, netKey, efaKey, otlpKey, otlpEmfKey)
}

func WithConfigKeys(keys ...string) common.TranslatorOption {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ func TestTranslator(t *testing.T) {
},
},
},
wantErr: &common.MissingKeyError{ID: cdpTranslator.ID(), JsonKey: fmt.Sprint(diskioKey, " or ", netKey, " or ", otlpKey, " or ", otlpEmfKey)},
wantErr: &common.MissingKeyError{ID: cdpTranslator.ID(), JsonKey: fmt.Sprint(diskioKey, " or ", netKey, " or ", efaKey, " or ", otlpKey, " or ", otlpEmfKey)},
},
"GenerateDeltaProcessorConfigWithNet": {
input: map[string]any{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ var (

// otelReceivers is used for receivers that need to be in the same pipeline that
// exports to Cloudwatch while not having to follow the adapter rules
otelReceivers = collections.NewSet[string](common.OtlpKey, common.JmxKey, common.PrometheusKey)
otelReceivers = collections.NewSet[string](common.OtlpKey, common.JmxKey, common.PrometheusKey, common.EfaKey)
)

// FindReceiversInConfig looks in the metrics and logs sections to determine which
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{
"agent": {
"metrics_collection_interval": 120
},
"metrics": {
"metrics_collected": {
"efa": {}
Comment thread
sky333999 marked this conversation as resolved.
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
collection_interval: 120s
13 changes: 13 additions & 0 deletions translator/translate/otel/receiver/awsefa/testdata/config.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{
"metrics": {
"metrics_collected": {
"efa": {
"measurement": [
"efa_tx_bytes",
"efa_rx_bytes"
],
"metrics_collection_interval": 30
}
}
}
}
46 changes: 46 additions & 0 deletions translator/translate/otel/receiver/awsefa/testdata/config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
collection_interval: 30s
metrics:
efa_tx_bytes:
enabled: true
efa_rx_bytes:
enabled: true
efa_impaired_remote_conn_events:
enabled: false
efa_rdma_read_bytes:
enabled: false
efa_rdma_read_resp_bytes:
enabled: false
efa_rdma_read_wr_err:
enabled: false
efa_rdma_read_wrs:
enabled: false
efa_rdma_write_bytes:
enabled: false
efa_rdma_write_recv_bytes:
enabled: false
efa_rdma_write_wr_err:
enabled: false
efa_rdma_write_wrs:
enabled: false
efa_recv_bytes:
enabled: false
efa_recv_wrs:
enabled: false
efa_retrans_bytes:
enabled: false
efa_retrans_pkts:
enabled: false
efa_retrans_timeout_events:
enabled: false
efa_rx_dropped:
enabled: false
efa_rx_pkts:
enabled: false
efa_send_bytes:
enabled: false
efa_send_wrs:
enabled: false
efa_tx_pkts:
enabled: false
efa_unresponsive_remote_events:
enabled: false
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"metrics": {
"metrics_collected": {
"efa": {}
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
collection_interval: 60s
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"metrics": {
"metrics_collected": {
"efa": {
"measurement": []
}
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
collection_interval: 60s
metrics:
efa_impaired_remote_conn_events:
enabled: false
efa_rdma_read_bytes:
enabled: false
efa_rdma_read_resp_bytes:
enabled: false
efa_rdma_read_wr_err:
enabled: false
efa_rdma_read_wrs:
enabled: false
efa_rdma_write_bytes:
enabled: false
efa_rdma_write_recv_bytes:
enabled: false
efa_rdma_write_wr_err:
enabled: false
efa_rdma_write_wrs:
enabled: false
efa_recv_bytes:
enabled: false
efa_recv_wrs:
enabled: false
efa_retrans_bytes:
enabled: false
efa_retrans_pkts:
enabled: false
efa_retrans_timeout_events:
enabled: false
efa_rx_bytes:
enabled: false
efa_rx_dropped:
enabled: false
efa_rx_pkts:
enabled: false
efa_send_bytes:
enabled: false
efa_send_wrs:
enabled: false
efa_tx_bytes:
enabled: false
efa_tx_pkts:
enabled: false
efa_unresponsive_remote_events:
enabled: false
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
{
"metrics": {
"metrics_collected": {
"efa": {
"measurement": [
"tx_bytes",
"rx_dropped"
]
}
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
collection_interval: 60s
metrics:
efa_tx_bytes:
enabled: true
efa_rx_dropped:
enabled: true
efa_impaired_remote_conn_events:
enabled: false
efa_rdma_read_bytes:
enabled: false
efa_rdma_read_resp_bytes:
enabled: false
efa_rdma_read_wr_err:
enabled: false
efa_rdma_read_wrs:
enabled: false
efa_rdma_write_bytes:
enabled: false
efa_rdma_write_recv_bytes:
enabled: false
efa_rdma_write_wr_err:
enabled: false
efa_rdma_write_wrs:
enabled: false
efa_recv_bytes:
enabled: false
efa_recv_wrs:
enabled: false
efa_retrans_bytes:
enabled: false
efa_retrans_pkts:
enabled: false
efa_retrans_timeout_events:
enabled: false
efa_rx_bytes:
enabled: false
efa_rx_pkts:
enabled: false
efa_send_bytes:
enabled: false
efa_send_wrs:
enabled: false
efa_tx_pkts:
enabled: false
efa_unresponsive_remote_events:
enabled: false
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
{
"agent": {
"metrics_collection_interval": 120
},
"metrics": {
"metrics_collected": {
"efa": {
"metrics_collection_interval": 15
}
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
collection_interval: 15s
Loading
Loading