Skip to content
This repository has been archived by the owner on Apr 2, 2024. It is now read-only.

0.7.0

Compare
Choose a tag to compare
@cevian cevian released this 02 Dec 13:58
· 720 commits to master since this release
36cfee3

Note: Users of Promscale 0.6.1 and 0.6.2 should not upgrade to this version. There is an issue with the underlying schema migration which affects those versions. We are working on a fix and will release version 0.7.1 as soon as possible.

At a high level, this release contains:

  • Headline feature: Support for OpenTelemetry tracing data (beta)
  • Support for Postgres 14
  • Helm chart improvements
  • New --enable-feature flag to make exposition of beta features explicit

Headline feature: Support for OpenTelemetry tracing data (beta)

We previously announced the beta release of tracing support, which we made available in the 0.7.0-beta.1 release. While 0.7.0 introduces a number of performance and stability improvements to our tracing support, the feature is still in beta. Therefore we may introduce non-backwards compatible changes in future versions that may require dropping existing trace data in order to upgrade to a new Promscale version. Note that you may also experience stability and performance issues with tracing data.

In this release we make tracing support opt-in: it must be activated with -enable-feature=tracing (more details on -enable-feature below). We are still actively working on improving the feature and its documentation. If you have any suggestions or encounter any issues you can share your feedback in this Github discussion.

Minor changes

-enable-feature

In order to make it clear to our users when they’re using beta functionality, we’ve added the -enable-feature option. When we release new beta functionality, our users will have to explicitly opt-in by enabling the feature. These features are subject to change, and do not have any API stability guarantees. Most importantly, we do not guarantee that there will be no data loss when using these features, or that we will be able to provide a painless pathway from beta to generally-available functionality.

Promscale's beta tracing support is one of the first major promscale features which can be enabled using -enable-feature=tracing. Additionally, Promscale exposes two pieces of beta PromQL functionality, promql-at-modifier, and promql-negative-offset, for more details on those, please consult the Prometheus docs on feature flags.

Note: To retain backwards compatibility, this change does not affect two existing pieces of beta functionality: Continuous Aggregates, and Exemplar Storage. Those features are both still beta, but do not require an explicit opt-in.

Helm chart improvements

We’ve improved the ergonomics of our helm charts, making it easier to get started with Promscale!

  • The helm chart now automatically configures itself, adding the required ServiceAccount, and optionally a ServiceMonitor object to monitor your Promscale instance (which is great if you’re using tobs).
  • We’ve made the deployment simpler by moving all connection configuration parameters into one Secret object.
  • The Promscale pod is now automatically recreated when the connection configuration is updated in values.yaml.
  • It’s now no longer necessary to create a Secret object with database connection details. Instead these parameters can be set directly in values.yaml. We do still provide the option of configuring connection details via a secret, see connectionSecretName.
  • All of these improvements required a break in backwards compatibility. We have restructured the connection parameter in values.yaml, and in doing so we have removed compatibility of the helm charts with TimescaleDB 1.x. If you are updating from a previous version of the helm chart please consult the upgrade notes below.

Support for Postgres 14

Promscale 0.7.0 adds support for Postgres 14.

Note: installations using the promscale extension must have version 0.3.0 of the extension installed for PG14 support. Promscale will automatically run the necessary UPDATE EXTENSION commands when it connects to the database.

Bug Fixes

We fixed a memory leak which arises when using the series endpoint (GET/POST /api/v1/series).

Deprecations

The -promql-enable-feature CLI flag has been deprecated. Its functionality has been merged with -enable-feature. The option is still supported, but will be removed in a future release.

Breaking Changes

Support for environment variables beginning with TS_PROM has been removed. This was previously deprecated in the 0.1.4 release.

The -db-connect-retries cli flag has been removed. Configuring it had no effect, so it can be removed without replacement. If this flag is set, Promscale will abort with the following error: Fatal error: cannot parse flags: configuration error: error parsing commandline args: flag provided but not defined: -db-connect-retries.

In the Promscale helm chart we replaced the service configuration in values.yaml with separate configuration sections for openTelemetry and prometheus. This is to accommodate that Promscale now has both a Prometheus API, and a OTLP gRPC API.

