Release Notes
This is a new major version. It added new metric domains, runtime debug controls, extensible AWS Secrets Manager parsing, and a more resilient Datadog delivery path.
As described in the Blip versioning guidelines, this series is not entirely backwards-compatible with v1.2. Integrations that use the affected exported APIs must be updated before upgrading.
| Component | v1.2 | v2.0 |
|---|---|---|
| AWS secret password helper | aws.Secret.Password(context.Context) (string, error) | Removed; use GetSecret or GetSecretPayload |
| Database credential type | dbconn.Credentials | blip.DbCredentials |
| Database credential callback | Returned dbconn.Credentials | Returns blip.DbCredentials |
| Default connection factory | NewConnFactory(awsConfig, modifyDB) | NewConnFactory(awsConfig, modifyDB, ...ConnFactoryOption) |
| Database-size query helper | Returned (string, error) | Returns (string, []interface{}, error) |
| Table-size query helper | Returned (string, error) | Returns (string, []interface{}, error) |
| Table-I/O query helper | Returned string | Returns (string, []interface{}) |
heartbeat.BlipReader values | Comparable | Not comparable |
To upgrade an integration:
- Replace
dbconn.Credentialswithblip.DbCredentialsand update anydbconn.CredentialFuncimplementations. - Accept the new variadic options argument when storing or wrapping
dbconn.NewConnFactory; ordinary two-argument calls continue to compile. - Capture the parameter slice returned by
DataSizeQuery,TableSizeQuery, andTableIoWaitQuery, and pass it to the database query call. - Replace
aws.Secret.Passwordcalls withGetSecretfor the default JSON object orGetSecretPayloadplus a password secret parser for custom payloads. - Stop comparing
heartbeat.BlipReadervalues directly; compare the relevant state exposed by the reader instead.
AWS Secrets Manager password-secret authentication now uses the secret’s optional string username value instead of always using the configured monitor username. Remove username from the secret to retain the v1.2 behavior.
Default sink HTTP clients now have a 10-second whole-request timeout plus bounded connection and response-header timeouts. Custom HTTP client factories are unchanged.
- Added the
autoincdomain for auto-increment column utilization. - Added the
error.account,error.global,error.host,error.thread, anderror.userdomains. - Added the
innodb.buffer-pooldomain. - Added runtime debug toggling through
GET /debugandSIGUSR1. - Added customizable parsing of AWS Secrets Manager
SecretStringandSecretBinarypayloads. - Added bounded and checkpointed Datadog payload submission to avoid oversized requests and resume partially acknowledged batches.
- Prevented sink requests from blocking metric delivery indefinitely.
- Preserved complete metric metadata and isolated counter state in the delta sink.
- Redacted database, sink, and authenticated proxy credentials from debug logs.
- Fixed query construction to use driver parameter interpolation across collectors and heartbeats.
- Fixed nondeterministic
query.response-timebucket selection and added detailed latency diagnostics. - Fixed a shutdown panic in signal handling.
- Updated the test matrix from MySQL 5.7 to MySQL 8.4 and refreshed dependencies.
This is a new series (new minor version). A quick summary of what’s new in this series:
- “Engine v2”: monitor.Engine was rewritten to better handle long-running collectors, which simplifies delta counter handling in the new sink.Delta. Previously, two levels could run in parallel because metrics were originally designed and intended to be stateless. But delta counters are implicitly stateful: interval 1 is required before interval 2 in order to calculate the delta. Serial level collection solves the order problem but then requires new handling for long-running domains. Engine v2 handles all collection cases (normal and edge) correctly and consistently.
As per the Blip versioning guidelines, this new series is not entirely backwards-compatible with v1.1 due to these changes:
| # | Component | v1.0 | v1.1 |
|---|---|---|---|
| 1 | blip.Plugins | TransformMetrics func(*Metrics) | TransformMetrics func([]*Metrics) error |
| 2 | Events | See below | See below |
How to upgrade (by number in the table above):
- The first argument changed from one
*blip.Metricsto a slice of metrics, and it returns an error. Update yourTransformMetricsplugin function to match, and you’ll most likely wrap its original logic in aforloop, like:
func(metrics []*blip.Metrics) error {
for _, m := range metrics {
/* Original logic */
}
return nil
}
- If using an integration that works with Blip events, see event/list.go for the new event names.
- Fixed bug (panic) in
monitor/level_collectorwhen plan has no levels. - Added
plan/default.None.
- Rewrote monitor.Engine (“engine v2”) and some of level collector (LCO)
- Removed parallel level collection; made level collection serial
- Fixed long-running domain handling
- Added collector max runtime (CMR) context per domain equal to minimum level frequency
- Added
ErrMore - Added collector fault fencing: collector and its results are fenced off (dropped) if non-responsive or returns too late
- Added domain priority: collectors are started by ascending domain frequency (e.g. 5s domain collectors start before 20s domain collectors)
- Added
blip.Metrics.Intervalfield - Added
sink.Deltawrapper for automatic/transparent delta counter handling - Removed multi-component status
- Renamed and added several events
- Changed
blip.Plugins.TransformMetrics - Changed testing default from MySQL 5.7 to MySQL 8.0
This is a new series (new minor version). A quick summary of what’s new in this series:
- The Datadog sink sends delta counters, which is what Datadog expects.
- The repl.lag collector defaults to MySQL 8.x Performance Schema replication tables.
As per the Blip versioning guidelines, this new series is not entirely backwards-compatible with v1.0 due to these changes:
| # | Component | v1.0 | v1.1 |
|---|---|---|---|
| 1 | datadog sink | Sends cumulative counters | Sends delta counters |
| 2 | repl.lag collector | Default writer=blip | Default writer=auto will use Performance Schema on MySQL 8.x |
How to upgrade (by number in the table above):
- Datadog counters are deltas by default, so the new behavior works better. Use
.as_rate()instead of therate()function. Note that Datadog charts work best when the interval is set for each metric. - To continue using Blip heartbeats, explicitly configure
repl.lagwith optionwriter=blip.
datadogsink:- Changed to send delta counters instead of cumulative counters (PR #106)
repl.lagcollector:- Added MySQL 8.x Performance Schema support (auto-detected or writer=pfs) (PR #118)
wait.io.tablecollector:- Added
count_starto metrics
- Added
- Added sink
prom-pushgateway(Prometheus Pushgateway) - Updated built-in AWS RDS CA from rds-ca-2019 to the global bundle (PR #113)
- Made HA manager a configurable plugin (PR #116)
- Changed
max_used_connetionsto gauge (PR #111) - Fixed GitHub Dependabot alerts
datadogsink:- Fixed timestamps: DD expects timestamp as seconds, not milliseconds
- Send new
event.SINK_ERRORand debug DD API errors on successful request
query.response-timeandwait.io.tablecollectors:- Added
truncate-timeoutoption and error policy - Fixed docs: option
truncate-tabledefaults to “yes”
- Added
- Fixed GitHub Dependabot alerts
datadogsink:- Fixed intermittent panic
- Fixed HTTP error 413 (payload too large) by dynamically partitioning metrics
- Added option
api-compress(default: yes)
replcollector:- Added option
report-not-a-replica - Moved pkg vars
statusQueryandnewTermstoReplto handle multiple collectors on different versions - Fixed docs (only
repl.runningis currently collected)
- Added option
- Updated
aws/AuthToken.Password: pass context toauth.BuildAuthToken - Fixed GitHub Dependabot alerts
- Fixed
blip.VERSION
- First GA, production-ready release.