-
Notifications
You must be signed in to change notification settings - Fork 9
/
Copy pathwavefront-full-config.yaml
262 lines (262 loc) · 9.36 KB
/
wavefront-full-config.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
# Need to change YOUR_CLUSTER_NAME and YOUR_WAVEFRONT_URL accordingly
# This is not a valid configuration since some options are not compatible. See notes for more information.
# Unless otherwise specified, the values here are set to their default values.
apiVersion: wavefront.com/v1alpha1
kind: Wavefront
metadata:
name: wavefront
namespace: observability-system
spec:
clusterName: YOUR_CLUSTER_NAME
wavefrontUrl: YOUR_WAVEFRONT_URL
wavefrontTokenSecret: wavefront-secret
imagePullSecret: registry-secret
dataCollection:
# These are top level tolerations to be applied to all data collection (metrics and logging) DaemonSet pods. These
# are meant to add custom tolerations to DaemonSet pods inorder to enable metrics and log collection from tainted
# nodes.
tolerations:
- key: "key1"
operator: "Equal"
value: "value1"
effect: "NoSchedule"
logging:
enable: true
resources:
limits:
cpu: 1000m
ephemeral-storage: 2Gi
memory: 1Gi
requests:
cpu: 200m
ephemeral-storage: 1Gi
memory: 200Mi
# Can be any key value pair that users can add to all logging emitted.
tags:
userDefinedTag: userDefinedValue
filters:
tagAllowList:
# Can be any logging tag (source, service, application, container_name, pod_name, namespace_name, and cluster)
service:
- my-application-service-1
- my-application-service-2
tagDenyList:
# Can be any logging tag (source, service, application, container_name, pod_name, namespace_name, and cluster)
namespace_name:
- kube-system
metrics:
enable: true
# Can be any key value pair that users can add to all metrics emitted.
tags:
userDefinedTag: userDefinedValue
# Filters to apply towards all metrics collected by the collector
filters:
# List of glob patterns.
# Metrics with names matching the list are dropped.
# Default: Optimized metrics collection to omit peripheral metrics.
denyList:
- 'kubernetes.sys_container.*'
- 'kubernetes.collector.runtime.*'
- 'kubernetes.*.network.rx_rate'
- 'kubernetes.*.network.rx_errors_rate'
- 'kubernetes.*.network.tx_rate'
- 'kubernetes.*.network.tx_errors_rate'
- 'kubernetes.*.memory.page_faults'
- 'kubernetes.*.memory.page_faults_rate'
- 'kubernetes.*.memory.major_page_faults'
- 'kubernetes.*.memory.major_page_faults_rate'
- 'kubernetes.*.filesystem.inodes'
- 'kubernetes.*.filesystem.inodes_free'
- 'kubernetes.*.ephemeral_storage.request'
- 'kubernetes.*.ephemeral_storage.limit'
# List of glob patterns.
# Only metrics with names matching the list are reported.
# Example: Allow metrics that start with the kubernetes prefix.
allowList:
- 'kubernetes.*'
# Map of tag names to list of glob patterns.
# Metrics containing these tag keys and values will be dropped.
# Example: Block metrics that have a namespace_name tag of kube-system.
tagDenyList:
namespace_name:
- 'kube-system'
# Map of tag names to list of glob patterns.
# Only metrics containing tag keys and values matching this list will be reported.
# Example: Allow metrics that have an environment tag of production or staging.
tagAllowList:
env:
- 'prod*'
- 'staging*'
# List of glob patterns.
# Tags with matching keys will be excluded.
# Default: Filter out generated labels.
tagExclude:
- 'label?controller?revision*'
- 'label?pod?template*'
- 'annotation_kubectl_kubernetes_io_last_applied_configuration'
# List of glob patterns.
# Tags with matching keys will be included. All other tags will be excluded.
# Example: Allow metrics that have a tag key of cluster.
tagInclude:
- 'cluster'
# List of tag keys.
# Tags that are guaranteed to not be removed as part of limiting the point tags to the 20 tag limit.
# Example: Guarantee that if metrics have a point tag key "prod", the tag key will not be filtered out.
tagGuaranteeList:
- 'prod'
defaultCollectionInterval: 60s
# Rules based and Prometheus endpoints auto-discovery.
enableDiscovery: true
# controlPlane can enable/disable control plane metrics
controlPlane:
enable: true
clusterCollector:
resources:
limits:
cpu: 2000m
ephemeral-storage: 1Gi
memory: 512Mi
requests:
cpu: 200m
ephemeral-storage: 20Mi
memory: 10Mi
nodeCollector:
resources:
limits:
cpu: 1000m
ephemeral-storage: 512Mi
memory: 256Mi
requests:
cpu: 200m
ephemeral-storage: 20Mi
memory: 10Mi
dataExport:
# Note on externalWavefrontProxy and wavefrontProxy
#
# It is not valid to define an external proxy (externalWavefrontProxy.url) and
# enable the wavefront proxy (wavefrontProxy.enable) in your Kubernetes cluster.
# If specified the externalWavefrontProxy is used by metrics and logging.
externalWavefrontProxy:
url: YOUR_EXTERNAL_PROXY_URL
wavefrontProxy:
enable: true
metricPort: 2878
preprocessor: advanced-proxy-preprocessor-rules
resources:
limits:
cpu: 1000m
ephemeral-storage: 8Gi
memory: 4Gi
requests:
cpu: 100m
ephemeral-storage: 2Gi
memory: 1Gi
tracing:
wavefront:
port: 30000
samplingRate: "0.1"
samplingDuration: 100
zipkin:
port: 9411
applicationName: "zipkin"
jaeger:
port: 30001
httpPort: 30080
grpcPort: 14250
applicationName: "jaeger"
# Histogram distribution configuration
histogram:
port: 40000
minutePort: 40001
hourPort: 40002
dayPort: 40003
# OpenTelemetry Protocol configuration
otlp:
grpcPort: 4317
httpPort: 4318
resourceAttrsOnMetricsIncluded: false
# DeltaCounterPort accumulates 1-minute delta counters on Wavefront data format
deltaCounterPort: 50000
httpProxy:
secret: http-proxy-secret
# Note on Proxy Configuration Precedence
#
# Most wavefront proxy configuration options should be available via explicit fields in the custom resource.
# It is our recommendation to use those fields. However, it is also possible to specify options as proxy command
# line parameters in the `dataExport.wavefrontProxy.args` field. If both are used, the operator will allow it at
# this time, but the custom resource field will take precedence.
#
# For example, if you specify `--histogramDistListenerPorts 40123` in `dataExport.wavefrontProxy.args`
# and `dataExport.wavefrontProxy.histogram.port: 40000`,
# `dataExport.wavefrontProxy.histogram.port: 40000` will take precedence.
args: >
--customSourceTags mySource
--prefix=dev
replicas: 1
---
apiVersion: v1
kind: ConfigMap
metadata:
name: advanced-proxy-preprocessor-rules
namespace: observability-system
data:
rules.yaml: |
'2878':
- rule: tag-all-metrics-processed
action: addTag
tag: processed
value: "true"
---
# Need to change YOUR_HTTP_PROXY_URL, YOUR_HTTP_PROXY_BASIC_AUTH_USERNAME, YOUR_HTTP_PROXY_BASIC_AUTH_PASSWORD, and YOUR_HTTP_PROXY_CA_CERTIFICATE accordingly
apiVersion: v1
kind: Secret
metadata:
name: http-proxy-secret
namespace: observability-system
type: Opaque
stringData:
http-url: YOUR_HTTP_PROXY_URL #i.e. http://10.96.179.49:8080
# basic-auth-username: YOUR_HTTP_PROXY_BASIC_AUTH_USERNAME
# basic-auth-password: YOUR_HTTP_PROXY__BASIC_AUTH_PASSWORD
tls-root-ca-bundle: |
YOUR_HTTP_PROXY_CA_CERTIFICATE
---
# Need to change CONTROL_PLANE_ETCD_CA_CERTIFICATE, CONTROL_PLANE_ETCD_SERVER_CERTIFICATE, and CONTROL_PLANE_ETCD_SERVER_KEY accordingly
apiVersion: v1
kind: Secret
metadata:
name: etcd-certs
namespace: observability-system
type: Opaque
stringData:
# The location of these certificates on the control plane host filesystem depends on your distribution.
# Check your distribution documentation for how to access them. See the following as an example:
# https://kubernetes.io/docs/setup/best-practices/certificates/#certificate-paths
ca_crt: |
CONTROL_PLANE_ETCD_CA_CERTIFICATE
server_crt: |
CONTROL_PLANE_ETCD_SERVER_CERTIFICATE
server_key: |
CONTROL_PLANE_ETCD_SERVER_KEY
---
# See docs/collector/metrics.md#telegraf-source for more details
apiVersion: v1
kind: Secret
metadata:
name: memcached-config
namespace: observability-system
annotations:
wavefront.com/discovery-config: 'true'
stringData:
collector.yaml: |
# specify a list of discovery rules (plugins)
plugins:
# memcached
- name: memcached
type: telegraf/memcached
selectors:
images:
- 'docker.io/bitnami/memcached:*'
port: 11211
conf: |
servers = ["memcached-release.collector-targets.svc.cluster.local:11211"]