-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathChangeLog
More file actions
125 lines (109 loc) · 6.72 KB
/
Copy pathChangeLog
File metadata and controls
125 lines (109 loc) · 6.72 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
ChangeLog
=========
Release notes are grouped by the filter version. Entries summarise individual
commits, with directly related commits folded into a single bullet, and the
git log keeps the full descriptions.
Version 2.0.0 (2026-07-20)
--------------------------
Requires the OTel C wrapper version 3.0.0 and adapts the filter to its library
context API; the filter no longer compiles against the 2.x wrapper releases.
Several filter instances, each holding its own library context, now operate
simultaneously in one HAProxy process, and the old single active configuration
limitation is gone.
The 'config' keyword takes an optional signals context name that selects one
of the named contexts of the YAML configuration, and the filter line takes an
optional section name so filters with distinct ids can share one section of
the OTel configuration file. The tracer, meter and logger are created only
for the signals the YAML document provides: an absent signal section is skipped,
the legacy flat layout and the 'default' fallback get a warning, and a context
name that matches nothing fails the startup.
The benchmarks moved to HAProxy's haterm dummy server as the default backend
and all speed-test results were re-collected at saturating load; the speed test
now also preserves each level's filter CLI state in a per-level HAProxy runner
log.
* MINOR: Adapted the filter to the OTel C wrapper 3.0.0 API: the library
context threads through init, create, statistics and deinit, the CLI
keywords register once per process, and the YAML configuration closes
after the per-thread start.
* MINOR: Added the optional signals context argument to the 'config'
keyword and wrapped the test YAML signals under a 'default' context.
* MINOR: Added haterm as the default speed-test backend behind a new '-b'
option, with the wrk load parameters set per backend type.
* DOC: Published the haterm-collected benchmark results for every test
configuration, together with the test system specification.
* MINOR: Created only the signals the YAML configuration provides; the
span, instrument and log-record processors report an unconfigured
signal instead of dereferencing a NULL handle.
* MINOR: Added the optional section name argument to the filter line,
shown by the CLI status next to the configuration file name.
* MINOR: Dumped the 'flt-otel scopes', 'flt-otel instruments' and
'flt-otel status' CLI output into the per-level runner log before each
HAProxy stop; the runners take the log file as a third argument.
* VERSION: Bumped the filter version to 2.0.0.
Version 1.0.0 (initial release, 2026-01-27 .. 2026-07-15)
---------------------------------------------------------
Initial public release of the HAProxy OpenTelemetry filter, a stream filter
that emits traces, metrics and logs from HAProxy through the OpenTelemetry C
wrapper library. A section-based configuration file defines the telemetry model
(scopes, groups, spans, metric instruments and log records driven by stream
events), while a YAML file configures the SDK pipeline. The filter runs on
HTTP and TCP proxies, samples streams through a rate limit, propagates span
contexts over the HTTP headers or HAProxy variables, and is managed at runtime
through the CLI. Requires the OTel C wrapper version 2.2.1 and HAProxy 3.4
or later.
Filter
* MEDIUM: Built the filter core: the skeleton, the configuration and
utility layer, the section parser with its event model and post-parse
checks, the memory pools, the runtime scope layer, and the filter
callbacks with the event dispatcher.
* MEDIUM: Wired the OTel C wrapper integration and the scope execution
with span management; the SDK starts once through an atomic claim.
* MEDIUM: Added span context propagation through carrier interfaces, over
HTTP headers or HAProxy variables, with prefix-based variable scanning
and an automatic inject context name.
* MEDIUM: Added the group action for rule-based scope execution from the
HAProxy TCP/HTTP rules.
* MEDIUM: Extended tracing to TCP-mode proxies, counting the forwarded
payload through the otel.bytes_in and otel.bytes_out sample fetches.
* MEDIUM: Logged runtime errors and warnings per instance, edge-triggered
and rate-limited, so a recurring fault does not flood syslog.
* MINOR: Added span links with attributes, the span 'kind', per-event
timestamps, exceptions, and several conditional status lines per span.
* MINOR: Added the metric instruments (counter, histogram, up-down
counter and gauge) with the create/update value-binding model.
* MINOR: Added the log-record signal with severities, an explicit 'time'
option and the wall-clock observed time.
* MINOR: Bound the keyword values to sample expressions with log-format
support across attributes, instruments and log records.
* MINOR: Gated the scope directives on an optional if/unless condition
through a shared helper.
* MINOR: Added the set-var, set-var-ctx and unset-var scope directives
and the by-name variable helpers.
* MINOR: Added the 'otel-stop' keyword, the on-http-tarpit-request scope
event, the idle-timeout handling and the 'otel.context' sample fetch.
* MINOR: Added the CLI management commands: enable/disable, error modes,
rate limit, logging, reset-errors, flush, and the status, instruments
and scopes introspection built on a column-oriented table builder that
shows the export-pipeline state.
* MINOR: Validated the configuration at load: fetch and condition
validity at the scope's event, location checks for scopes and group
actions, and warnings for the documented limitations.
* BUG: Hardened the runtime paths: the idle timer no longer clobbers the
stream analyse timeout and runs off the stream task expiry, injection
failures do not leak, header removal and variable registration
tolerate NULL, and the string buffers are bounds-checked.
Build
* BUILD: Built as a standalone addon: the Makefile.mk fragment plugs
into the HAProxy build through EXTRA_MAKE, with OTEL_STATIC for static
linking, a clean-target hook and a .gitignore.
Tests and documentation
* MINOR: Added the test and benchmark suite: the per-configuration
runners unified into one symlinked script, the speed-test harness with
option parsing and system CPU sampling, the OTLP/HTTP recorder and
replay helpers, and the sa, full, cmp, ctx, fe/be, tcp, updown, err
and empty configurations.
* DOC: Added the manuals: the README, the configuration guide, the
implementation review, the design patterns document, the README.md
overview and the test guides with benchmark results; documented the
best-effort delivery and the single-filter-instance limitation.
* DOC: Required the OTel C wrapper version 2.2.1.