Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(metrics): service name change and switching the metrics default to otelcol #2627

Merged
merged 1 commit into from
Nov 24, 2022
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
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
```
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,
),
).
swiatekm marked this conversation as resolved.
Show resolved Hide resolved
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