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-
64AxoSyslog is binary-compatible with syslog-ng [ 1] and serves as a drop-in replacement.
75
86We 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
1210Check 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
17396We 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
0 commit comments