Skip to content

Commit 1e46628

Browse files
feat: added the ability to filter sysdig metrics using new variable sysdig_metrics_filter (#196)
1 parent 68ef437 commit 1e46628

File tree

7 files changed

+56
-4
lines changed

7 files changed

+56
-4
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,7 @@ No modules.
134134
| <a name="input_sysdig_agent_version"></a> [sysdig\_agent\_version](#input\_sysdig\_agent\_version) | IBM Cloud Monitoring Agent Version. To lookup version run: `ibmcloud cr images --restrict ext/sysdig/agent`. If null, the default value is used. | `string` | `"12.16.2"` | no |
135135
| <a name="input_sysdig_enabled"></a> [sysdig\_enabled](#input\_sysdig\_enabled) | Deploy IBM Cloud Monitoring agent | `bool` | `true` | no |
136136
| <a name="input_sysdig_instance_name"></a> [sysdig\_instance\_name](#input\_sysdig\_instance\_name) | The name of the IBM Cloud Monitoring instance to use. Required if Sysdig is enabled | `string` | `null` | no |
137+
| <a name="input_sysdig_metrics_filter"></a> [sysdig\_metrics\_filter](#input\_sysdig\_metrics\_filter) | To filter custom metrics, specify the Sysdig metrics to include or to exclude. See https://cloud.ibm.com/docs/monitoring?topic=monitoring-change_kube_agent#change_kube_agent_inc_exc_metrics. | <pre>list(object({<br> type = string<br> name = string<br> }))</pre> | `[]` | no |
137138
| <a name="input_sysdig_resource_group_id"></a> [sysdig\_resource\_group\_id](#input\_sysdig\_resource\_group\_id) | Resource group that the IBM Cloud Monitoring is in. Defaults to Clusters group | `string` | `null` | no |
138139

139140
### Outputs

chart/sysdig-agent/templates/configmap.yaml

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,10 @@ metadata:
1414
data:
1515
dragent.yaml: |
1616
configmap: true
17+
18+
new_k8s: true
19+
k8s_cluster_name: {{ .Values.config.clustername }}
20+
1721
### Agent tags
1822
tags: ibm.containers-kubernetes.cluster.name:{{ .Values.config.clustername }}
1923
@@ -31,6 +35,10 @@ data:
3135
# collector certificate validation
3236
ssl_verify_certificate: true
3337
34-
#######################################
35-
new_k8s: true
36-
k8s_cluster_name: {{ .Values.config.clustername }}
38+
{{ if .Values.metrics_filter -}}
39+
# metrics that must be included/excluded during the metrics collection
40+
metrics_filter:
41+
{{ range $v := .Values.metrics_filter -}}
42+
- {{ $v.type }}: {{ $v.name }}
43+
{{ end }}
44+
{{- end -}}

chart/sysdig-agent/values.yaml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,15 @@ config:
55
region: "us-south"
66
secret:
77
key: ""
8+
metrics_filter: []
9+
# example:
10+
# metrics_filter:
11+
# - type: "include"
12+
# name: "metricA.*"
13+
# - type: "exclude"
14+
# name: "metricB.*"
15+
# - type: "include"
16+
# name: "metricC.*"
817
checkov_skips:
918
- checkov.io/skip1: CKV_K8S_21
1019
- checkov.io/skip2: CKV_K8S_30

examples/basic/main.tf

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,4 +112,6 @@ module "observability_agents" {
112112
sysdig_access_key = module.observability_instances.cloud_monitoring_access_key
113113
logdna_agent_tags = var.logdna_agent_tags
114114
logdna_add_cluster_name = true
115+
# example of how to include / exclude metrics - more info https://cloud.ibm.com/docs/monitoring?topic=monitoring-change_kube_agent#change_kube_agent_log_metrics
116+
sysdig_metrics_filter = [{ type = "exclude", name = "metricA.*" }, { type = "include", name = "metricB.*" }]
115117
}

main.tf

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,7 @@ resource "helm_release" "sysdig_agent" {
130130
wait = true
131131
recreate_pods = true
132132
force_update = true
133+
reset_values = true
133134

134135
set {
135136
name = "image.version"
@@ -157,6 +158,10 @@ resource "helm_release" "sysdig_agent" {
157158
value = var.sysdig_access_key
158159
}
159160

161+
values = [yamlencode({
162+
metrics_filter = var.sysdig_metrics_filter
163+
})]
164+
160165
provisioner "local-exec" {
161166
command = "${path.module}/scripts/confirm-rollout-status.sh sysdig-agent ${local.sysdig_agent_namespace}"
162167
interpreter = ["/bin/bash", "-c"]

module-metadata.json

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,19 @@
164164
"line": 68
165165
}
166166
},
167+
"sysdig_metrics_filter": {
168+
"name": "sysdig_metrics_filter",
169+
"type": "list(object({\n type = string\n name = string\n }))",
170+
"description": "To filter custom metrics, specify the Sysdig metrics to include or to exclude. See https://cloud.ibm.com/docs/monitoring?topic=monitoring-change_kube_agent#change_kube_agent_inc_exc_metrics.",
171+
"default": [],
172+
"source": [
173+
"helm_release.sysdig_agent.values"
174+
],
175+
"pos": {
176+
"filename": "variables.tf",
177+
"line": 95
178+
}
179+
},
167180
"sysdig_resource_group_id": {
168181
"name": "sysdig_resource_group_id",
169182
"type": "string",
@@ -213,7 +226,8 @@
213226
"type": "helm_release",
214227
"name": "sysdig_agent",
215228
"attributes": {
216-
"count": "sysdig_enabled"
229+
"count": "sysdig_enabled",
230+
"values": "sysdig_metrics_filter"
217231
},
218232
"provider": {
219233
"name": "helm"

variables.tf

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,4 +92,17 @@ variable "sysdig_access_key" {
9292
default = null
9393
}
9494

95+
variable "sysdig_metrics_filter" {
96+
type = list(object({
97+
type = string
98+
name = string
99+
}))
100+
description = "To filter custom metrics, specify the Sysdig metrics to include or to exclude. See https://cloud.ibm.com/docs/monitoring?topic=monitoring-change_kube_agent#change_kube_agent_inc_exc_metrics."
101+
default = []
102+
validation {
103+
condition = length(var.sysdig_metrics_filter) == 0 || can(regex("^(include|exclude)$", var.sysdig_metrics_filter[0].type))
104+
error_message = "Invalid input for `sysdig_metrics_filter`. Valid options for 'type' are: `include` and `exclude`. If empty, no metrics are included or excluded."
105+
}
106+
}
107+
95108
##############################################################################

0 commit comments

Comments
 (0)