Skip to content

Commit

Permalink
feat(metrics)!: use otel by default
Browse files Browse the repository at this point in the history
  • Loading branch information
swiatekm committed Sep 20, 2023
1 parent d7962f3 commit b5d2d41
Show file tree
Hide file tree
Showing 20 changed files with 118 additions and 91 deletions.
1 change: 1 addition & 0 deletions .changelog/3284.breaking.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
feat(metrics)!: use otel by default
2 changes: 1 addition & 1 deletion deploy/helm/sumologic/Chart.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -35,4 +35,4 @@ dependencies:
- name: opentelemetry-operator
version: 0.35.0
repository: https://open-telemetry.github.io/opentelemetry-helm-charts
condition: opentelemetry-operator.enabled
condition: opentelemetry-operator.enabled,sumologic.metrics.collector.otelcol.enabled
6 changes: 4 additions & 2 deletions deploy/helm/sumologic/README.md

Large diffs are not rendered by default.

9 changes: 5 additions & 4 deletions deploy/helm/sumologic/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -441,9 +441,8 @@ sumologic:
collector:
### Otel metrics collector. Replaces Prometheus.
## To enable, you need opentelemetry-operator enabled as well.
## Stability: Beta.
otelcol:
enabled: false
enabled: true

## Default scrape interval
scrapeInterval: 30s
Expand Down Expand Up @@ -539,7 +538,7 @@ sumologic:
## This is an advanced feature, enable only if you're experiencing performance
## issues with metrics metadata enrichment.
remoteWriteProxy:
enabled: true
enabled: false
config:
## Increase this if you've increased samples_per_send in Prometheus to prevent nginx
## from spilling proxied request bodies to disk
Expand Down Expand Up @@ -946,6 +945,7 @@ kube-prometheus-stack:
enabled: false
defaultDashboardsEnabled: false
prometheusOperator:
enabled: false
## Labels to add to the operator pod
podLabels: {}
## Annotations to add to the operator pod
Expand Down Expand Up @@ -1101,6 +1101,7 @@ kube-prometheus-stack:
regex: (?:node_load1|node_load5|node_load15|node_cpu_seconds_total|node_disk_io_time_weighted_seconds_total|node_disk_io_time_seconds_total|node_vmstat_pgpgin|node_vmstat_pgpgout|node_memory_MemFree_bytes|node_memory_Cached_bytes|node_memory_Buffers_bytes|node_memory_MemTotal_bytes|node_network_receive_drop_total|node_network_transmit_drop_total|node_network_receive_bytes_total|node_network_transmit_bytes_total|node_filesystem_avail_bytes|node_filesystem_size_bytes)
sourceLabels: [__name__]
prometheus:
enabled: false
additionalServiceMonitors: []
prometheusSpec:
## Prometheus default scrape interval, default from upstream Kube Prometheus Stack Helm chart
Expand Down Expand Up @@ -2373,7 +2374,7 @@ tailing-sidecar-operator:
## Configure OpenTelemetry Operator - Instrumentation
## ref: https://github.com/open-telemetry/opentelemetry-helm-charts/tree/main/charts/opentelemetry-operator
opentelemetry-operator:
enabled: false
enabled: true

