Skip to content

Commit

Permalink
fix(metrics): use sumologic.metrics.excludeNamespaceRegex instead o…
Browse files Browse the repository at this point in the history
…f `sumologic.logs.container.excludeNamespaceRegex`
  • Loading branch information
andrzej-stencel committed Dec 6, 2023
1 parent c1964af commit 2d11eff
Show file tree
Hide file tree
Showing 9 changed files with 458 additions and 1 deletion.
1 change: 1 addition & 0 deletions .changelog/3428.fixed.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
fix(metrics): use `sumologic.metrics.excludeNamespaceRegex` instead of `sumologic.logs.container.excludeNamespaceRegex`
1 change: 1 addition & 0 deletions deploy/helm/sumologic/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,7 @@ The following table lists the configurable parameters of the Sumo Logic chart an
| `sumologic.logs.additionalFields` | Additional Fields to be created in Sumo Logic. [Sumo Logic help](https://help.sumologic.com/docs/manage/fields/#manage-fields) | `[]` |
| `sumologic.logs.sourceType` | The type of the Sumo Logic source being used for logs ingestion. Can be `http` for [HTTP Source](https://help.sumologic.com/docs/send-data/hosted-collectors/http-source/logs-metrics/) or `otlp` for [OTLP/HTTP Source](https://help.sumologic.com/docs/send-data/hosted-collectors/http-source/otlp/). | `otlp` |
| `sumologic.metrics.enabled` | Set the enabled flag to false for disabling metrics ingestion altogether. | `true` |
| `sumologic.metrics.excludeNamespaceRegex` | A regular expression for Kubernetes namespace names. Metrics matching this namespace will not be sent to Sumo. | `""` |
| `sumologic.metrics.otelcol.extraProcessors` | Extra processors configuration for metrics pipeline. See [/docs/collecting-application-metrics.md#metrics-modifications](/docs/collecting-application-metrics.md#metrics-modifications) for more information. | `[]` |
| `sumologic.metrics.remoteWriteProxy.enabled` | Enable a load balancing proxy for Prometheus remote writes. [See docs for more information.](/docs/prometheus.md#using-a-load-balancing-proxy-for-prometheus-remote-write) | `false` |
| `sumologic.metrics.remoteWriteProxy.config.clientBodyBufferSize` | See the [nginx documentation](http://nginx.org/en/docs/http/ngx_http_core_module.html#client_body_buffer_size). Increase if you've also increased samples per send in Prometheus remote write. | `64k` |
Expand Down
2 changes: 1 addition & 1 deletion deploy/helm/sumologic/conf/metrics/otelcol/processors.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -175,7 +175,7 @@ routing:
source:
collector: {{ .Values.sumologic.collectorName | default .Values.sumologic.clusterName | quote }}
exclude:
k8s.namespace.name: {{ include "logs.excludeNamespaces" . }}
k8s.namespace.name: {{ include "metrics.excludeNamespaces" . }}

## The Sumo Logic Schema processor modifies the metadata on logs, metrics and traces sent to Sumo Logic
## so that the Sumo Logic apps can make full use of the ingested data.
Expand Down
19 changes: 19 additions & 0 deletions deploy/helm/sumologic/templates/_helpers/_metrics.tpl
Original file line number Diff line number Diff line change
Expand Up @@ -309,3 +309,22 @@ Example Usage:
{{- define "metrics.collector.autoscaling.enabled" -}}
{{- template "is.autoscaling.enabled" (dict "autoscalingEnabled" .Values.sumologic.metrics.collector.otelcol.autoscaling.enabled "Values" .Values) -}}
{{- end -}}

{{/*
Returns list of namespaces to exclude
Example:
{{ include "metrics.excludeNamespaces" . }}
*/}}
{{- define "metrics.excludeNamespaces" -}}
{{- $excludeNamespaceRegex := .Values.sumologic.metrics.excludeNamespaceRegex | quote -}}
{{- if eq .Values.sumologic.collectionMonitoring false -}}
{{- if .Values.sumologic.metrics.excludeNamespaceRegex -}}
{{- $excludeNamespaceRegex = printf "%s|%s" ( include "sumologic.namespace" . ) .Values.sumologic.metrics.excludeNamespaceRegex | quote -}}
{{- else -}}
{{- $excludeNamespaceRegex = printf "%s" ( include "sumologic.namespace" . ) | quote -}}
{{- end -}}
{{- end -}}
{{ print $excludeNamespaceRegex }}
{{- end -}}
4 changes: 4 additions & 0 deletions deploy/helm/sumologic/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -552,6 +552,10 @@ sumologic:
## - kubelet_runtime_operations_duration_seconds
dropHistogramBuckets: true

## A regular expression for namespaces.
## Metrics that match these namespaces will be excluded from Sumo.
excludeNamespaceRegex: ""

otelcol:
## Includes additional processors into pipelines.
## It can be used for filtering metrics, renaming, changing metadata and so on.
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
sumologic:
collectionMonitoring: false
metrics:
excludeNamespaceRegex: my_metrics_excludeNamespaceRegex
Original file line number Diff line number Diff line change
@@ -0,0 +1,201 @@
---
# Source: sumologic/templates/metrics/otelcol/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: RELEASE-NAME-sumologic-otelcol-metrics
namespace: sumologic
labels:
app: RELEASE-NAME-sumologic-otelcol-metrics
chart: "sumologic-%CURRENT_CHART_VERSION%"
release: "RELEASE-NAME"
heritage: "Helm"
data:
config.yaml: |
exporters:
sumologic/default:
decompose_otlp_histograms: true
endpoint: ${SUMO_ENDPOINT_DEFAULT_OTLP_METRICS_SOURCE}
max_request_body_size: 16777216
metric_format: otlp
sending_queue:
enabled: true
num_consumers: 10
queue_size: 10000
storage: file_storage
timeout: 30s
extensions:
file_storage:
compaction:
directory: /tmp
on_rebound: true
directory: /var/lib/storage/otc
timeout: 10s
health_check: {}
pprof: {}
processors:
batch:
send_batch_max_size: 2048
send_batch_size: 1024
timeout: 1s
filter/drop_unnecessary_metrics:
error_mode: ignore
metrics:
metric:
- resource.attributes["job"] != "pod-annotations" and IsMatch(name, "scrape_.*")
- IsMatch(name, "^(apiserver_request_duration_seconds|coredns_dns_request_duration_seconds|kubelet_runtime_operations_duration_seconds)$")
groupbyattrs:
keys:
- container
- namespace
- pod
- service
groupbyattrs/group_by_name:
keys:
- __name__
- job
k8s_tagger:
extract:
delimiter: _
labels:
- key: '*'
tag_name: pod_labels_%s
metadata:
- daemonSetName
- deploymentName
- nodeName
- replicaSetName
- serviceName
- statefulSetName
owner_lookup_enabled: true
passthrough: false
pod_association:
- from: build_hostname
memory_limiter:
check_interval: 5s
limit_percentage: 75
spike_limit_percentage: 20
metricstransform:
transforms:
action: update
include: ^prometheus_remote_write_(.*)$$
match_type: regexp
new_name: $$1
resource:
attributes:
- action: upsert
from_attribute: namespace
key: k8s.namespace.name
- action: delete
key: namespace
- action: upsert
from_attribute: pod
key: k8s.pod.name
- action: delete
key: pod
- action: upsert
from_attribute: container
key: k8s.container.name
- action: delete
key: container
- action: upsert
from_attribute: node
key: k8s.node.name
- action: delete
key: node
- action: upsert
from_attribute: service
key: prometheus_service
- action: delete
key: service
- action: upsert
from_attribute: service.name
key: job
- action: delete
key: service.name
- action: upsert
key: _origin
value: kubernetes
- action: upsert
key: cluster
value: kubernetes
resource/delete_source_metadata:
attributes:
- action: delete
key: _sourceCategory
- action: delete
key: _sourceHost
- action: delete
key: _sourceName
resource/remove_k8s_pod_pod_name:
attributes:
- action: delete
key: k8s.pod.pod_name
source:
collector: kubernetes
exclude:
k8s.namespace.name: sumologic|my_metrics_excludeNamespaceRegex
sumologic_schema:
add_cloud_namespace: false
transform/remove_name:
error_mode: ignore
metric_statements:
- context: resource
statements:
- delete_key(attributes, "__name__")
transform/set_name:
error_mode: ignore
metric_statements:
- context: datapoint
statements:
- set(attributes["__name__"], metric.name) where IsMatch(metric.name, "^cloudprovider_.*")
receivers:
otlp:
protocols:
http:
endpoint: 0.0.0.0:4318
telegraf:
agent_config: |
[agent]
interval = "30s"
flush_interval = "30s"
omit_hostname = true
[[inputs.http_listener_v2]]
# wait longer than prometheus
read_timeout = "30s"
write_timeout = "30s"
service_address = ":9888"
data_format = "prometheusremotewrite"
paths = [
"/prometheus.metrics"
]
service:
extensions:
- health_check
- file_storage
- pprof
pipelines:
metrics:
exporters:
- sumologic/default
processors:
- memory_limiter
- metricstransform
- groupbyattrs
- resource
- k8s_tagger
- source
- sumologic_schema
- resource/remove_k8s_pod_pod_name
- resource/delete_source_metadata
- transform/set_name
- groupbyattrs/group_by_name
- transform/remove_name
- filter/drop_unnecessary_metrics
- batch
receivers:
- telegraf
- otlp
telemetry:
logs:
level: info
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
sumologic:
collectorName: my_collectorName
metrics:
excludeNamespaceRegex: my_metrics_excludeNamespaceRegex
otelcol:
extraProcessors:
- resource/add-metrics-resource-attribute:
attributes:
- action: insert
key: environment
value: staging
- resource/remove-metrics-resource-attribute:
attributes:
- action: delete
key: redundant-attribute
Loading

0 comments on commit 2d11eff

Please sign in to comment.