mirror of
				https://github.com/carlosedp/cluster-monitoring.git
				synced 2025-10-26 10:23:04 +01:00 
			
		
		
		
	Better file organization
This commit is contained in:
		
							parent
							
								
									a1752635cf
								
							
						
					
					
						commit
						80bedf1e20
					
				
							
								
								
									
										8
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										8
									
								
								Makefile
									
									
									
									
									
								
							| @ -30,13 +30,15 @@ fmt:       ## Formats all jsonnet and libsonnet files (except on vendor dir) | |||||||
| 	@find . -name 'vendor' -prune -o -name '*.libsonnet' -o -name '*.jsonnet' -print | xargs -n 1 -- $(JSONNET_FMT) -i | 	@find . -name 'vendor' -prune -o -name '*.libsonnet' -o -name '*.jsonnet' -print | xargs -n 1 -- $(JSONNET_FMT) -i | ||||||
| 
 | 
 | ||||||
| deploy: manifests       ## Rebuilds manifests and deploy to configured cluster
 | deploy: manifests       ## Rebuilds manifests and deploy to configured cluster
 | ||||||
| 	kubectl apply -f ./manifests/ | 	echo "Deploying stack setup manifests..." | ||||||
| 	echo "Will wait 40 seconds to reapply manifests" | 	kubectl apply -f ./manifests/setup/ | ||||||
| 	sleep 40 | 	echo "Will wait 10 seconds to deploy the additional manifests.." | ||||||
|  | 	sleep 10 | ||||||
| 	kubectl apply -f ./manifests/ | 	kubectl apply -f ./manifests/ | ||||||
| 
 | 
 | ||||||
| teardown:       ## Delete all monitoring stack resources from configured cluster
 | teardown:       ## Delete all monitoring stack resources from configured cluster
 | ||||||
| 	kubectl delete -f ./manifests/ | 	kubectl delete -f ./manifests/ | ||||||
|  | 	kubectl delete -f ./manifests/setup/ | ||||||
| 
 | 
 | ||||||
| tar: manifests       ## Generates a .tar.gz from manifests dir
 | tar: manifests       ## Generates a .tar.gz from manifests dir
 | ||||||
| 	rm -rf manifests.tar.gz | 	rm -rf manifests.tar.gz | ||||||
|  | |||||||
| @ -8,18 +8,17 @@ local kp = (import 'kube-prometheus/kube-prometheus.libsonnet') | |||||||
|            // Additional modules are loaded dynamically from vars.jsonnet |            // Additional modules are loaded dynamically from vars.jsonnet | ||||||
|            + utils.join_objects([module.file for module in vars.modules if module.enabled]) |            + utils.join_objects([module.file for module in vars.modules if module.enabled]) | ||||||
|            // Load K3s customized modules |            // Load K3s customized modules | ||||||
|            + utils.join_objects([m for m in [import 'k3s-overrides.jsonnet'] if vars.k3s.enabled]) |            + utils.join_objects([m for m in [import 'modules/k3s-overrides.jsonnet'] if vars.k3s.enabled]) | ||||||
|            // Base stack is loaded at the end to override previous definitions |            // Base stack is loaded at the end to override previous definitions | ||||||
|            + (import 'base_operator_stack.jsonnet') |            + (import 'base_operator_stack.jsonnet') | ||||||
|            // Load image versions last to override default from modules |            // Load image versions last to override default from modules | ||||||
|            + (import 'image_sources_versions.jsonnet'); |            + (import 'image_sources_versions.jsonnet'); | ||||||
| 
 | 
 | ||||||
| 
 |  | ||||||