## Specific for Sumo Logic chart - Instrumentation resource creation
instrumentationJobImage:
Expand Down
2 changes: 2 additions & 0 deletions tests/helm/prometheus_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ func TestServiceMonitors(t *testing.T) {
ValuesYaml: `
kube-prometheus-stack:
prometheus:
enabled: true
additionalServiceMonitors:
- name: collection-sumologic-fluentd-logs-test
additionalLabels:
Expand Down Expand Up @@ -55,6 +56,7 @@ kube-prometheus-stack:
ValuesYaml: `
kube-prometheus-stack:
prometheus:
enabled: true
additionalServiceMonitors:
- name: collection-sumologic-fluentd-logs-test
additionalLabels:
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +0,0 @@
sumologic:
metrics:
enabled: true
collector:
otelcol:
enabled: true
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
sumologic:
metrics:
enabled: true
collector:
otelcol:
enabled: true
scrapeInterval: 60s
autoscaling:
enabled: true
Expand Down
6 changes: 6 additions & 0 deletions tests/helm/utils.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ import (
"github.com/gruntwork-io/go-commons/files"
"github.com/gruntwork-io/terratest/modules/helm"
"github.com/gruntwork-io/terratest/modules/logger"
otoperator "github.com/open-telemetry/opentelemetry-operator/apis/v1alpha1"
prometheus "github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring/v1"
"github.com/stretchr/testify/require"
"gopkg.in/yaml.v3"
Expand Down Expand Up @@ -123,6 +124,11 @@ func UnmarshalMultipleK8sObjectsFromYaml(yamlDocs string) (objects []runtime.Obj
return objects, err
}

err = otoperator.AddToScheme(scheme)
if err != nil {
return objects, err
}

decoder := serializer.NewCodecFactory(scheme).UniversalDeserializer()
multidocReader := utilyaml.NewYAMLReader(bufio.NewReader(bytes.NewReader([]byte(yamlDocs))))

Expand Down
11 changes: 9 additions & 2 deletions tests/integration/helm_ot_default_namespaceoverride_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,14 @@ type ctxKey string

func Test_Helm_Default_OT_NamespaceOverride(t *testing.T) {

expectedMetrics := internal.DefaultExpectedMetrics
expectedMetrics := []string{}
// defaults without otel metrics collector metrics, but with Prometheus metrics
expectedMetricsGroups := make([][]string, len(internal.DefaultExpectedMetricsGroups))
copy(expectedMetricsGroups, internal.DefaultExpectedMetricsGroups)
expectedMetricsGroups = append(expectedMetricsGroups, internal.PrometheusMetrics, internal.DefaultOtelcolMetrics)
for _, metrics := range expectedMetricsGroups {
expectedMetrics = append(expectedMetrics, metrics...)
}
// we have tracing enabled, so check tracing-specific metrics
expectedMetrics = append(expectedMetrics, internal.TracingOtelcolMetrics...)

Expand All @@ -26,7 +33,7 @@ func Test_Helm_Default_OT_NamespaceOverride(t *testing.T) {
CheckOtelcolMetadataLogsInstall,
CheckOtelcolMetadataMetricsInstall,
CheckOtelcolEventsInstall,
CheckPrometheusInstall,
CheckOtelcolMetricsCollectorInstall,
CheckOtelcolLogsCollectorInstall,
CheckTracesInstall,
}
Expand Down
6 changes: 3 additions & 3 deletions tests/integration/helm_ot_default_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,16 +20,16 @@ func Test_Helm_Default_OT(t *testing.T) {
CheckOtelcolMetadataLogsInstall,
CheckOtelcolMetadataMetricsInstall,
CheckOtelcolEventsInstall,
CheckPrometheusInstall,
CheckOtelcolMetricsCollectorInstall,
CheckOtelcolLogsCollectorInstall,
CheckTracesInstall,
}

featInstall := GetInstallFeature(installChecks)

featMetrics := GetMetricsFeature(expectedMetrics, Prometheus)
featMetrics := GetMetricsFeature(expectedMetrics, Otelcol)

featTelegrafMetrics := GetTelegrafMetricsFeature(internal.DefaultExpectedNginxAnnotatedMetrics, Prometheus, true)
featTelegrafMetrics := GetTelegrafMetricsFeature(internal.DefaultExpectedNginxAnnotatedMetrics, Otelcol, true)

featLogs := GetLogsFeature()

Expand Down
28 changes: 0 additions & 28 deletions tests/integration/helm_ot_metrics_test.go

This file was deleted.

8 changes: 5 additions & 3 deletions tests/integration/helm_otc_fips_metadata_installation_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,14 +20,16 @@ func Test_Helm_Default_OT_FIPS(t *testing.T) {
CheckOtelcolMetadataLogsInstall,
CheckOtelcolMetadataMetricsInstall,
CheckOtelcolEventsInstall,
CheckPrometheusInstall,
CheckOtelcolMetricsCollectorInstall,
CheckOtelcolLogsCollectorInstall,
CheckTracesInstall,
}

featInstall := GetInstallFeature(installChecks)

featMetrics := GetMetricsFeature(expectedMetrics, Prometheus)
featMetrics := GetMetricsFeature(expectedMetrics, Otelcol)

featTelegrafMetrics := GetTelegrafMetricsFeature(internal.DefaultExpectedNginxAnnotatedMetrics, Otelcol, true)

featLogs := GetLogsFeature()

Expand All @@ -37,5 +39,5 @@ func Test_Helm_Default_OT_FIPS(t *testing.T) {

featTraces := GetTracesFeature()

testenv.Test(t, featInstall, featMetrics, featLogs, featMultilineLogs, featEvents, featTraces)
testenv.Test(t, featInstall, featMetrics, featTelegrafMetrics, featLogs, featMultilineLogs, featEvents, featTraces)
}
13 changes: 8 additions & 5 deletions tests/integration/helm_otlp_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ import (
)

func Test_Helm_OTLP(t *testing.T) {

expectedMetrics := internal.DefaultExpectedMetrics
// we have tracing enabled, so check tracing-specific metrics
expectedMetrics = append(expectedMetrics, internal.TracingOtelcolMetrics...)
Expand All @@ -27,13 +26,17 @@ func Test_Helm_OTLP(t *testing.T) {

featInstall := GetInstallFeature(installChecks)

featLogs := GetLogsFeature()

featMetrics := GetMetricsFeature(expectedMetrics, Prometheus)

featTraces := GetTracesFeature()
featTelegrafMetrics := GetTelegrafMetricsFeature(internal.DefaultExpectedNginxAnnotatedMetrics, Prometheus, true)

featLogs := GetLogsFeature()

featMultilineLogs := GetMultipleMultilineLogsFeature()

featEvents := GetEventsFeature()

testenv.Test(t, featInstall, featLogs, featMetrics, featEvents, featTraces)
featTraces := GetTracesFeature()

testenv.Test(t, featInstall, featMetrics, featTelegrafMetrics, featLogs, featMultilineLogs, featEvents, featTraces)
}
35 changes: 35 additions & 0 deletions tests/integration/helm_prometheus_metrics_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
//go:build onlylatest
// +build onlylatest

package integration

import (
"testing"

"github.com/SumoLogic/sumologic-kubernetes-collection/tests/integration/internal"
)

func Test_Helm_Prometheus_Metrics(t *testing.T) {
expectedMetrics := []string{}
// defaults without otel metrics collector metrics, but with Prometheus metrics
expectedMetricsGroups := make([][]string, len(internal.DefaultExpectedMetricsGroups))
copy(expectedMetricsGroups, internal.DefaultExpectedMetricsGroups)
expectedMetricsGroups = append(expectedMetricsGroups, internal.PrometheusMetrics, internal.DefaultOtelcolMetrics)
for _, metrics := range expectedMetricsGroups {
expectedMetrics = append(expectedMetrics, metrics...)
}

installChecks := []featureCheck{
CheckSumologicSecret(9),
CheckOtelcolMetadataMetricsInstall,
CheckPrometheusInstall,
}

featInstall := GetInstallFeature(installChecks)

featMetrics := GetMetricsFeature(expectedMetrics, Prometheus)

featTelegrafMetrics := GetTelegrafMetricsFeature(internal.DefaultExpectedNginxAnnotatedMetrics, Prometheus, true)

testenv.Test(t, featInstall, featMetrics, featTelegrafMetrics)
}
3 changes: 1 addition & 2 deletions tests/integration/internal/constants.go
Original file line number Diff line number Diff line change
Expand Up @@ -339,7 +339,6 @@ var (
CoreDNSMetrics,
CAdvisorMetrics,
NodeExporterMetrics,
PrometheusMetrics,
OtherMetrics,
}
DefaultExpectedNginxAnnotatedMetricsGroups = [][]string{
Expand Down Expand Up @@ -372,7 +371,7 @@ func InitializeConstants() error {
}

DefaultExpectedMetrics = []string{}
metricsGroupsWithOtelcol := append(DefaultExpectedMetricsGroups, DefaultOtelcolMetrics, LogsOtelcolMetrics)
metricsGroupsWithOtelcol := append(DefaultExpectedMetricsGroups, DefaultOtelcolMetrics, LogsOtelcolMetrics, MetricsCollectorOtelcolMetrics)
for _, metrics := range metricsGroupsWithOtelcol {
DefaultExpectedMetrics = append(DefaultExpectedMetrics, metrics...)
}
Expand Down
8 changes: 8 additions & 0 deletions tests/integration/values/values_common.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,13 @@ sumologic:
endpoint: http://receiver-mock.receiver-mock:3000/terraform/api/

metrics:
collector:
otelcol:
scrapeInterval: 15s
resources:
requests:
memory: 128Mi
cpu: 50m
remoteWriteProxy:
resources:
requests:
Expand Down Expand Up @@ -132,6 +139,7 @@ otellogs:
name: run-log-journal

telegraf-operator:
enabled: true
resources:
requests:
cpu: 5m
Expand Down
2 changes: 0 additions & 2 deletions tests/integration/values/values_helm_default_ot.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
telegraf-operator:
enabled: true
metadata:
logs:
multiline:
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
# This file uses Prometheus metrics, as the opentelemetry-operator Helm Chart doesn't support namespaceOverride
namespaceOverride: "test-override"

kube-prometheus-stack:
Expand All @@ -8,3 +9,14 @@ kube-prometheus-stack:

prometheus-node-exporter:
namespaceOverride: "test-override"

prometheus:
enabled: true
prometheusOperator:
enabled: true

sumologic:
metrics:
collector:
otelcol:
enabled: false
31 changes: 0 additions & 31 deletions tests/integration/values/values_helm_ot_metrics.yaml

This file was deleted.

18 changes: 18 additions & 0 deletions tests/integration/values/values_helm_prometheus_metrics.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
sumologic:
logs:
enabled: false
traces:
enabled: false
events:
enabled: false
metrics:
enabled: true
collector:
otelcol:
enabled: false

kube-prometheus-stack:
prometheus:
enabled: true
prometheusOperator:
enabled: true

0 comments on commit b5d2d41

Please sign in to comment.