Skip to content

Commit c9f6b4b

Browse files
patrickmannclaude
andcommitted
Merge branch 'master' into search-cluster-health-reporters
Resolves the conflict in ClusterAdapterOSTest.java: master #26836 added the testManagerEligibleNodesCount test at the same slot where this branch added nodesStatsParsesPerNodeCpuAndHeapPercent. Independent tests; kept both (their production targets nodesStats()/countOfClusterManagerEligibleNodes() both survive the auto-merge). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2 parents 7fd576c + d181670 commit c9f6b4b

346 files changed

Lines changed: 10815 additions & 3065 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/dependabot.yml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,17 @@ updates:
1919
- dependency-name: "org.opensearch:opensearch-core"
2020
- dependency-name: "org.opensearch.client:opensearch-java"
2121
groups:
22+
# The Google API client libraries are released in lockstep, so bumping
23+
# them individually almost always trips the requireUpperBoundDeps
24+
# enforcer rule. Deliberately excludes io.grpc and com.google.protobuf,
25+
# which are on separate release trains.
26+
google-api-libraries:
27+
patterns:
28+
- "com.google.api:*"
29+
- "com.google.api.grpc:*"
30+
- "com.google.auth:*"
31+
- "com.google.cloud:*"
32+
- "com.google.http-client:*"
2233
openrewrite:
2334
patterns:
2435
- "org.openrewrite:*"

UPGRADING.md

Lines changed: 119 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,47 @@ message's accounted size, regardless of whether the restore counted against the
3636
This field is informational and is not used to compute license usage, so your license consumption is
3737
unaffected by the change.
3838

