This guide walks you through upgrading Refinery across major versions to access new features and improvements.
Refinery 3.0 introduces significant improvements and includes breaking changes that require updating your configuration.
Upgrading your Refinery instance to 3.0 provides:
Update your Refinery configuration before upgrading to version 3.0. Your cluster will fail to start or behave as intended if you upgrade without updating your configuration first.
Refinery 3.0 eliminates several configuration options that are now handled automatically or replaced with new features.
Refinery 3.0 no longer supports redistributing in-progress traces during scaling events. Remove these options:
DisableRedistributionRedistributionDelayRefinery 3.0 automatically manages upstream and peer queue sizes. Remove these options:
PeerBufferSizeUpstreamBufferSizeRefinery 3.0 removes the Trace Locality experimental feature. Remove these options:
TraceLocalityModeMaxDropDecisionBatchSizeDropDecisionSendIntervalMaxKeptDecisionBatchSizeKeptDecisionSendIntervalSome Refinery 2.x settings have been renamed or redesigned in version 3.0.
Replace CacheCapacity with queue size options:
CacheCapacity from your configuration.IncomingQueueSize and PeerQueueSize (if they aren’t already present).CacheCapacity value.
For example, if CacheCapacity was 1000, set both IncomingQueueSize and PeerQueueSize to 3000.Replace LegacyMetrics with OTelMetrics:
LegacyMetrics with OTelMetrics in your configuration.LegacyMetrics in version 2.0 and removes it in version 3.0.
Some metric names will change slightly after this update.After updating your configuration, upgrade your Refinery instances using your usual deployment method (such as Helm or Kubernetes). Deployment steps vary by environment, so follow your standard process to complete the upgrade.
Refinery 2.0 introduced a new YAML-based configuration format and included breaking changes that require migrating your configuration. Use the Configuration Conversion Tool to convert your Refinery 1.x files (JSON, TOML, and YAML format) to the Refinery 2.x YAML format and preserve your settings.
Upgrading to Refinery 2.0 or later provides:
.yaml-based configuration with better default valuesEMAThroughputSampler and WindowedThroughputSamplerTo migrate from Refinery 1.x to 2.x:
Gather this information before you start:
Convert your configuration files using one of these methods:
Review the converted files and add any custom comments you want to preserve.
For detailed information about the tool’s capabilities, visit Configuration Conversion Tool.
Once you’ve converted and reviewed your configuration files, upgrade Refinery using your existing deployment tool or process (for example, Helm, Kubernetes, or a custom deployment script). Follow your environment’s standard procedure to complete the upgrade.
The Configuration Conversion Tool is a command line tool that helps you migrate Refinery configurations, validate configuration files, and generate local documentation. While primarily used for translating from Refinery 1.x to 2.x file format, you can also use it independently for validation and documentation tasks.
The Configuration Conversion Tool:
The tool maps variables from their Refinery 1.x locations to the appropriate Refinery 2.x locations.
Any non-default values carry over to the new format if still applicable.
Example: If your Refinery 1.x config file specifies MetricsAPIKey in the HoneycombMetrics section, the tool creates a Refinery 2.x config.yaml file with that key listed as APIKey in the LegacyMetrics section.
The generated Refinery 2.x config.yaml files include helpful comments describing each configuration variable and its possible values.
The configuration conversion tool is available as pre-built binaries for Linux, macOS, and Windows.
Follow the instructions for your installation method:
Convert your Refinery Helm chart to the Refinery 2.x format:
convert helm --input /path/to/values.yaml --output /path/to/values.yaml
Command structure:
convert: Command used to convert the specified input filehelm: Indicates the conversion template to apply--input /path/to/values.yaml: Required path to your existing Refinery 1.x values.yaml source file.
Adjust the file type and path as needed.--output /path/to/values.yaml: Required path that designates where the tool will save your new Refinery 2.x values.yaml destination fileIf you don’t use Helm, convert your Refinery config and rules files separately.
Convert your Refinery config file to the Refinery 2.x format:
convert config --input /path/to/config.toml --output /path/to/config.yaml
Command structure:
convert: Command used to convert the specified input fileconfig: Indicates the conversion template to apply--input /path/to/config.toml: Required path to your existing Refinery 1.x config source file.
Adjust the file type and path as needed.--output /path/to/config.yaml: Required path that designates where the tool will save your new Refinery 2.x config destination file--type option.Convert your Refinery rules file to the Refinery 2.x format:
convert rules --input /path/to/rules.toml --output /path/to/rules.yaml
Command structure:
convert: Command used to convert the specified input filerules: Indicates the conversion template to apply--input /path/to/config.toml: Required path to your existing Refinery 1.x rules source file.
Adjust the file type and path as needed.--output /path/to/config.yaml: Required path that designates where the tool will save your new Refinery 2.x rules destination file--type option.The conversion tool automatically validates your Refinery file during conversion. If the tool finds issues, it stops and displays descriptive error messages.
For example, the following output could appear when multiple errors are encountered for the rules file:
Validation Errors in rules file:
Within sampler dataset1: field DynamicSampler.UseTraceLength must be a bool
Within sampler dataset1: field DynamicSampler.ClearFrequency (1) must be a valid duration like '3m30s' or '100ms'
Within sampler dataset1: unknown field DynamicSampler.SamplerRate; did you mean SampleRate?
Within sampler dataset1: field DynamicSampler.FieldList must be a string array but contains non-string 10
Within sampler dataset1: the group DynamicSampler is missing its required field SampleRate
To continue with migration:
For help resolving specific errors, visit the Refinery documentation for configuration (config.yaml) and sampling (rules.yaml).
The tool supports these command line options:
-i,--inputconfig.toml)-o, --outputstdout)-t Y, --type=Y-t T, --type=T-t J, --type=J-h, --helpManually validate your Refinery configuration files, such as in a Continuous Integration (CI) process.
(Refinery automatically validates files during the convert command.)
To validate your Refinery config file against the Refinery 2.x format, use:
convert validate config --input config.yaml
To validate your Refinery rules file against the Refinery 2.x format, use:
convert validate rules --input rules.yaml
Command structure:
convert validate: Command used to validate the specified input fileconfig or rules: Indicates the appropriate validation template--input: Required path to the file you want to validateGenerate local Refinery documentation in Markdown format for offline reference.
To generate documentation for config.yaml, use:
convert doc config
To generate documentation for rules.yaml, use:
convert doc rules
To learn more, visit Refinery documentation for configuration (config.yaml) and sampling (rules.yaml).
Join #discuss-refinery in the Pollinators Community Slack to ask questions and learn more.
For Pro and Enterprise users, contact Support via support.honeycomb.io, or email at support@honeycomb.io