Skip to content

Commit 07c93a4

Browse files
github-actions[bot]MrAnno
authored andcommitted
NEWS: v4.21.0
Signed-off-by: László Várady <laszlo.varady@axoflow.com>
1 parent c60e3e8 commit 07c93a4

File tree

4 files changed

+46
-159
lines changed

4 files changed

+46
-159
lines changed

NEWS.md

Lines changed: 46 additions & 123 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
1-
4.20.1
1+
4.21.0
22
======
33

4-
_This is a hotfix release that fixes a rare metric race condition causing a reload time crash._
5-
64
AxoSyslog is binary-compatible with syslog-ng [1] and serves as a drop-in replacement.
75

86
We provide [cloud-ready container images](https://github.com/axoflow/axosyslog/#container-images) and Helm charts.
@@ -11,147 +9,72 @@ Packages are available in our [APT](https://github.com/axoflow/axosyslog/#deb-pa
119

1210
Check out the [AxoSyslog documentation](https://axoflow.com/docs/axosyslog-core/) for all the details.
1311

14-
1512
## Features
1613

17-
* Added new metrics
18-
19-
* `syslogng_window_capacity` and `syslogng_window_available` on `stats(level(3))`.
20-
* Shows the `log-iw-size()` value and the current state of the source window, respectively.
21-
* `syslogng_window_full_total`
22-
* Tracks how many times the window was completely full. This counter will
23-
increase any time the destination causes the source to be throttled.
24-
* `syslogng_memory_queue_processed_events_total` and `syslogng_disk_queue_processed_events_total`
25-
* Counts the number of events processed since startup by each queue.
26-
* `syslogng_output_batch_size_...`, `syslogng_output_event_size_...`, `syslogng_output_request_latency_...`
27-
* histogram style metrics for `http()`, `otel()` and other threaded destinations
28-
29-
([#823](https://github.com/axoflow/axosyslog/pull/823))
30-
([#824](https://github.com/axoflow/axosyslog/pull/824))
31-
([#845](https://github.com/axoflow/axosyslog/pull/845))
32-
33-
* `clickhouse()` destination: Added JSONCompactEachRow format and new `format` directive
34-
35-
This update enhances the ClickHouse destination by adding support for the `JSONCompactEachRow`
36-
format and introducing a new `format` directive for explicitly selecting the data format.
37-
38-
**Background**
39-
Previously, the destination supported:
40-
- `Protobuf` (default when using `proto-var`)
41-
- `JSONEachRow` (default when using `json-var`)
42-
43-
These defaults remain unchanged.
44-
45-
**What’s new**
46-
- Added support for `JSONCompactEachRow` — a more compact, array-based JSON representation (used with `json-var`).
47-
- Introduced the `format` directive, allowing manual selection of the desired format:
48-
- `JSONEachRow`
49-
- `JSONCompactEachRow`
50-
- `Protobuf`
51-
52-
**Example**
53-
```hcl
54-
destination {
55-
clickhouse (
56-
...
57-
json-var(json("$my_filterx_json_var"))
58-
format("JSONCompactEachRow")
59-
...
60-
);
61-
};
62-
```
63-
64-
**JSONEachRow (each JSON object per line, more readable):**
65-
66-
```
67-
{"id":1,"name":"foo","value":42}
68-
{"id":2,"name":"bar","value":17}
69-
```
70-
71-
**JSONCompactEachRow (compact array-based row representation):**
72-
73-
```
74-
[1,"foo",42]
75-
[2,"bar",17]
76-
```
77-
78-
**Validation and error handling**
14+
* `format_syslog_5424()`: Added new FilterX function for syslog formatting
7915

80-
**Invalid format values now produce:**
16+
Usage:
8117
```
82-
Error parsing within destination: invalid format value 'invalid format', possible values:[JSONEachRow, JSONCompactEachRow, Protobuf]
18+
format_syslog_5424(
19+
message,
20+
add_octet_count=false,
21+
pri=expr,
22+
timestamp=expr,
23+
host=expr,
24+
program=expr,
25+
pid=expr,
26+
msgid=expr
27+
)
8328
```
8429
85-
**If the data’s actual format doesn’t match the selected format, ClickHouse returns:**
86-
```
87-
CANNOT_PARSE_INPUT_ASSERTION_FAILED
88-
```
89-
([#828](https://github.com/axoflow/axosyslog/pull/828))
90-
91-
* `opentelemetry()` source: Added `keep-alive()` option
30+
`message` is the only mandatory argument.
9231
93-
With this new option, client connections can be kept alive during reload,
94-
avoiding unnecessary retry backoffs and other error messages on the client
95-
side.
32+
Fallback values will be used instead of the named arguments
33+
if they are not set, or their evaluation fails.
34+
([#875](https://github.com/axoflow/axosyslog/pull/875))
9635
97-
The default is `yes`.
36+
* `http()` and other threaded destinations: add `worker-partition-autoscaling(yes)`
9837
99-
([#832](https://github.com/axoflow/axosyslog/pull/832))
38+
When `worker-partition-key()` is used to categorize messages into different batches,
39+
the messages are - by default - hashed into workers, which prevents them from being distributed across workers
40+
efficiently, based on load.
10041
101-
* `s3()` destination: Added new `object_key_suffix()` option
42+
The new `worker-partition-autoscaling(yes)` option uses a 1-minute statistic to help distribute
43+
high-traffic partitions among multiple workers, allowing each worker to maximize its batch size.
10244
103-
The default suffix is an empty string, to ensure backward compatibility.
104-
([#797](https://github.com/axoflow/axosyslog/pull/797))
45+
When using this autoscaling option, it is recommended to oversize the number of workers: set it higher than the
46+
expected number of partitions.
47+
([#855](https://github.com/axoflow/axosyslog/pull/855))
10548
106-
* `http()` and other threaded destinations: add `worker-partition-buckets()` option
49+
* `network()`: add `transport(nul-terminated)` to support NULL characters to separate log records instead of the
50+
more traditional newline separated format
51+
([#867](https://github.com/axoflow/axosyslog/pull/867))
10752
108-
This allows the same `worker-partition-key()` to use multiple worker threads.
109-
([#852](https://github.com/axoflow/axosyslog/pull/852))
53+
* New metrics: `syslogng_output_workers` and `syslogng_output_active_worker_partitions`
11054
55+
Using the new `worker-partition-autoscaling(yes)` option allows producing partition metrics, which can be used
56+
for alerting: if the number of active partitions remains higher than the configured number of workers,
57+
it may indicate that events are not being batched properly, which can lead to performance degradation.
58+
([#866](https://github.com/axoflow/axosyslog/pull/866))
11159
11260
## Bugfixes
11361
114-
* `metrics`: Fixed a rare race condition in dynamic metrics.
115-
([#858](https://github.com/axoflow/axosyslog/pull/858))
116-
117-
* `filterx`: Fixed various memory leaks
118-
([#829](https://github.com/axoflow/axosyslog/pull/829))
119-
([#836](https://github.com/axoflow/axosyslog/pull/836))
120-
([#842](https://github.com/axoflow/axosyslog/pull/842))
121-
122-
* `filterx`: Fixed a variable synchronization bug.
123-
([#849](https://github.com/axoflow/axosyslog/pull/849))
124-
125-
* `filterx` `otel_logrecord()`: Fixed not clearing `body` before setting dict and array values.
126-
([#835](https://github.com/axoflow/axosyslog/pull/835))
127-
128-
* Fixed `keep-alive()` during config reload revert
129-
([#831](https://github.com/axoflow/axosyslog/pull/831))
130-
131-
* `http()` destination: Fixed batch partitioning in case of templated `body-prefix()`
132-
([#843](https://github.com/axoflow/axosyslog/pull/843))
133-
134-
* `s3`: Bugfixes and general stability improvements for the `s3` destination driver
135-
136-
* Fixed a major bug causing data loss if multithreaded upload was enabled via the `upload-threads` option.
137-
* Fixed a bug where in certain conditions finished object buffers would fail to upload.
138-
* Fixed a bug, where empty chunks were being uploaded, causing errors.
139-
140-
([#797](https://github.com/axoflow/axosyslog/pull/797))
141-
([#846](https://github.com/axoflow/axosyslog/pull/846))
142-
143-
* `filterx`: fix potential use-after-free crashes
144-
([#854](https://github.com/axoflow/axosyslog/pull/854))
62+
* FilterX `parse_csv()`: fix crash
63+
([#879](https://github.com/axoflow/axosyslog/pull/879))
14564
146-
* `disk-buffer()`: fix memory leak when `worker-partition-key()` and `disk-buffer()` are used together
147-
([#853](https://github.com/axoflow/axosyslog/pull/853))
65+
* FilterX `metrics_labels()`: fix `+=` operator
66+
([#878](https://github.com/axoflow/axosyslog/pull/878))
14867
68+
* `disk-buffer()`: fix memory leaks
69+
([#872](https://github.com/axoflow/axosyslog/pull/872))
14970
15071
## Other changes
15172
152-
* Improved reload time for large configurations.
153-
([#844](https://github.com/axoflow/axosyslog/pull/844))
73+
* `disk-buffer()`: significant performance improvements for the non-reliable disk buffer
74+
([#857](https://github.com/axoflow/axosyslog/pull/857))
15475
76+
* Performance improvements for memory queues
77+
([#881](https://github.com/axoflow/axosyslog/pull/881))
15578
15679
[1] syslog-ng is a trademark of One Identity.
15780
@@ -172,5 +95,5 @@ of AxoSyslog, contribute.
17295
17396
We would like to thank the following people for their contribution:
17497
175-
Andras Mitzki, Attila Szakacs, Balazs Scheidler, Bálint Horváth,
176-
László Várady, Szilard Parrag, Tamás Kosztyu, shifter
98+
Andras Mitzki, Attila Szakacs, Balazs Scheidler, László Várady, Szilard Parrag,
99+
Tamás Kosztyu, shifter

news/feature-855.md

Lines changed: 0 additions & 11 deletions
This file was deleted.

news/feature-866.md

Lines changed: 0 additions & 5 deletions
This file was deleted.

news/feature-875.md

Lines changed: 0 additions & 20 deletions
This file was deleted.

0 commit comments

Comments
 (0)