39+
### Changed parsing for Okta Log Events `securityContext.userBehaviors` field
40+
41+
Due to a [bug in the Okta SDK](https://github.com/okta/okta-sdk-java/issues/1689), a workaround was introduced in 7.1
42+
to stringify the objects in the `securityContext.userBehaviors` array in logs pulled in from the `Okta Log Events` input. The
43+
updated SDK now properly serializes that field as an array of objects and the workaround has been removed. Custom parsing
44+
on `Okta Log Events` messages that is expecting the `securityContext.userBehaviors` field to be an array of
45+
strings will need to be modified to expect an array of objects, per the Okta API. An example of the serialization across
46+
versions:
47+
48+
7.1:
49+
```json
50+
{
51+
"securityContext": {
52+
"userBehaviors": [
53+
"{\"name\":\"New City\",\"id\":\"bbbbbbbbbbbbbbbbbbbb\",\"result\":\"NEGATIVE\"}",
54+
"{\"name\":\"New Country\",\"id\":\"aaaaaaaaaaaaaaaaaaaa\",\"result\":\"NEGATIVE\"}"
55+
]
56+
}
57+
}
58+
```
59+
60+
7.2:
61+
```json
62+
{
63+
"securityContext": {
64+
"userBehaviors": [
65+
{
66+
"name": "New City",
67+
"id": "bbbbbbbbbbbbbbbbbbbb",
68+
"result": "NEGATIVE"
69+
},
70+
{
71+
"name": "New Country",
72+
"id": "aaaaaaaaaaaaaaaaaaaa",
73+
"result": "NEGATIVE"
74+
}
75+
]
76+
}
77+
}
78+
```
79+
3980
## Web Interface Changes
4081

4182
### Event Definition "Fields" step renamed to "Additional Details"
@@ -54,6 +95,19 @@ old value may be removed in a future version.
5495
|---------------------------------------------------------------------------|-------------|
5596
| `org.graylog2.contentpacks.facades.EntityWithExcerptFacade#resolveGrants` | removed |
5697

98+
## Plugin Builds: New `requireUpperBoundDeps` Maven Enforcer Rule
99+
100+
Plugin builds inheriting from the `graylog-plugin-parent` or `graylog-plugin-web-parent` Maven parent
101+
POM now run the
102+
[`requireUpperBoundDeps`](https://maven.apache.org/enforcer/enforcer-rules/requireUpperBoundDeps.html)
103+
enforcer rule. It fails the build when a transitive dependency resolves to a *lower* version than
104+
another of the plugin's dependencies requires.
105+
106+
Such conflicts can usually be fixed by updating the outdated dependency, or by adding a
107+
`<dependencyManagement>` entry for the flagged artifact using the highest required version shown in
108+
the error message. Plugin authors who are unable to align their dependencies can override the
109+
`enforce-versions` execution of the `maven-enforcer-plugin` in their own POM.
110+
57111
## Sigma Rules Folded into Event Definitions
58112

59113
Prior to 7.2, Sigma rules were first order entities that could be managed directly. Each rule was also
@@ -73,6 +127,24 @@ definition can be created after the rules are imported to create the same tempor
73127
All previously imported Sigma rules, including correlation rules, will be migrated to the new Event Definition pattern
74128
on upgrade and work as they did before.
75129

130+
Two additional changes to fired events result from this rework:
131+
132+
- The `sigma_rule_tag_*` fields are no longer added to fired events. Previously, fired events included
133+
`sigma_rule_tag_1`, `sigma_rule_tag_2`, etc. in their Additional Fields. MITRE information recognized by Graylog is
134+
now stored on the Event Definition as `tactics_techniques`, and any other tag values are moved to a dedicated `tags`
135+
field. Both `tactics_techniques` and `tags` are multi-valued (array) fields, unlike the individual
136+
`sigma_rule_tag_N` fields they replace. If you rely on the `sigma_rule_tag_*` fields in summary templates,
137+
notification bodies, or downstream processing, you will need to update those references.
138+
- The `Sigma: ` prefix is no longer added to fired event titles. Events already stored in the index keep their
139+
original title, but newly fired events will not include the prefix.
140+
141+
For previously imported Sigma rules, the upgrade migration applies these changes to the Event Definitions
142+
automatically: each source Sigma rule's tag values are written onto its Event Definition (MITRE references into
143+
`tactics_techniques`, all other tags into `tags`), and the `Sigma: ` prefix is removed from the Event Definition
144+
title. You do not need to re-import or reconfigure your rules. Note that events already stored in the index are not
145+
rewritten — they keep the original `sigma_rule_tag_*` Additional Fields and titles they were fired with; the changes
146+
above apply to events fired after the upgrade.
147+
76148
The following REST API changes are a direct result of this rework:
77149

78150
| Endpoint | Description |
@@ -90,3 +162,50 @@ Definitions rather than from the previous Sigma rules. Every Event Definition wi
90162
assigned is now included, and coverage reflects how many of them are enabled versus disabled (with no log
91163
source check that was previously present for Sigma rules). Therefore, a tactic may show a higher or lower
92164
percentage than it did in 7.1, without any change to the actual installed Event Definitions.
165+
166+
## AWS Kinesis/CloudWatch Input: Single DynamoDB Table State Tracking
167+
168+
In Graylog 7.2, the AWS Kinesis/CloudWatch input has been upgraded to Kinesis Client Library (KCL) 3.5.
169+
The KCL stores its coordination state in DynamoDB. Previously, this used three tables per input: the lease table, plus separate
170+
`<application-name>-CoordinatorState` and `<application-name>-WorkerMetricStats` tables. The AWS KCL 3.5 introduced a
171+
single-table format that consolidates all of this into the lease table alone (each item is tagged with an
172+
`entityType` attribute). This reduces the number of DynamoDB tables and helps you stay under account-level table
173+
limits.
174+
175+
There are two things to know about how this applies to your inputs:
176+
177+
- **New inputs use the single-table format automatically.** This is the AWS KCL 3.5 default for a newly created
178+
consumer. A fresh input always uses a single lease table.
179+
- **Existing inputs keep their three-table layout** until you deliberately migrate them using the new
180+
"Migrate to single DynamoDB table for state tracking" input option.
181+
182+
To let you migrate existing inputs on your own schedule, the input's **edit page** exposes a
183+
**Migrate to single DynamoDB table for state tracking** option. This option is only relevant for inputs created before Graylog 7.2.
184+
Enabling it on such an input starts a one-way migration
185+
that consolidates the `-CoordinatorState` and `-WorkerMetricStats` entities into the input's lease table. Stream
186+
checkpoints are preserved, so ingestion should continue without replay or gaps.
187+
188+
### Migration steps for a Kinesis input that existed before Graylog 7.2
189+
190+
1. Upgrade to Graylog 7.2 and allow the input to start and run for one hour with the **Migrate to single DynamoDB
191+
table for state tracking** option off. KCL 3.5 requires the input to run steadily for a whole hour before it will
192+
accept the migration. This readiness period is fixed by KCL 3.5 and cannot be shortened.
193+
2. Before enabling the option, confirm the input is ready. In DynamoDB, open the input's coordinator-state table
194+
(`graylog-aws-plugin-<stream-name>-CoordinatorState`), find the `TableMigration3.5` item, and check its `tm`
195+
attribute. It must read `TABLE_MIGRATION_STATUS_DEPLOYED`. If it still reads `TABLE_MIGRATION_STATUS_INIT`, the
196+
readiness period has not elapsed yet; wait and re-check. Enabling the option before this point causes the input
197+
to fail to start.
198+
3. Enable the **Migrate to single DynamoDB table for state tracking** option on the input's edit page and save. The
199+
migration begins.
200+
4. Verify completion. KCL 3.5 bakes for 24 hours (the default) before finalizing. After that period, check the same
201+
`TableMigration3.5` item again; its `tm` attribute should read `TABLE_MIGRATION_STATUS_COMPLETE`. Once complete,
202+
the legacy `-CoordinatorState` and `-WorkerMetricStats` tables are no longer used and can be deleted.
203+
204+
The migration is **one-way and cannot be reverted once complete.** It is also not instantaneous, and AWS recommends
205+
monitoring the migration until it reaches completion.
206+
207+
For how to monitor the migration, along with the migration steps, required permissions, and how to remove the
208+
now-unused legacy tables afterward, see AWS's documentation:
209+
210+
- [Single table format for KCL](https://docs.aws.amazon.com/streams/latest/dev/kcl-single-table-format.html)
211+
- [Migrate from KCL 2.x to KCL 3.x](https://docs.aws.amazon.com/streams/latest/dev/kcl-migration-from-2-3.html)
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
type = "a"
2+
message = "Add optional store_full_message field to AWS Kinesis/CloudWatch input."
3+
4+
issues = ["Graylog2/graylog-plugin-enterprise#14362"]
5+
pulls = ["26820"]
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
type = "a"
2+
message = "The AWS Kinesis/CloudWatch input's Kinesis Client Library (KCL) is moving toward a single DynamoDB table for its coordination state instead of three. A new \"Single DynamoDB table state tracking\" option lets you migrate an existing input to that layout on your own schedule, via a one-way merge into its lease table."
3+
4+
issues = ["Graylog2/graylog-plugin-enterprise#14774"]
5+
pulls = ["26672"]
6+
7+
details.user = """
8+
New AWS Kinesis/CloudWatch inputs already use the single DynamoDB table format. Existing inputs on the older three-table layout can opt into a one-way migration to it. See `UPGRADING.md` for important details on the migration and table cleanup.
9+
"""
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
type = "fixed"
2+
message = "Fixed editing, excluding and removing search filters in event definitions when the filter is not saved in \"My Filters\"."
3+
4+
issues = ["Graylog2/graylog-plugin-enterprise#14990"]
5+
pulls = ["26866", "Graylog2/graylog-plugin-enterprise#15088"]
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
type = "changed"
2+
message = "Redirect to the content pack details page after a content pack is uploaded successfully."
3+
4+
issues = ["23797", "15802", "23431"]
5+
pulls = ["26754"]
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
type = "c"
2+
message = "Increase default Collector expiration threshold to 90 days."
3+
4+
issues = ["26044"]
5+
pulls = ["26740"]
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
type = "f"
2+
message = "Fixed a startup failure on hosts where the Graylog data directory is on a `noexec` filesystem, caused by the node CPU-load metric eagerly loading the OSHI/JNA native library during boot. The metric now initializes lazily and degrades gracefully instead of preventing the server from starting."
3+
4+
issues = ["26471"]
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
type = "s"
2+
message = "Enforce per-entity read permission on the event definition duplicate endpoint, preventing users from cloning event definitions they have not been granted access to."
3+
4+
pulls = ["26706"]
5+
issues = ["26590"]
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
type = "fixed"
2+
message = "Fixed metric columns in the Streams overview (message count, processing time) not showing data after being added to the view without a page reload."
3+
4+
issues = ["26724"]
5+
pulls = ["26824"]

0 commit comments

Comments
 (0)