All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Additional changes to original format:
Cosmetic
for changes without impact on the code/logicThank you for your contribution
for shout-outs to the community
- Remove
full
as a feature flag (no real value; all features are enabled by default)
0.12.0 - 2022-02-15
-
Update dependencies and fix breaking changes
opentelemetry = "0.17" opentelemetry-prometheus = { version = "0.10", optional = true } opentelemetry-semantic-conventions = "0.9" prometheus = { version = "0.13", optional = true }
Due to lifetime and thread-safety issues (non-Send across await point), a switch to
BoxedTracer
was necessary. Since most examples and implementation do that, this crate gets in line with the others now. -
Ensure that docs are generated for both middlewares (
#[cfg(any(β¦, doc))]
)
-
More default methods to set up the middlewares (via
opentelemetry_tide::TideExt
):.with_default_metrics_middleware()
.with_default_tracing_middleware()
.with_default_middlewares()
This should avoid the need to pass in a tracer for common scenarios.
0.11.0 - 2021-10-03 β German Unity Edition
-
Update dependencies
[dependencies] opentelemetry = "0.16.0" opentelemetry-prometheus = { version = "0.9.0", optional = true } opentelemetry-semantic-conventions = "0.8.0"
- Use Rust 1.54's new feature to include the README content into the crate doc via a macro call; see https://blog.rust-lang.org/2021/07/29/Rust-1.54.0.html#attributes-can-invoke-function-like-macros
0.10.0 - 2021-07-28
- Update dependencies
0.9.0 - 2021-05-11
MetricsConfig
would cause a stack overflow on construction
0.8.0 - 2021-05-10
-
MetricsConfig
to provide a more convenient and publicly accessible way of configuring the metrics middleware; this allows you to also align histogram boundaries across your services, even if you do not use this crate at all (prometheus loves to have a defined set of buckets for identical metrics)Usage example:
use opentelemetry_tide::{MetricsConfig, TideExt}; // ... snip ... app.with_middlewares(tracer, MetricsConfig::default());
- metrics endpoint is configurable now
- histogram boundaries default buckets
- more granular steppings
- lower bound is now
0.001
instead of0.0001
- (new) summary quantiles default, which has more different nines buckets than the upstream default; currently the summary is not really used anywhere yet, otel rust/prom need some changes/features exposed to users, yet we still want to communicate a more desired standard nature if we would use summaries somewhere
- Update dependencies and adapt code accordingly
- Fix formatting and notes in README.md
- Ignore "RUSTSEC-2020-0056: stdweb is unmaintained" (#11)
- Ignore aes related audits until upstream dependencies have been updated
- Ignore "RUSTSEC-2021-0059:
aesni
has been merged into theaes
crate" - Ignore "RUSTSEC-2021-0060:
aes-soft
has been merged into theaes
crate"
- Ignore "RUSTSEC-2021-0059:
- Use cargo audit directly, as
actions-rs/audit-check
does not support ignore option
0.7.0 - 2021-04-03
-
middleware for metrics (
OpenTelemetryMetricsMiddleware
)Simplest example to get it up and running:
// setup app.with(opentelemetry_tide::OpenTelemetryMetricsMiddleware::new(None)); // the rest
Note: it will respond to
/metrics
in the same app. This routes is currently hardcoded. If that clashes for you, please open an issue or send me a PR with a change. -
tide::Server trait extension
TideExt
to set up middlewares more conveniently:use opentelemetry_tide::TideExt; // for tracing only app.with_tracing_middleware(tracer); // for metrics only app.with_metrics_middleware(None); // using both together app.with_middlewares(tracer, None);
If you use
.with_middlewares
, keep in mind that the order is trace -> metrics, so that the tracing middleware can also observe and trace calls to the/metrics
route. If that is an undesired behaviour and/or you want this configurable, please open an issue or send me a PR with a change. Also the method names are open for debate, but I wouldn't expect people to use many extensions, or that tide would add those names anytime soon. -
feature flags
trace
,metrics
, andfull
, with "full" being the default. If you want to scope it down, use[dependencies] opentelemetry-tide = { version = "0.7", default-features = false, features = ["trace"]
for example.
-
Update dependencies and adapt code accordingly
This is a breaking change! Most notably: The "uninstall" guard is gone; see examples for how to do it with current otel crates.
- "Fix" the issue with examples' shared module
- Improve the example code (move more setup and config to shared module)
- Adds k6.io script and .envrc sample for load testing purposes
- Generate readme from crate documentation and a template (using
cargo-readme
)
- Update dependencies (tide 0.16)
- Use auto merge action for dependabot (patch level updates)
0.6.1 - 2021-01-26
- Dependabot v2 configuration
- Update dependencies (#3)
- Include "The opentelemetry-tide Contributors" in the authors list of the crate
0.6.0 - 2021-01-13
- Changelog with basic historical summaries
-
Middleware takes the uninstall guard to support different setup styles and ensures the provider lives long enough.
Example for an alternative tracing middleware init in this PR comment.
-
dependency updates and adjustment of code and example
0.5.2 - 2020-12-16
- This patch release fixes an issue around missing PROFILE env var. (#3)
(untagged crates.io release)
0.5.0 - 2020-12-04
- Align span data with specification
- Internal improvements
- CI setup improvements
(skipped)
0.3.1 - 2020-08-02
- doctests
0.3.0 - 2020-08-02
(not released to crates.io)
0.2.0 - 2020-08-01
- Readme polishing
- Project cleanups
0.1.0 - 2020-08-01
Initial release