| // Generate core modules | // Generate core modules | ||||||
| { ['00namespace-' + name]: kp.kubePrometheus[name] for name in std.objectFields(kp.kubePrometheus) } | { ['setup/0namespace-' + name]: kp.kubePrometheus[name] for name in std.objectFields(kp.kubePrometheus) } | ||||||
| // First generate operator resources except the serviceMonitors | // First generate operator resources except the serviceMonitors | ||||||
| { | { | ||||||
|   ['0prometheus-operator-' + name]: kp.prometheusOperator[name] |   ['setup/prometheus-operator-' + name]: kp.prometheusOperator[name] | ||||||
|   for name in std.filter((function(name) name != 'serviceMonitor'), std.objectFields(kp.prometheusOperator)) |   for name in std.filter((function(name) name != 'serviceMonitor'), std.objectFields(kp.prometheusOperator)) | ||||||
| } | } | ||||||
| // serviceMonitor is separated so that it can be created after the CRDs are ready | // serviceMonitor is separated so that it can be created after the CRDs are ready | ||||||
|  | |||||||
| @ -0,0 +1,292 @@ | |||||||
|  | { | ||||||
|  |    "apiVersion": "apiextensions.k8s.io/v1beta1", | ||||||
|  |    "kind": "CustomResourceDefinition", | ||||||
|  |    "metadata": { | ||||||
|  |       "annotations": { | ||||||
|  |          "controller-gen.kubebuilder.io/version": "v0.2.4" | ||||||
|  |       }, | ||||||
|  |       "creationTimestamp": null, | ||||||
|  |       "name": "podmonitors.monitoring.coreos.com" | ||||||
|  |    }, | ||||||
|  |    "spec": { | ||||||
|  |       "group": "monitoring.coreos.com", | ||||||
|  |       "names": { | ||||||
|  |          "kind": "PodMonitor", | ||||||
|  |          "listKind": "PodMonitorList", | ||||||
|  |          "plural": "podmonitors", | ||||||
|  |          "singular": "podmonitor" | ||||||
|  |       }, | ||||||
|  |       "scope": "Namespaced", | ||||||
|  |       "validation": { | ||||||
|  |          "openAPIV3Schema": { | ||||||
|  |             "description": "PodMonitor defines monitoring for a set of pods.", | ||||||
|  |             "properties": { | ||||||
|  |                "apiVersion": { | ||||||
|  |                   "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", | ||||||
|  |                   "type": "string" | ||||||
|  |                }, | ||||||
|  |                "kind": { | ||||||
|  |                   "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", | ||||||
|  |                   "type": "string" | ||||||
|  |                }, | ||||||
|  |                "metadata": { | ||||||
|  |                   "type": "object" | ||||||
|  |                }, | ||||||
|  |                "spec": { | ||||||
|  |                   "description": "Specification of desired Pod selection for target discovery by Prometheus.", | ||||||
|  |                   "properties": { | ||||||
|  |                      "jobLabel": { | ||||||
|  |                         "description": "The label to use to retrieve the job name from.", | ||||||
|  |                         "type": "string" | ||||||
|  |                      }, | ||||||
|  |                      "namespaceSelector": { | ||||||
|  |                         "description": "Selector to select which namespaces the Endpoints objects are discovered from.", | ||||||
|  |                         "properties": { | ||||||
|  |                            "any": { | ||||||
|  |                               "description": "Boolean describing whether all namespaces are selected in contrast to a list restricting them.", | ||||||
|  |                               "type": "boolean" | ||||||
|  |                            }, | ||||||
|  |                            "matchNames": { | ||||||
|  |                               "description": "List of namespace names.", | ||||||
|  |                               "items": { | ||||||
|  |                                  "type": "string" | ||||||
|  |                               }, | ||||||
|  |                               "type": "array" | ||||||
|  |                            } | ||||||
|  |                         }, | ||||||
|  |                         "type": "object" | ||||||
|  |                      }, | ||||||
|  |                      "podMetricsEndpoints": { | ||||||
|  |                         "description": "A list of endpoints allowed as part of this PodMonitor.", | ||||||
|  |                         "items": { | ||||||
|  |                            "description": "PodMetricsEndpoint defines a scrapeable endpoint of a Kubernetes Pod serving Prometheus metrics.", | ||||||
|  |                            "properties": { | ||||||
|  |                               "honorLabels": { | ||||||
|  |                                  "description": "HonorLabels chooses the metric's labels on collisions with target labels.", | ||||||
|  |                                  "type": "boolean" | ||||||
|  |                               }, | ||||||
|  |                               "honorTimestamps": { | ||||||
|  |                                  "description": "HonorTimestamps controls whether Prometheus respects the timestamps present in scraped data.", | ||||||
|  |                                  "type": "boolean" | ||||||
|  |                               }, | ||||||
|  |                               "interval": { | ||||||
|  |                                  "description": "Interval at which metrics should be scraped", | ||||||
|  |                                  "type": "string" | ||||||
|  |                               }, | ||||||
|  |                               "metricRelabelings": { | ||||||
|  |                                  "description": "MetricRelabelConfigs to apply to samples before ingestion.", | ||||||
|  |                                  "items": { | ||||||
|  |                                     "description": "RelabelConfig allows dynamic rewriting of the label set, being applied to samples before ingestion. It defines `<metric_relabel_configs>`-section of Prometheus configuration. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs", | ||||||
|  |                                     "properties": { | ||||||
|  |                                        "action": { | ||||||
|  |                                           "description": "Action to perform based on regex matching. Default is 'replace'", | ||||||
|  |                                           "type": "string" | ||||||
|  |                                        }, | ||||||
|  |                                        "modulus": { | ||||||
|  |                                           "description": "Modulus to take of the hash of the source label values.", | ||||||
|  |                                           "format": "int64", | ||||||
|  |                                           "type": "integer" | ||||||
|  |                                        }, | ||||||
|  |                                        "regex": { | ||||||
|  |                                           "description": "Regular expression against which the extracted value is matched. Default is '(.*)'", | ||||||
|  |                                           "type": "string" | ||||||
|  |                                        }, | ||||||
|  |                                        "replacement": { | ||||||
|  |                                           "description": "Replacement value against which a regex replace is performed if the regular expression matches. Regex capture groups are available. Default is '$1'", | ||||||
|  |                                           "type": "string" | ||||||
|  |                                        }, | ||||||
|  |                                        "separator": { | ||||||
|  |                                           "description": "Separator placed between concatenated source label values. default is ';'.", | ||||||
|  |                                           "type": "string" | ||||||
|  |                                        }, | ||||||
|  |                                        "sourceLabels": { | ||||||
|  |                                           "description": "The source labels select values from existing labels. Their content is concatenated using the configured separator and matched against the configured regular expression for the replace, keep, and drop actions.", | ||||||
|  |                                           "items": { | ||||||
|  |                                              "type": "string" | ||||||
|  |                                           }, | ||||||
|  |                                           "type": "array" | ||||||
|  |                                        }, | ||||||
|  |                                        "targetLabel": { | ||||||
|  |                                           "description": "Label to which the resulting value is written in a replace action. It is mandatory for replace actions. Regex capture groups are available.", | ||||||
|  |                                           "type": "string" | ||||||
|  |                                        } | ||||||
|  |                                     }, | ||||||
|  |                                     "type": "object" | ||||||
|  |                                  }, | ||||||
|  |                                  "type": "array" | ||||||
|  |                               }, | ||||||
|  |                               "params": { | ||||||
|  |                                  "additionalProperties": { | ||||||
|  |                                     "items": { | ||||||
|  |                                        "type": "string" | ||||||
|  |                                     }, | ||||||
|  |                                     "type": "array" | ||||||
|  |                                  }, | ||||||
|  |                                  "description": "Optional HTTP URL parameters", | ||||||
|  |                                  "type": "object" | ||||||
|  |                               }, | ||||||
|  |                               "path": { | ||||||
|  |                                  "description": "HTTP path to scrape for metrics.", | ||||||
|  |                                  "type": "string" | ||||||
|  |                               }, | ||||||
|  |                               "port": { | ||||||
|  |                                  "description": "Name of the port this endpoint refers to. Mutually exclusive with targetPort.", | ||||||
|  |                                  "type": "string" | ||||||
|  |                               }, | ||||||
|  |                               "proxyUrl": { | ||||||
|  |                                  "description": "ProxyURL eg http://proxyserver:2195 Directs scrapes to proxy through this endpoint.", | ||||||
|  |                                  "type": "string" | ||||||
|  |                               }, | ||||||
|  |                               "relabelings": { | ||||||
|  |                                  "description": "RelabelConfigs to apply to samples before ingestion. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config", | ||||||
|  |                                  "items": { | ||||||
|  |                                     "description": "RelabelConfig allows dynamic rewriting of the label set, being applied to samples before ingestion. It defines `<metric_relabel_configs>`-section of Prometheus configuration. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs", | ||||||
|  |                                     "properties": { | ||||||
|  |                                        "action": { | ||||||
|  |                                           "description": "Action to perform based on regex matching. Default is 'replace'", | ||||||
|  |                                           "type": "string" | ||||||
|  |                                        }, | ||||||
|  |                                        "modulus": { | ||||||
|  |                                           "description": "Modulus to take of the hash of the source label values.", | ||||||
|  |                                           "format": "int64", | ||||||
|  |                                           "type": "integer" | ||||||
|  |                                        }, | ||||||
|  |                                        "regex": { | ||||||
|  |                                           "description": "Regular expression against which the extracted value is matched. Default is '(.*)'", | ||||||
|  |                                           "type": "string" | ||||||
|  |                                        }, | ||||||
|  |                                        "replacement": { | ||||||
|  |                                           "description": "Replacement value against which a regex replace is performed if the regular expression matches. Regex capture groups are available. Default is '$1'", | ||||||
|  |                                           "type": "string" | ||||||
|  |                                        }, | ||||||
|  |                                        "separator": { | ||||||
|  |                                           "description": "Separator placed between concatenated source label values. default is ';'.", | ||||||
|  |                                           "type": "string" | ||||||
|  |                                        }, | ||||||
|  |                                        "sourceLabels": { | ||||||
|  |                                           "description": "The source labels select values from existing labels. Their content is concatenated using the configured separator and matched against the configured regular expression for the replace, keep, and drop actions.", | ||||||
|  |                                           "items": { | ||||||
|  |                                              "type": "string" | ||||||
|  |                                           }, | ||||||
|  |                                           "type": "array" | ||||||
|  |                                        }, | ||||||
|  |                                        "targetLabel": { | ||||||
|  |                                           "description": "Label to which the resulting value is written in a replace action. It is mandatory for replace actions. Regex capture groups are available.", | ||||||
|  |                                           "type": "string" | ||||||
|  |                                        } | ||||||
|  |                                     }, | ||||||
|  |                                     "type": "object" | ||||||
|  |                                  }, | ||||||
|  |                                  "type": "array" | ||||||
|  |                               }, | ||||||
|  |                               "scheme": { | ||||||
|  |                                  "description": "HTTP scheme to use for scraping.", | ||||||
|  |                                  "type": "string" | ||||||
|  |                               }, | ||||||
|  |                               "scrapeTimeout": { | ||||||
|  |                                  "description": "Timeout after which the scrape is ended", | ||||||
|  |                                  "type": "string" | ||||||
|  |                               }, | ||||||
|  |                               "targetPort": { | ||||||
|  |                                  "anyOf": [ | ||||||
|  |                                     { | ||||||
|  |                                        "type": "integer" | ||||||
|  |                                     }, | ||||||
|  |                                     { | ||||||
|  |                                        "type": "string" | ||||||
|  |                                     } | ||||||
|  |                                  ], | ||||||
|  |                                  "description": "Name or number of the target port of the endpoint. Mutually exclusive with port.", | ||||||
|  |                                  "x-kubernetes-int-or-string": true | ||||||
|  |                               } | ||||||
|  |                            }, | ||||||
|  |                            "type": "object" | ||||||
|  |                         }, | ||||||
|  |                         "type": "array" | ||||||
|  |                      }, | ||||||
|  |                      "podTargetLabels": { | ||||||
|  |                         "description": "PodTargetLabels transfers labels on the Kubernetes Pod onto the target.", | ||||||
|  |                         "items": { | ||||||
|  |                            "type": "string" | ||||||
|  |                         }, | ||||||
|  |                         "type": "array" | ||||||
|  |                      }, | ||||||
|  |                      "sampleLimit": { | ||||||
|  |                         "description": "SampleLimit defines per-scrape limit on number of scraped samples that will be accepted.", | ||||||
|  |                         "format": "int64", | ||||||
|  |                         "type": "integer" | ||||||
|  |                      }, | ||||||
|  |                      "selector": { | ||||||
|  |                         "description": "Selector to select Pod objects.", | ||||||
|  |                         "properties": { | ||||||
|  |                            "matchExpressions": { | ||||||
|  |                               "description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", | ||||||
|  |                               "items": { | ||||||
|  |                                  "description": "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.", | ||||||
|  |                                  "properties": { | ||||||
|  |                                     "key": { | ||||||
|  |                                        "description": "key is the label key that the selector applies to.", | ||||||
|  |                                        "type": "string" | ||||||
|  |                                     }, | ||||||
|  |                                     "operator": { | ||||||
|  |                                        "description": "operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.", | ||||||
|  |                                        "type": "string" | ||||||
|  |                                     }, | ||||||
|  |                                     "values": { | ||||||
|  |                                        "description": "values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.", | ||||||
|  |                                        "items": { | ||||||
|  |                                           "type": "string" | ||||||
|  |                                        }, | ||||||
|  |                                        "type": "array" | ||||||
|  |                                     } | ||||||
|  |                                  }, | ||||||
|  |                                  "required": [ | ||||||
|  |                                     "key", | ||||||
|  |                                     "operator" | ||||||
|  |                                  ], | ||||||
|  |                                  "type": "object" | ||||||
|  |                               }, | ||||||
|  |                               "type": "array" | ||||||
|  |                            }, | ||||||
|  |                            "matchLabels": { | ||||||
|  |                               "additionalProperties": { | ||||||
|  |                                  "type": "string" | ||||||
|  |                               }, | ||||||
|  |                               "description": "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.", | ||||||
|  |                               "type": "object" | ||||||
|  |                            } | ||||||
|  |                         }, | ||||||
|  |                         "type": "object" | ||||||
|  |                      } | ||||||
|  |                   }, | ||||||
|  |                   "required": [ | ||||||
|  |                      "podMetricsEndpoints", | ||||||
|  |                      "selector" | ||||||
|  |                   ], | ||||||
|  |                   "type": "object" | ||||||
|  |                } | ||||||
|  |             }, | ||||||
|  |             "required": [ | ||||||
|  |                "spec" | ||||||
|  |             ], | ||||||
|  |             "type": "object" | ||||||
|  |          } | ||||||
|  |       }, | ||||||
|  |       "version": "v1", | ||||||
|  |       "versions": [ | ||||||
|  |          { | ||||||
|  |             "name": "v1", | ||||||
|  |             "served": true, | ||||||
|  |             "storage": true | ||||||
|  |          } | ||||||
|  |       ] | ||||||
|  |    }, | ||||||
|  |    "status": { | ||||||
|  |       "acceptedNames": { | ||||||
|  |          "kind": "", | ||||||
|  |          "plural": "" | ||||||
|  |       }, | ||||||
|  |       "conditions": [ ], | ||||||
|  |       "storedVersions": [ ] | ||||||
|  |    } | ||||||
|  | } | ||||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @ -1,5 +1,5 @@ | |||||||
|  | local utils = import '../utils.libsonnet'; | ||||||
| local k = import 'ksonnet/ksonnet.beta.4/k.libsonnet'; | local k = import 'ksonnet/ksonnet.beta.4/k.libsonnet'; | ||||||
| local utils = import 'utils.libsonnet'; |  | ||||||
| 
 | 
 | ||||||
