This is a migration doc for the Observability for Kubernetes Operator from the manual and Helm Collector and proxy installation. If you want to test the new Operator in parallel with your existing manual or Helm installation, use the wavefront-allow-legacy-install.yaml template.
Follow the Operator installation instructions.
In your wavefront.yaml
,
- set
spec.allowLegacyInstall
totrue
- set
spec.clusterName
to<YOUR HELM CLUSTER NAME>-operator
Modify your wavefront.yaml
to match your Helm installation based on the information below.
The following table lists the mapping of configurable parameters of the Wavefront Helm chart to Observability for Kubernetes Operator Custom Resource.
See Custom Resource Scenarios for examples or refer to wavefront.com_wavefronts.yaml for information on all Custom Resource fields.
Helm Collector Parameter | Observability for Kubernetes Operator Custom Resource spec . |
Description |
---|---|---|
clusterName |
clusterName |
ClusterName is a unique name for the Kubernetes cluster to be identified via a metric tag in Operations for Applications. |
wavefront.url |
wavefrontUrl |
The URL of your product cluster. Ex: https://<your_cluster>.wavefront.com. |
wavefront.token |
wavefrontTokenSecret |
WavefrontTokenSecret is the name of the secret that contains a Wavefront API Token. |
collector.enabled |
dataCollection.metrics.enable |
Metrics holds the configuration for node and cluster collectors. |
collector.interval |
dataCollection.metrics.defaultCollectionInterval |
Default metrics collection interval. Defaults to 60s. |
collector.useProxy |
NA |
The earlier Collector config parameter was meant to be used to support direct ingestion, which the Operator doesn't support. |
collector.proxyAddress |
dataExport.externalWavefrontProxy.Url |
Url is the proxy URL that the collector sends metrics to. |
collector.tags |
dataCollection.metrics.tags |
Map of tags (key/value) to add to all metrics collected. |
collector.filters.metricDenyList |
dataCollection.metrics.filters.denyList |
List of metric patterns to deny. |
collector.filters.metricAllowList |
dataCollection.metrics.filters.allowList |
List of metric patterns to allow. |
collector.discovery.enabled |
dataCollection.metrics.enableDiscovery |
Rules based and Prometheus endpoints auto-discovery. Defaults to true. |
collector.resources |
dataCollection.metrics.nodeCollector.resources dataCollection.metrics.clusterCollector.resources |
Compute resources required by the node and cluster collector containers. |
proxy.enabled |
dataExport.wavefrontProxy.enable |
Enable is whether to enable the Wavefront proxy. Defaults to true. Disable to use dataExport.externalWavefrontProxy.Url . |
proxy.port |
dataExport.wavefrontProxy.metricPort |
MetricPort is the port for sending Operations for Applications data format metrics. Defaults to 2878. |
proxy.httpProxyHost |
dataExport.wavefrontProxy.httpProxy.secret |
Name of the secret containing the HttpProxy configuration. |
proxy.httpProxyPort |
dataExport.wavefrontProxy.httpProxy.secret |
Name of the secret containing the HttpProxy configuration. |
proxy.useHttpProxyCAcert |
dataExport.wavefrontProxy.httpProxy.secret |
Name of the secret containing the HttpProxy configuration. |
proxy.httpProxyUser |
dataExport.wavefrontProxy.httpProxy.secret |
Name of the secret containing the HttpProxy configuration. |
proxy.httpProxyPassword |
dataExport.wavefrontProxy.httpProxy.secret |
Name of the secret containing the HttpProxy configuration. |
proxy.tracePort |
dataExport.wavefrontProxy.tracing.wavefront.port |
Port for sending distributed Operations for Applications format tracing data (usually 30000). |
proxy.jaegerPort |
dataExport.wavefrontProxy.tracing.jaeger.port |
Port for Jaeger format tracing data (usually 30001). |
proxy. traceJaegerHttpListenerPort |
dataExport.wavefrontProxy.tracing.jaeger. httpPort |
HttpPort for Jaeger Thrift format data (usually 30080). |
proxy. traceJaegerGrpcListenerPort |
dataExport.wavefrontProxy.tracing.jaeger. grpcPort |
GrpcPort for Jaeger gRPC format data (usually 14250). |
proxy.zipkinPort |
dataExport.wavefrontProxy.tracing.zipkin.port |
Port for Zipkin format tracing data (usually 9411). |
proxy.traceSamplingRate |
dataExport.wavefrontProxy.tracing.wavefront. samplingRate |
SamplingRate Distributed tracing data sampling rate (0 to 1). |
proxy.traceSamplingDuration |
dataExport.wavefrontProxy.tracing.wavefront. samplingDuration |
SamplingDuration When set to greater than 0, spans that exceed this duration will force trace to be sampled (ms). |
proxy. traceJaegerApplicationName |
dataExport.wavefrontProxy.tracing.jaeger. applicationName |
Custom application name for traces received on Jaeger's HTTP or gRPC port. |
proxy. traceZipkinApplicationName |
dataExport.wavefrontProxy.tracing.zipkin. applicationName |
Custom application name for traces received on Zipkin's port. |
proxy.histogramPort |
dataExport.wavefrontProxy.histogram.port |
Port for Operations for Applications histogram distributions (usually 40000) |
proxy.histogramMinutePort |
dataExport.wavefrontProxy.histogram.minutePort |
Port to accumulate 1-minute based histograms in the Operations for Applications data format (usually 40001). |
proxy.histogramHourPort |
dataExport.wavefrontProxy.histogram.hourPort |
Port to accumulate 1-hour based histograms in the Operations for Applications data format (usually 40002). |
proxy.histogramDayPort |
dataExport.wavefrontProxy.histogram.dayPort |
Port to accumulate 1-day based histograms in the Operations for Applications data format (usually 40002). |
proxy.deltaCounterPort |
dataExport.wavefrontProxy.deltaCounterPort |
Port to send delta counters in the Operations for Applications data format (usually 50000). |
proxy.args |
dataExport.wavefrontProxy.args |
Additional Wavefront proxy properties can be passed as command line arguments in the --<property_name> <value> format. Multiple properties can be specified. |
proxy.preprocessor.rules.yaml |
dataExport.wavefrontProxy.preprocessor |
Name of the configmap containing a rules.yaml key with proxy preprocessing rules. |
If you have a Collector configuration with parameters not covered above, please open an issue in this repository.
kubectl apply -f <path_to_your_wavefront.yaml>
Check the status of your installation:
kubectl get wavefront -n observability-system
You should eventually see a table that looks something like the following:
NAME STATUS PROXY CLUSTER-COLLECTOR NODE-COLLECTOR LOGGING AGE MESSAGE
wavefront Healthy Running (1/1) Running (1/1) Running (3/3) 2m4s All components are healthy
If STATUS
is Unhealthy
, check troubleshooting.
- Go to the Kubernetes Summary Dashboard, set the cluster to
<YOUR HELM CLUSTER NAME>-operator
, and verify that you are receiving metrics. It may take some time for metrics to populate this dashboard. - Verify that other important metrics are present with a
cluster="<YOUR HELM CLUSTER NAME>-operator"
tag.
helm uninstall wavefront --namespace wavefront
In your wavefront.yaml
,
- (Optional) Update
spec.clusterName
to<YOUR HELM CLUSTER NAME>
- Update
spec.allowLegacyInstall
tofalse
kubectl apply -f <path_to_your_wavefront.yaml>
- See Custom Resource Scenarios for proxy configuration examples.
- Copy and save your existing Collector configMaps and any other configurations.
- Uninstall your currently deployed Collector and Wavefront proxy.
- Make sure the Observability for Kubernetes Operator is already installed.
- Create a Kubernetes secret with your Wavefront API Token
kubectl create -n observability-system secret generic wavefront-secret --from-literal token=YOUR_WAVEFRONT_TOKEN
Most of the proxy configurations could be set using environment variables for proxy container. Here are the different proxy environment variables and how they map to the Operator config.
Proxy Environment Variables | Observability for Kubernetes Operator Custom Resource spec |
---|---|
WAVEFRONT_URL |
wavefrontUrl Ex: https://<your_cluster>.wavefront.com |
WAVEFRONT_TOKEN |
WAVEFRONT_TOKEN is now stored in a Kubernetes secret; see References above. |
WAVEFRONT_PROXY_ARGS |
dataExport.wavefrontProxy.* Refer to the below table for details. |
Below are the proxy arguments that are specified in WAVEFRONT_PROXY_ARGS
, which are currently supported natively in the Custom Resource.
Wavefront Proxy args | Observability for Kubernetes Operator Custom Resource spec |
---|---|
--preprocessorConfigFile |
dataExport.wavefrontProxy.preprocessor ConfigMap |
--proxyHost |
dataExport.wavefrontProxy.httpProxy.secret Secret |
--proxyPort |
dataExport.wavefrontProxy.httpProxy.secret Secret |
--proxyUser |
dataExport.wavefrontProxy.httpProxy.secret Secret |
--proxyPassword |
dataExport.wavefrontProxy.httpProxy.secret Secret |
--pushListenerPorts |
dataExport.wavefrontProxy.metricPort |
--deltaCounterPorts |
dataExport.wavefrontProxy.deltaCounterPort |
--traceListenerPorts |
dataExport.wavefrontProxy.tracing.wavefront.port |
--traceSamplingRate |
dataExport.wavefrontProxy.tracing.wavefront.samplingRate |
--traceSamplingDuration |
dataExport.wavefrontProxy.tracing.wavefront.samplingDuration |
--traceZipkinListenerPorts |
dataExport.wavefrontProxy.tracing.zipkin.port |
--traceZipkinApplicationName |
dataExport.wavefrontProxy.tracing.zipkin.applicationName |
--traceJaegerListenerPorts |
dataExport.wavefrontProxy.tracing.jaeger.port |
--traceJaegerHttpListenerPorts |
dataExport.wavefrontProxy.tracing.jaeger.httpPort |
--traceJaegerGrpcListenerPorts |
dataExport.wavefrontProxy.tracing.jaeger.grpcPort |
--traceJaegerApplicationName |
dataExport.wavefrontProxy.tracing.jaeger.applicationName |
--histogramDistListenerPorts |
dataExport.wavefrontProxy.histogram.port |
--histogramMinuteListenerPorts |
dataExport.wavefrontProxy.histogram.minutePort |
--histogramHourListenerPorts |
dataExport.wavefrontProxy.histogram.hourPort |
--histogramDayListenerPorts |
dataExport.wavefrontProxy.histogram.dayPort |
Other supported Custom Resource configuration:
dataExport.wavefrontProxy.args
: Used to set anyWAVEFRONT_PROXY_ARGS
configuration not mentioned in the above table. See wavefront-proxy-args.yaml for an example.dataExport.wavefrontProxy.preprocessor
: Used to set pre-processor rules for Wavefront proxy. See wavefront-proxy-preprocessor-rules.yaml for an example.dataExport.wavefrontProxy.httpProxy.secret
: Used to set an HTTP proxy secret for Wavefront proxy. See wavefront-proxy-with-http-proxy.yaml for an example.dataExport.wavefrontProxy.resources
: Used to set container resource request or limits for Wavefront proxy. See wavefront-pod-resources.yaml for an example.dataExport.externalWavefrontProxy.Url
: Used to set an external Wavefront proxy. See wavefront-collector-external-proxy.yaml for an example.
Wavefront Collector ConfigMap
changes:
- Wavefront Collector ConfigMap changed from
wavefront-collector
toobservability-system
namespace. sinks.proxyAddress
changed fromwavefront-proxy.default.svc.cluster.local:2878
towavefront-proxy:2878
.- Change
collector.yaml
toconfig.yaml
Custom Resource spec
changes:
- Update Custom Resource configuration
dataCollection.metrics.customConfig
with the created ConfigMap name. See wavefront-collector-existing-configmap.yaml for an example.
Other supported Custom Resource configurations:
dataCollection.metrics.filters
: Used to set filtering to be applied to all the metrics collected by the Kubernetes Metrics Collector. See wavefront-collector-filtering.yaml for an example.dataCollection.metrics.tolerations
: Used to set pod tolerations to be applied to all data collection for Kubernetes Metrics Collector. See wavefront-daemonset-pod-tolerations.yaml for an example.dataCollection.metrics.nodeCollector.resources
: Used to set container resource request or limits for Kubernetes Metrics Collector (Node). See wavefront-pod-resources.yaml for an example.dataCollection.metrics.clusterCollector.resources
: Used to set container resource request or limits for Kubernetes Metrics Collector (Cluster). See wavefront-pod-resources.yaml for an example.
If you have feedback, or come across something that cannot be configured with the Operator, please open an issue in this repository.