Upgrading to Refinery 3.0
Refinery 3.0 introduces significant improvements and includes breaking changes that require updating your configuration.What’s New in Refinery 3.0
Upgrading your Refinery instance to 3.0 provides:- More efficient CPU and memory utilization
- Enhanced cluster stability and reliability
Update Your Configuration
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.Options to Remove
Refinery 3.0 eliminates several configuration options that are now handled automatically or replaced with new features.Trace Redistribution
Refinery 3.0 no longer supports redistributing in-progress traces during scaling events. Remove these options:DisableRedistributionRedistributionDelay
Outgoing Buffer Sizes
Refinery 3.0 automatically manages upstream and peer queue sizes. Remove these options:PeerBufferSizeUpstreamBufferSize
Trace Locality Mode (Experimental)
Refinery 3.0 removes the Trace Locality experimental feature. Remove these options:TraceLocalityModeMaxDropDecisionBatchSizeDropDecisionSendIntervalMaxKeptDecisionBatchSizeKeptDecisionSendInterval
Options to Replace
Some Refinery 2.x settings have been renamed or redesigned in version 3.0.CacheCapacity
ReplaceCacheCapacity with queue size options:
- Remove
CacheCapacityfrom your configuration. - Add
IncomingQueueSizeandPeerQueueSize(if they aren’t already present). - Set both queue sizes to 3 times your previous
CacheCapacityvalue. For example, ifCacheCapacitywas1000, set bothIncomingQueueSizeandPeerQueueSizeto3000.
LegacyMetrics
ReplaceLegacyMetrics with OTelMetrics:
- Replace
LegacyMetricswithOTelMetricsin your configuration. - Keep the same configuration options. Both metrics types use identical settings.
Refinery deprecated
LegacyMetrics in version 2.0 and removes it in version 3.0.
Some metric names will change slightly after this update.Update Your Rules
In your rules, replace any field condition usingtrace.parent_id (or a name listed in configuration under ParentNames) with the has-root-span operator.
Before
After
Perform the Upgrade
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.Upgrading to Refinery 2.0
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.What’s New in Refinery 2.0
Upgrading to Refinery 2.0 or later provides:- Improved
.yaml-based configuration with better default values - New samplers:
EMAThroughputSamplerandWindowedThroughputSampler - Built-in configuration file validation
- More accurate span counting (instead of trace counting) for dynamic samplers, making it easer to right-size sampling based on event volume
- Improved metrics, including OpenTelemetry output
- Support for emitting multiple metrics sources
Migrate Your Configuration
To migrate from Refinery 1.x to 2.x:-
Gather this information before you start:
- Whether you use Helm with Kubernetes to manage your Refinery instance
- The file paths for your existing Refinery config and rules files
- Any custom comments in your existing configuration files that you want to preserve
- Install the Configuration Conversion Tool.
-
Convert your configuration files using one of these methods:
- Convert Helm values file (if you use Kubernetes with Helm)
- Convert config and rules files (if you don’t use Helm)
- Review the converted files and add any custom comments you want to preserve.
Perform the Upgrade
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.Configuration Conversion Tool
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.What It Does
The Configuration Conversion Tool:- Converts Refinery 1.x configuration files (JSON, TOML, or YAML) to the Refinery 2.x YAML format.
- Validates Refinery configuration files automatically during conversion.
- Generates local documentation in Markdown format for offline reference.
Refinery 2.x and 3.x use the same YAML configuration format.
The conversion tool is only needed when upgrading from Refinery 1.x to 2.x or later.
How It Works
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.xconfig 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 tool doesn’t migrate custom comments from your existing configuration files.
Save any important comments separately and add them to your new files manually.
Installing the Conversion Tool
The configuration conversion tool is available as pre-built binaries for Linux, macOS, and Windows.- If you use Helm with Kubernetes: The configuration conversion tool installs automatically with Refinery 2.0 and later.
- If you don’t use Helm: Download the configuration conversion tool from the Releases page in the Refinery GitHub repository. Find the single binary file for your operating system listed alongside each Refinery release, starting with Refinery 2.0.
Converting Configuration Files
Follow the instructions for your installation method:- Convert Kubernetes Helm Values
- Convert Config and Rules Files
Convert your Refinery Helm chart to the Refinery 2.x format: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.xvalues.yamlsource 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.xvalues.yamldestination file
Troubleshooting Conversion Errors
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 therules file:
- Fix the errors in your Refinery 1.x file.
- Run the conversion tool again.
config.yaml) and sampling (rules.yaml).
Command Line Options
The tool supports these command line options:-i,--input
: Path to the Refinery 1.x file to convert (default: config.toml)
-o, --output
: Path where the tool saves the converted Refinery 2.x file (default: stdout)
-t Y, --type=Y
: Indicates that the tool should treat the input file as YAML format.
Use when the file extension doesn’t indicate format.
-t T, --type=T
: Indicates that the tool should treat the input file as TOML format.
Use when the file extension doesn’t indicate format.
-t J, --type=J
: Indicates that the tool should load the input file as JSON format.
Use when the file extension doesn’t indicate format.
-h, --help
: Display the help message.
Validating Configuration Files
Manually validate your Refinery configuration files, such as in a Continuous Integration (CI) process. (Refinery automatically validates files during theconvert command.)
To validate your Refinery config file against the Refinery 2.x format, use:
rules file against the Refinery 2.x format, use:
convert validate: Command used to validate the specified input fileconfigorrules: Indicates the appropriate validation template--input: Required path to the file you want to validate
Generating Local Documentation
Generate local Refinery documentation in Markdown format for offline reference. To generate documentation forconfig.yaml, use:
rules.yaml, use:
config.yaml) and sampling (rules.yaml).
Get Help
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