|
1 | 1 | ## Changelog |
2 | 2 |
|
| 3 | +### v0.45.0 - March 2nd 2026 |
| 4 | + |
| 5 | +- Prometheus and Prometheus RemoteWrite outputs: |
| 6 | + |
| 7 | + - When converting values to labels, duplicate label names are now resolved by prepending parent path elements until uniqueness is achieved, preventing metrics from being dropped. |
| 8 | + |
| 9 | +- Get/Set commands: |
| 10 | + |
| 11 | + - Custom gNMI extensions can be included in requests via `--registered-extensions` and a JSON payload; use `--proto-dir` and `--proto-file` to specify the extension Protobuf definitions. |
| 12 | + |
| 13 | +- Formatters: |
| 14 | + |
| 15 | + - JSON output no longer escapes HTML characters (`<`, `>`, `&`), producing more readable output for values such as path prefixes containing `->`. |
| 16 | + |
| 17 | +- Outputs: |
| 18 | + |
| 19 | + - OTLP: Implemented dynamic config via `Update()` and `UpdateProcessor()`, configurable Resource vs DataPoint level attributes, support for multiple metrics per gNMI message, and include gNMIc version in OTLP resource scope. |
| 20 | + |
| 21 | +- Target: |
| 22 | + |
| 23 | + - Target last error is now reflected in a consistent way across collector state and API responses. |
| 24 | + |
| 25 | +- gNMI API: |
| 26 | + |
| 27 | + - Improved error formatting and added tests for the `pkg/api` package. |
| 28 | + |
| 29 | +- Performance: |
| 30 | + |
| 31 | + - Pool bytes buffers and strings builders where it makes sense to reduce allocations. |
| 32 | + |
| 33 | +- Dependencies: |
| 34 | + |
| 35 | + - Bumped `github.com/cloudflare/circl` from 1.6.1 to 1.6.3. |
| 36 | + - Bumped `github.com/go-git/go-git/v5` from 5.13.0 to 5.16.5. |
| 37 | + - Bumped `go.opentelemetry.io/otel/sdk` from 1.38.0 to 1.40.0. |
| 38 | + |
3 | 39 | ### v0.44.0 - February 17th 2026 |
4 | 40 |
|
5 | | -- gNMI Extension: |
| 41 | +- gNMI Extensions: |
6 | 42 |
|
7 | | - - gNMI extension are not parsed and properly displayed given the corresponding Protobuf files |
| 43 | + - gNMI extensions in get, set, and subscribe responses are now parsed and displayed as JSON when using `--proto-dir`, `--proto-file`, and `--registered-extensions` with the corresponding Protobuf files. |
8 | 44 |
|
9 | 45 | - Collector mode: |
10 | 46 |
|
11 | 47 | - Collector mode now stores Targets state (gNMI connection and subscription(s) state) in a separate store. |
12 | 48 |
|
13 | 49 | - Collector mode supports an SSE endpoint streaming config and state for any object (Target, subscription, outputs, etc.) |
14 | 50 |
|
15 | | -- Target |
| 51 | +- Target: |
16 | 52 |
|
17 | | - - Multiple gRPC level config knobs can now be set per target: gRPC read/write buffer, gRPC window size,... |
| 53 | + - Multiple gRPC level config knobs can now be set per target: gRPC read/write buffer, gRPC window size, and other dial options. Configuration is documented in the target configuration reference. |
18 | 54 |
|
19 | 55 | ### v0.43.0 - February 1st 2026 |
20 | 56 |
|
|
23 | 59 | - Jetstream: |
24 | 60 | - Added support for configuring `max-ack-pending` to limit the maximum number of unacknowledged messages on a NATS JetStream input. |
25 | 61 | - DeliverPolicy and AckPolicy are now fully configurable for greater flexibility and control. |
| 62 | + - Added NATS JetStream workqueue retention pattern support for exactly-once message processing in task distribution scenarios. |
| 63 | + |
| 64 | +- Outputs: |
| 65 | + |
| 66 | + - Jetstream: |
| 67 | + - Added `retention-policy` configuration option with support for `limits` (default) and `workqueue` retention policies. |
| 68 | + - Stream existence verification with detailed logging; omit `create-stream` to use existing streams. |
| 69 | + |
| 70 | + - Introduced support for OpenTelemetry Protocol (OTLP) as an output destination, enabling direct export of telemetry data to OTLP-compatible backends with full metric conversion (gauges, counters, histograms) and custom resource attributes. |
26 | 71 |
|
27 | 72 | - Commands: |
28 | 73 |
|
29 | 74 | - Added the new `collector` command: Runs gNMIc in collector mode, enabling dynamic, live updates to all configuration objects including targets, subscriptions, outputs, inputs, and processors. Unlike the `subscribe` command, the `collector` command supports on-the-fly configuration changes via the REST API, without requiring a restart. gNMIc automatically reconciles changes to maintain the desired state. |
30 | 75 |
|
31 | 76 | - The `collector` command also includes a suite of subcommands, allowing you to configure the gNMIc collector directly from the CLI. |
32 | 77 |
|
33 | | -- Outputs: |
| 78 | +- Formatters: |
| 79 | + |
| 80 | + - Flat format: Fixed leading slash handling when origin is not included in prefix or prefix is non-existent, ensuring consistent path formatting across all notification types. |
| 81 | + |
| 82 | +- Processors: |
| 83 | + |
| 84 | + - `event_group_by` processor now correctly handles delete events. |
34 | 85 |
|
35 | | - - Introduced support for OpenTelemetry as an output destination, enabling seamless integration with observability platforms. |
| 86 | +- API: |
36 | 87 |
|
| 88 | + - Fixed the API path to patch subscriptions for a target ID. |
| 89 | + |
| 90 | +- Target: |
| 91 | + |
| 92 | + - When a target is removed, it is now also removed from the configuration. |
| 93 | + |
| 94 | +- Dependencies: |
| 95 | + |
| 96 | + - Fixed `gnmic/pkg/api` module version mismatch in go.mod for consumers building gNMIc as a dependency. |
| 97 | + - Bumped `golang.org/x/crypto` to v0.45.0. |
37 | 98 |
|
38 | 99 | ### v0.42.0 - September 19th 2025 |
39 | 100 |
|
40 | 101 | - Inputs: |
41 | 102 |
|
42 | 103 | - Add support for NATS Jetstream input type. |
43 | 104 |
|
| 105 | + - Kafka: Fixed event parsing when `eventMsg` was not initialized, preventing nil pointer dereference. |
| 106 | + |
44 | 107 | - Loader: |
45 | 108 |
|
46 | | - - Loaded targets subscribe requests are now subject the `subscribe-backoff` timer. |
47 | | - - Loaded target configuration now supports ENV variables when `expand-env` is set to true. |
| 109 | + - Loaded targets subscribe requests are now subject to the `subscribe-backoff` timer when new targets are added via loaders (HTTP, file, etc.) or config change events. |
| 110 | + |
| 111 | + - Loaded target configuration now supports environment variable expansion when `expand-env` is set to true, enabling per-target credentials via env vars. |
| 112 | + |
| 113 | + - Consul loader: Fixed tag matching logic to allow services with extra metadata tags (subset matching); services with required tags plus additional tags are no longer incorrectly rejected. |
| 114 | + |
| 115 | + - Consul loader: Improved Go template parsing for target name and event-tags. |
| 116 | + |
| 117 | + - HTTP loader: Various fixes and added tests (fixes #712). |
| 118 | + |
| 119 | +- Outputs: |
| 120 | + |
| 121 | + - Kafka: Fixed missing label in error metric that could cause panics when error reason was unavailable. |
48 | 122 |
|
49 | 123 | - gNMI server: |
50 | 124 |
|
51 | | - - The unary RPCs timeout is now configurable. |
| 125 | + - The unary RPCs timeout is now configurable via `gnmi-server.timeout` in the config (default remains 2 minutes). |
| 126 | + |
| 127 | +- Get command: |
| 128 | + |
| 129 | + - Added optional organization and version for model selection: prepend `/` for organization, append `:` for version when specifying models. |
| 130 | + |
| 131 | +- Subscribe: |
| 132 | + |
| 133 | + - Fixed `sync_response` output being suppressed for ONCE mode subscriptions; behavior now matches STREAM mode. |
52 | 134 |
|
53 | 135 | - Targets: |
54 | 136 |
|
55 | | - - A new internal prometheus metric was added `gnmic_target_connection_state`. It reflect the gRPC client connection state with values: 0(UNKNOWN), 1 (IDLE), 2 (CONNECTING), 3 (READY), 4 (TRANSIENT_FAILURE), or 5 (SHUTDOWN). |
56 | | - |
| 137 | + - A new internal Prometheus metric `gnmic_target_connection_state` reflects the gRPC client connection state with values: 0 (UNKNOWN), 1 (IDLE), 2 (CONNECTING), 3 (READY), 4 (TRANSIENT_FAILURE), or 5 (SHUTDOWN). The `target_up` metric now correctly reflects connection failures (e.g., auth issues). |
| 138 | + |
| 139 | +- Bug fixes: |
| 140 | + |
| 141 | + - Fixed memory leak when subscription fails: `cancel()` reference was kept alive indefinitely. |
| 142 | + |
| 143 | + - Fixed OS environment variable values being incorrectly lowercased (fixes #663). |
| 144 | + |
| 145 | +- API: |
| 146 | + |
| 147 | + - Documentation updated for `POST /api/v1/config/targets` to reflect that the `name` field is required for proper target identification. |
| 148 | + |
| 149 | +- Dependencies: |
| 150 | + |
| 151 | + - Bumped `golang.org/x/crypto` to v0.41.0. |
| 152 | + - Bumped `golang.org/x/oauth2` to v0.31.0. |
| 153 | + |
57 | 154 | ### v0.41.0 - April 6th 2025 |
58 | 155 |
|
59 | 156 | - Processors: |
60 | 157 |
|
61 | | - - Added `event-time-epoch` processor, enabling converting string-based time values into epoch timestamps |
| 158 | + - Added `event-time-epoch` processor, enabling converting string-based time values into epoch timestamps. |
| 159 | + |
| 160 | + - Fixed `ieeefloat32` processor for correct handling of binary IEEE float32 values. |
62 | 161 |
|
63 | 162 | - Target Discovery: |
64 | 163 |
|
65 | | - - Consul loader: Adds the ability to use Go Templates on Consul targets to set target name as well as event-tags |
| 164 | + - Consul loader: Adds the ability to use Go Templates on Consul targets to set target name as well as event-tags (e.g., `target-name`, `target-tags` with `{{.Meta.*}}`). |
| 165 | + |
| 166 | +- Loader: |
| 167 | + |
| 168 | + - When a target configuration changes, loaders now generate delete and add actions so the subscription is restarted to apply the new parameters (fixes #563). |
| 169 | + |
| 170 | +- Outputs: |
| 171 | + |
| 172 | + - Messages are now exported to outputs in sequence to avoid sync responses being sent before initial notifications (fixes #612). |
| 173 | + |
| 174 | + - Output internal metrics are now registered only once, preventing duplicate registration errors (fixes #586). |
| 175 | + |
| 176 | +- Path generation: |
| 177 | + |
| 178 | + - Fixed xpath generation with prefix: module prefix is now replaced with module name when generating xpaths (fixes #633). |
| 179 | + |
| 180 | +- Targets: |
| 181 | + |
| 182 | + - `target_up` metric now resets before creating metrics so deleted targets (e.g., via Consul) no longer show as still up (fixes #604). |
| 183 | + |
| 184 | +- Dependencies: |
| 185 | + |
| 186 | + - Bumped `github.com/golang/glog` to v1.2.4. |
66 | 187 |
|
67 | 188 | ### v0.40.0 - January 27th 2025 |
68 | 189 |
|
|
0 commit comments