Upgrade Notes

Upgrading helm chart

If you are using TimescaleDB 1.x, we do not recommend upgrading your helm charts to the latest release. In the most recent release we removed the configuration of cron jobs which are necessary for users of TimescaleDB 1.x. TimescaleDB 2.x onwards does not require these maintenance cron jobs. If you are using TimescaleDB 1.x, this is a great opportunity to upgrade to TimescaleDB 2.x :)

When you upgrade to the most recent helm chart be sure to:

  • Rename service.port to prometheus.port in your values.yaml.
  • Rename args to extraArgs in your values.yaml.
  • If you were using the 0.7.0-beta.1 helm charts with tracing.enabled: true, you now need to enable tracing through openTelemetry.enabled: true.
  • If you were either connection.dbURI.secretTemplate, or connection.password.secretTemplate in your values.yaml, you will need to use connectionSecretName and put all connection details into the secret object.
  • Templating the hostname via connection.host.nameTemplate was removed. The host can still be set via connection.host.
  • If your connection.password or connection.uri was a numeric value, be sure to convert it to a string.

Upgrading the Promscale connector binary

Replace the cli flag -promql-enable-feature with -enable-feature.

Replace any environment variables of the form TS_PROM_<CONFIG_ITEM> with PROMSCALE_<CONFIG_ITEM>.

Remove the cli flag -db-connect-retries. It didn’t do anything anyway.

Thanks

We’d like to thank @knrafto for their excellent bug report, allowing us to quickly identify a memory leak in the series endpoints.

Changelog