| { | { | ||||||
|   _config+:: { |   _config+:: { | ||||||
| @ -1,5 +1,5 @@ | |||||||
|  | local utils = import '../utils.libsonnet'; | ||||||
| local k = import 'ksonnet/ksonnet.beta.4/k.libsonnet'; | local k = import 'ksonnet/ksonnet.beta.4/k.libsonnet'; | ||||||
| local utils = import 'utils.libsonnet'; |  | ||||||
| 
 | 
 | ||||||
| { | { | ||||||
|   _config+:: { |   _config+:: { | ||||||
| @ -1,6 +1,6 @@ | |||||||
|  | local utils = import '../utils.libsonnet'; | ||||||
|  | local vars = import '../vars.jsonnet'; | ||||||
| local k = import 'ksonnet/ksonnet.beta.4/k.libsonnet'; | local k = import 'ksonnet/ksonnet.beta.4/k.libsonnet'; | ||||||
| local utils = import 'utils.libsonnet'; |  | ||||||
| local vars = import 'vars.jsonnet'; |  | ||||||
| 
 | 
 | ||||||
| { | { | ||||||
|   prometheus+:: { |   prometheus+:: { | ||||||
| @ -1,5 +1,5 @@ | |||||||
|  | local utils = import '../utils.libsonnet'; | ||||||
| local k = import 'ksonnet/ksonnet.beta.4/k.libsonnet'; | local k = import 'ksonnet/ksonnet.beta.4/k.libsonnet'; | ||||||
| local utils = import 'utils.libsonnet'; |  | ||||||
| 
 | 
 | ||||||
| { | { | ||||||
|   _config+:: { |   _config+:: { | ||||||
| @ -1,5 +1,5 @@ | |||||||
|  | local utils = import '../utils.libsonnet'; | ||||||
| local k = import 'ksonnet/ksonnet.beta.4/k.libsonnet'; | local k = import 'ksonnet/ksonnet.beta.4/k.libsonnet'; | ||||||
| local utils = import 'utils.libsonnet'; |  | ||||||
| 
 | 
 | ||||||
| { | { | ||||||
|   _config+:: { |   _config+:: { | ||||||
| @ -1,5 +1,5 @@ | |||||||
|  | local utils = import '../utils.libsonnet'; | ||||||
| local k = import 'ksonnet/ksonnet.beta.4/k.libsonnet'; | local k = import 'ksonnet/ksonnet.beta.4/k.libsonnet'; | ||||||
| local utils = import 'utils.libsonnet'; |  | ||||||
| 
 | 
 | ||||||
| { | { | ||||||
|   _config+:: { |   _config+:: { | ||||||
| @ -17,7 +17,7 @@ set -o pipefail | |||||||
| 
 | 
 | ||||||
| # Make sure to start with a clean 'manifests' dir | # Make sure to start with a clean 'manifests' dir | ||||||
| rm -rf manifests | rm -rf manifests | ||||||
| mkdir manifests | mkdir -p manifests/setup | ||||||
| 
 | 
 | ||||||
| # optional, but we would like to generate yaml, not json | # optional, but we would like to generate yaml, not json | ||||||
| $JSONNET_BIN -J vendor -m manifests "${1-example.jsonnet}" | xargs -I{} sh -c 'cat {} | $(go env GOPATH)/bin/gojsontoyaml > {}.yaml; rm -f {}' -- {} | $JSONNET_BIN -J vendor -m manifests "${1-example.jsonnet}" | xargs -I{} sh -c 'cat {} | $(go env GOPATH)/bin/gojsontoyaml > {}.yaml; rm -f {}' -- {} | ||||||
|  | |||||||
							
								
								
									
										12
									
								
								vars.jsonnet
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								vars.jsonnet
									
									
									
									
									
								
							| @ -8,32 +8,32 @@ | |||||||
|       // After deployment, run the create_gmail_auth.sh script from scripts dir. |       // After deployment, run the create_gmail_auth.sh script from scripts dir. | ||||||
|       name: 'smtpRelay', |       name: 'smtpRelay', | ||||||
|       enabled: false, |       enabled: false, | ||||||
|       file: import 'smtp_relay.jsonnet', |       file: import 'modules/smtp_relay.jsonnet', | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       name: 'armExporter', |       name: 'armExporter', | ||||||
|       enabled: false, |       enabled: false, | ||||||
|       file: import 'arm_exporter.jsonnet', |       file: import 'modules/arm_exporter.jsonnet', | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       name: 'upsExporter', |       name: 'upsExporter', | ||||||
|       enabled: false, |       enabled: false, | ||||||
|       file: import 'ups_exporter.jsonnet', |       file: import 'modules/ups_exporter.jsonnet', | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       name: 'metallbExporter', |       name: 'metallbExporter', | ||||||
|       enabled: false, |       enabled: false, | ||||||
|       file: import 'metallb.jsonnet', |       file: import 'modules/metallb.jsonnet', | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       name: 'traefikExporter', |       name: 'traefikExporter', | ||||||
|       enabled: false, |       enabled: false, | ||||||
|       file: import 'traefik.jsonnet', |       file: import 'modules/traefik.jsonnet', | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       name: 'elasticExporter', |       name: 'elasticExporter', | ||||||
|       enabled: false, |       enabled: false, | ||||||
|       file: import 'elasticsearch_exporter.jsonnet', |       file: import 'modules/elasticsearch_exporter.jsonnet', | ||||||
|     }, |     }, | ||||||
|   ], |   ], | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user