Skip to content

Commit

Permalink
feat(metrics): service name change and switching the metrics default …
Browse files Browse the repository at this point in the history
…to otelcol
  • Loading branch information
rnishtala-sumo authored and Mikołaj Świątek committed Nov 24, 2022
1 parent f10023a commit 60238b0
Show file tree
Hide file tree
Showing 13 changed files with 77 additions and 126 deletions.
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- fix(logs): configure fluentbit to send data to metadata-logs [#2610]
- feat(logs): Changing the default logs metadata provider to otel [#2621]
- chore!: remove replacing values in configuration marked by 'replace' suffix [#2615]
- feat(metrics): service name change and switching the metrics provider default to otelcol [#2627]

### Changed

Expand Down Expand Up @@ -77,6 +78,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
[#2621]: https://github.com/SumoLogic/sumologic-kubernetes-collection/pull/2621
[#2615]: https://github.com/SumoLogic/sumologic-kubernetes-collection/pull/2615
[#2628]: https://github.com/SumoLogic/sumologic-kubernetes-collection/pull/2628
[#2627]: https://github.com/SumoLogic/sumologic-kubernetes-collection/pull/2627
[Unreleased]: https://github.com/SumoLogic/sumologic-kubernetes-collection/compare/v2.17.0...main
[telegraf_operator_comapare_1.3.5_and_1.3.10]: https://github.com/influxdata/helm-charts/compare/telegraf-operator-1.3.5...telegraf-operator-1.3.10
[cert-manager-1.4]: https://github.com/cert-manager/cert-manager/releases/tag/v1.4.0
Expand Down
6 changes: 3 additions & 3 deletions deploy/helm/sumologic/templates/_helpers.tpl
Original file line number Diff line number Diff line change
Expand Up @@ -424,7 +424,7 @@ helm.sh/hook-delete-policy: before-hook-creation,hook-succeeded
{{- end -}}

{{- define "sumologic.metadata.name.logs.service-headless" -}}
{{ template "sumologic.metadata.name.logs.service" . }}-headless
{{ template "sumologic.metadata.name.logs" . }}-headless
{{- end -}}

{{- define "sumologic.metadata.name.logs.configmap" -}}
Expand Down Expand Up @@ -460,11 +460,11 @@ helm.sh/hook-delete-policy: before-hook-creation,hook-succeeded
{{- end -}}

{{- define "sumologic.metadata.name.metrics.service" -}}
{{ template "sumologic.metadata.name.fluentd" . }}-metrics
{{ template "sumologic.fullname" . }}-metadata-metrics
{{- end -}}

{{- define "sumologic.metadata.name.metrics.service-headless" -}}
{{ template "sumologic.metadata.name.metrics.service" . }}-headless
{{ template "sumologic.metadata.name.metrics" . }}-headless
{{- end -}}

{{- define "sumologic.metadata.name.metrics.configmap" -}}
Expand Down
4 changes: 2 additions & 2 deletions deploy/helm/sumologic/templates/chart-configmap.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,5 @@ metadata:
name: sumologic-configmap
data:
metadataLogs: {{ template "sumologic.metadata.name.logs.service" . }}
fluentdMetrics: {{ template "sumologic.metrics.metadata.endpoint" . }}
fluentdNamespace: {{ .Release.Namespace }}
metadataMetrics: {{ template "sumologic.metrics.metadata.endpoint" . }}
metadataNamespace: {{ .Release.Namespace }}
82 changes: 41 additions & 41 deletions deploy/helm/sumologic/values.yaml

Large diffs are not rendered by default.

13 changes: 12 additions & 1 deletion docs/v3-migration-doc.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,8 @@ In this document we detail the changes as well as the exact steps for migration.

1. Perform required manual steps:
- [Upgrade kube-prometheus-stack](#upgrade-kube-prometheus-stack)
2. Delete the following StatefulSets (otelcol):
- [Otelcol StatefulSets](#otelcol-statefulsets)

#### Upgrade kube-prometheus-stack

Expand Down Expand Up @@ -96,4 +98,13 @@ Mechanism to replace special configuration values for traces marked by 'replace'
- `exporters.sumologic.source_name.replace`
- `exporters.sumologic.source_category.replace`

Above special configuration values can be replaced either to direct values or be set as reference to other parameters form `values.yaml`.
Above special configuration values can be replaced either to direct values or be set as reference to other parameters form `values.yaml`.

#### Otelcol StatefulSets

If you're using `otelcol` as the logs/metrics metadata provider, please run one or both of the following commands to manually delete StatefulSets in helm chart v2 before upgrade:

```
kubectl delete sts --namespace=my-namespace --cascade=false my-release-sumologic-otelcol-logs
kubectl delete sts --namespace=my-namespace --cascade=false my-release-sumologic-otelcol-metrics
```
2 changes: 1 addition & 1 deletion tests/helm/events_otc_statefulset/static/basic.output.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ spec:
operator: In
values:
- RELEASE-NAME-sumologic-otelcol-logs
- RELEASE-NAME-sumologic-fluentd-metrics
- RELEASE-NAME-sumologic-otelcol-metrics
- key: app
operator: In
values:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ spec:
selector:
matchLabels:
app: RELEASE-NAME-sumologic-otelcol-logs
serviceName: RELEASE-NAME-sumologic-metadata-logs-headless
serviceName: RELEASE-NAME-sumologic-otelcol-logs-headless
podManagementPolicy: "Parallel"
replicas: 4
template:
Expand Down Expand Up @@ -45,7 +45,7 @@ spec:
operator: In
values:
- RELEASE-NAME-sumologic-otelcol-logs
- RELEASE-NAME-sumologic-fluentd-metrics
- RELEASE-NAME-sumologic-otelcol-metrics
- key: app
operator: In
values:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ spec:
selector:
matchLabels:
app: RELEASE-NAME-sumologic-otelcol-metrics
serviceName: RELEASE-NAME-sumologic-fluentd-metrics-headless
serviceName: RELEASE-NAME-sumologic-otelcol-metrics-headless
podManagementPolicy: "Parallel"
replicas: 4
template:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ kind: ConfigMap
metadata:
name: RELEASE-NAME-sumologic-otelcol
labels:
app: RELEASE-NAME-sumologic-fluentd-metrics
app: RELEASE-NAME-sumologic-otelcol-metrics
chart: "sumologic-%CURRENT_CHART_VERSION%"
release: "RELEASE-NAME"
heritage: "Helm"
Expand Down
2 changes: 1 addition & 1 deletion tests/helm/tracing-otelcol/static/simple.output.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ kind: ConfigMap
metadata:
name: RELEASE-NAME-sumologic-otelcol
labels:
app: RELEASE-NAME-sumologic-fluentd-metrics
app: RELEASE-NAME-sumologic-otelcol-metrics
chart: "sumologic-%CURRENT_CHART_VERSION%"
release: "RELEASE-NAME"
heritage: "Helm"
Expand Down
74 changes: 6 additions & 68 deletions tests/integration/helm_traces_enabled_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -80,22 +80,22 @@ func Test_Helm_Traces_Enabled(t *testing.T) {
}, waitDuration, tickDuration)
return ctx
}).
Assess("fluentd metrics statefulset is ready",
Assess("otelcol metrics statefulset is ready",
stepfuncs.WaitUntilStatefulSetIsReady(
waitDuration,
tickDuration,
stepfuncs.WithNameF(
stepfuncs.ReleaseFormatter("%s-sumologic-fluentd-metrics"),
stepfuncs.ReleaseFormatter("%s-sumologic-otelcol-metrics"),
),
stepfuncs.WithLabelsF(
stepfuncs.LabelFormatterKV{
K: "app",
V: stepfuncs.ReleaseFormatter("%s-sumologic-fluentd-metrics"),
V: stepfuncs.ReleaseFormatter("%s-sumologic-otelcol-metrics"),
},
),
),
).
Assess("fluentd metrics buffers PVCs are created",
Assess("otelcol metrics buffers PVCs are created",
func(ctx context.Context, t *testing.T, envConf *envconf.Config) context.Context {
namespace := ctxopts.Namespace(ctx)
releaseName := ctxopts.HelmRelease(ctx)
Expand All @@ -108,76 +108,14 @@ func Test_Helm_Traces_Enabled(t *testing.T) {
assert.Eventually(t, func() bool {
pvcs, err := cl.CoreV1().PersistentVolumeClaims(namespace).
List(ctx, metav1.ListOptions{
LabelSelector: fmt.Sprintf("app=%s-sumologic-fluentd-metrics", releaseName),
LabelSelector: fmt.Sprintf("app=%s-sumologic-otelcol-metrics", releaseName),
})
if !assert.NoError(t, err) {
return false
}

return err == nil && len(pvcs.Items) == 1
}, waitDuration, tickDuration)
return ctx
}).
Assess("fluentd events statefulset is ready",
stepfuncs.WaitUntilStatefulSetIsReady(
waitDuration,
tickDuration,
stepfuncs.WithNameF(
stepfuncs.ReleaseFormatter("%s-sumologic-fluentd-events"),
),
stepfuncs.WithLabelsF(
stepfuncs.LabelFormatterKV{
K: "app",
V: stepfuncs.ReleaseFormatter("%s-sumologic-fluentd-events"),
},
),
),
).
Assess("fluentd events buffers PVCs are created",
func(ctx context.Context, t *testing.T, envConf *envconf.Config) context.Context {
namespace := ctxopts.Namespace(ctx)
releaseName := ctxopts.HelmRelease(ctx)
kubectlOptions := ctxopts.KubectlOptions(ctx)

t.Logf("kubeconfig: %s", kubectlOptions.ConfigPath)
cl, err := terrak8s.GetKubernetesClientFromOptionsE(t, kubectlOptions)
require.NoError(t, err)

assert.Eventually(t, func() bool {
pvcs, err := cl.CoreV1().PersistentVolumeClaims(namespace).
List(ctx, metav1.ListOptions{
LabelSelector: fmt.Sprintf("app=%s-sumologic-fluentd-events", releaseName),
})
if !assert.NoError(t, err) {
return false
}

return err == nil && len(pvcs.Items) == 1
}, waitDuration, tickDuration)
return ctx
}).
Assess("prometheus pods are available",
stepfuncs.WaitUntilPodsAvailable(
metav1.ListOptions{
LabelSelector: "app.kubernetes.io/name=prometheus",
},
1,
waitDuration,
tickDuration,
),
).
Assess("fluent-bit daemonset is running",
func(ctx context.Context, t *testing.T, envConf *envconf.Config) context.Context {
var daemonsets []appsv1.DaemonSet
require.Eventually(t, func() bool {
daemonsets = terrak8s.ListDaemonSets(t, ctxopts.KubectlOptions(ctx), metav1.ListOptions{
LabelSelector: "app.kubernetes.io/name=fluent-bit",
})

return len(daemonsets) == 1
return err == nil && len(pvcs.Items) == 3
}, waitDuration, tickDuration)

require.EqualValues(t, 0, daemonsets[0].Status.NumberUnavailable)
return ctx
}).
// TODO: Rewrite into similar step func as WaitUntilStatefulSetIsReady but for deployments
Expand Down
3 changes: 3 additions & 0 deletions tests/integration/values/values_helm_fluentd_metadata.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@ sumologic:
logs:
metadata:
provider: fluentd
metrics:
metadata:
provider: fluentd
# Prevent snowball effect by filtering out receiver mock logs
fluent-bit:
config:
Expand Down
7 changes: 2 additions & 5 deletions tests/integration/values/values_helm_traces_enabled.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,17 +10,14 @@ fluent-bit:
Name grep
Match containers.var.log.containers.receiver-mock*
Exclude log .*
# Request less resources so that this fits on Github actions runners environment
fluentd:
otelcol:
logs:
statefulset:
replicaCount: 1
metrics:
statefulset:
replicaCount: 1

otelcol:
config:
# Default otlp pipeline from values.yaml is used.
exporters:
Expand Down

0 comments on commit 60238b0

Please sign in to comment.