d856e5d Add insert batching when ingesting trace data
da6f736 Add PromQL view functions
5b6205f Add README for e2e tests
4c8fbe5 Add Trace comparators for HTTP JSON responses.
8db9a38 Add -enable-feature cli flag
a749eb2 Add a bigger trace dataset and some util functions
9586c1d Add benefits
881bd51 Add binary builds to .gitignore
542e255 Add caching to trace ingest path
db7dc75 Add comment to helm chart about -enable-feature=tracing
b4d544d Add downsampling documentation
e03ea5b Add info about docker
21babe1 Add label sorting to JSON metric ingest parser
5754dfb Add link to GH discussion
df00948 Add logging of errors to GRPC server
b305a9c Add note for TimescaleDB 1.x usage to helm chart README
0320441 Add requirements for the continuous aggregate view
d36c12b Add support for PG14
77d0ec1 Add tests for tracing put/get db functions
57f1d72 Add tests to validate the tag operators
524fa0d Add troubleshooting instructions for OTel Collector
6da5f24 Address review feedback
d8b45e9 Avoid ID lookups for operations and tags
b729e0e Batch by the entire trace structure
1d378fb Centralize management of CI env variables
637bd5f Change PromQL metric view to metric view
f7b8c43 Change to cover only alerting
616948e Correctly emit warning log on use of deprecated flag
7ed4d26 Cosmetics
b712e79 Couple of small improvements
183ea56 Create CODEOWNERS
7869378 Enable compression on tracing hypertables
450ccaf Encapsulate Jaeger-container output.
0b01f64 Ensure consistent sequencing of remote commands
453d265 First commit of updates to Downsampling doc
b1bf6c4 Fix 0.5.1 to 0.6.x SQL migration script
22fbd6d Fix GOMAXPROCS for K8s
90ff454 Fix application_name set to be too long
f16b862 Fix broken link
1e77e06 Fix broken link in helm chart README
dde2b56 Fix cache population when initializing metric batcher
555784e Fix clashing function names
95708d1 Fix code nits with trace ingest batching
8f19114 Fix issue when ingesting instrumentation libs with empty schema URLs
c29495c Fix memory leak with SamplesQuerier
0ae88e6 Fix partial upgrades to 0.6.0
b3ec90c Fix setting retention for 2-step aggregation
22c3b6a Fix silly bug in tracegen.py
fa9a529 Fix the import of vfsgen
be1c380 Fix verbose output bug
8ce54b2 Format code according to golang 1.16+ requirements
ec65445 Get rid of deprecated advisory log flags in helm.
adb8334 Handle insert conflicts for schema URL and instrumentation libs
6d3ae69 Handle zero value span IDs as null value in DB
2f5e8e7 Implement closers for Jaeger container.
b90120d Implement storing & reading of Jaeger query response.
2bf33ce Implement the GetDependencies Jaeger API
db9354b Improve periodic CI jobs runtime
8753513 Improve testing of trace ingest
1f26d13 Init Trace comparsion test.
8df691e JSON comparison layer.
0e73634 Jaeger container support and grpc conn test.
c89216a Link otel container with jaeger.
9b74c04 Make prom-migrator unit test independent of current time
aaa3f83 Migrate code to new version of jaeger package
745eefc Move CODEOWNERS to .github
fef04b2 Move operator creation to idempotent
b0b782f Order operation and link insertion to avoid deadlocks
a66afa9 Order trace query params sql.
f9539ae Otel-collector container support.
eb00b72 Prepare for the 0.7.0 release
1c67a76 Prepare for the next development cycle
b2f41d5 Prom-migrator: Fix infinite slab loop when setting -max-read-size too low.
8ea35d0 Refactor docker image selection for tests
1b81970 Refactor internal/testhelpers to respective files.
3b6605a Refactor trace writer code structure
a39b237 Reflect deprecated status of cli flags in cli docs
6a563fa Remove CI log filter for e2e tests
2b51e69 Remove deprecated TS_PROM_ prefixed env-var support
7507e0c Remove deprecated go-kit packages and use current ones
e93ce56 Remove fetch cache for "Build and Lint" job
ac74a24 Remove unused db-connect-retries cli flag
c164b9d Rename alerting doc
4d48300 Replace deprecated InitFromMap with NewAttributeMapFromMap
5806cd0 Replace reviewdog with plain golangci-lint
c75f9bc Resolve dependencies with go mod tidy
398c074 Rework docs around connectionSecretName
f11dfb9 Separate lines for spans throughput.
a8c6cd2 Simplifing CI config by removing superfluous step and updating actions
1dfb1d5 Simplifing golangci-lint configuration
efb94d7 Simplify CI jobs configuration by unifying repository checkout
7d18f19 Support higher extension versions than auto-upgrade
450d9ea Support logging telemetry stats for Traces ingestion.
8d154e8 Test/Modify trace tree database functions
3178dbb URL encode postgres connection string
153b0bf Unify buildchain execution for CI and local environments
d2a9880 Update PromQL upto Sept 23.
043a7fb Update README.md
e982992 Update README.md
dbf80a9 Update code owners
f4af944 Update docker image tags
1dc983f Update pkg/pgclient/config.go
e710bd7 Update table of contents
90f3ef7 Update tracing docs to account for -enable-feature
4714a47 Update tracing.md
de16213 Update tracing.md
4709267 Updated diagram to include tracing support
f397cfe Updated grafana instructions
e244659 Upgrade Prometheus dependency
482adf4 Use 'beta' instead of 'experimental'
d8a5cd5 Use pgtype.Int8 instead of int64 when fetching IDs from DB
ff6d5c6 Use the same golang version in CI as in go.mod
fbc72b4 add tracing documentation
ecb9574 helm-chart: Align README with actual default values
b4ee553 helm-chart: Remove maintenance configuration
d5de251 helm-chart: add ServiceMonitor definition
a8c6b2a helm-chart: address review comments
4233b2e helm-chart: allow numbers to be passed as connection parameters
fc92d6f helm-chart: fix incorrect annotation setting when prometheus scrape is disabled
2bff512 helm-chart: improve UX of service configuration
e195a58 helm-chart: include ServiceAccount definition
b30347d helm-chart: move connection details into a secret
9f9573c helm-chart: prefer db uri over specifying connection data manually
f92c3ba helm-chart: refactor enablement of otel tracing
bb8785f helm-chart: reorganize readme for improved UX
988308e helm-chart: update README with new fields
c2cd040 helm-chart: use stringData to store Secret values

Docker images

  • docker pull timescale/promscale:0.7.0
  • docker pull timescale/promscale:0.7