Commit graph

998 commits

Author SHA1 Message Date
Tom Alexander
e3643ccfc0
chore: Add automatic api doc generation (#1397)
Fixes: HDX-2888
2025-11-21 21:14:02 +00:00
Tom Alexander
c1b45abfca
chore: stabilize flaky playwright tests (#1398)
There are two flaky tests that have been consistently flaky for a week. Making these tests more robust.
2025-11-21 19:58:05 +00:00
Drew Davis
a9f10c5ff9
feat: Add highlighted attributes to overview panel (#1395)
Closes HDX-2881

# Summary

This PR adds the row-level highlighted attributes to the row overview panel, so that they appear for the span that is selected in the trace waterfall and in an expanded table row:

<img width="1071" height="966" alt="Screenshot 2025-11-20 at 2 32 09 PM" src="https://github.com/user-attachments/assets/febb6c12-4c58-4eac-b085-cbad3601b2fe" />

<img width="814" height="275" alt="Screenshot 2025-11-20 at 2 32 16 PM" src="https://github.com/user-attachments/assets/b3c6fbeb-205e-4b6a-9dfd-5ed9457a57df" />

This PR also makes some small updates to the descriptions of the highlighted attributes in the source configuration form.
2025-11-20 21:30:20 +00:00
Brandon Pereira
70fe682bc4
add clickable alert timeline chips (#1394)
https://github.com/user-attachments/assets/02b1b518-e132-4560-9782-78d74326d0be

Fixes HDX-2674
2025-11-20 20:06:16 +00:00
Drew Davis
07392d236c
feat: Add clickpy_link to clickpy trace source attributes (#1392)
Closes HDX-2876

# Summary

This PR adds a highlighted trace attribute to the clickpy demo source which allows demo environment users to navigate to the clickpy dashboard which is associated with a trace.

The link appears:
<img width="1369" height="738" alt="Screenshot 2025-11-20 at 10 53 35 AM" src="https://github.com/user-attachments/assets/f353323a-9619-4ba8-a44a-586a0fafd748" />

The link navigates the user to the appropriate dashboard:
<img width="2307" height="806" alt="Screenshot 2025-11-20 at 10 53 43 AM" src="https://github.com/user-attachments/assets/5c10592d-9a8e-44fa-a2ac-d01230b77745" />
2025-11-20 16:28:03 +00:00
Tom Alexander
5b7d646f79
fix: date/timepicker issue with dates in the future (#1391)
Fixes: HDX-2852

If a user used the time picker and chose today, but with a time in the future, existing code would "infer" that and assume it was for an earlier year. Since the UI time picker doesnt allow users to select a _day_ in the future, we should be smart to parse down the time to match now()
2025-11-20 16:11:56 +00:00
Drew Davis
c8ec7fa9d6
fix: Hide table header when no columns are displayed (#1390)
Closes HDX-2874

# Summary

This PR hides the table header row when there are no displayed columns. This prevents a glitchy behavior where the table header icons would appear vertically aligned rather than in a horizontal row when loading the table data. This occurred because the table header was rendered with an empty, horizontally-skinny column header for the expand button column, and the icons were in that skinny column header.

I'd recommend reviewing with white space changes hidden - this is a very small change.

## Before

https://github.com/user-attachments/assets/fceb489b-d79d-40f8-99ba-d9e4c2c5ee27

## After

https://github.com/user-attachments/assets/3b382e08-43b7-49e4-81c6-45bb2aa00688
2025-11-20 16:00:01 +00:00
Brandon Pereira
e838436d20
improve alert precision to match the threshold value (#1387)
Users reported that the precision was way off to what the threshold value was, this helps ensure the two numbers have the same precision.

Before:
<img width="1280" height="363" alt="image" src="https://github.com/user-attachments/assets/fc1bc72c-a70e-4068-aa06-3a01d6c65b2b" />

After:
<img width="1446" height="618" alt="Screenshot 2025-11-19 at 4 20 38 PM" src="https://github.com/user-attachments/assets/49be78eb-dac9-49f4-b490-a354fb69fb71" />

**Note:** One thing that could be better is if we instead used the Number Format specified on the frontend, this would require us to move the Numbro dependency and logic into common-utils, and we would also probably want to update the alert value UI to also use numbro.. I can take a stab at this if we think it's better. I figured this was a good interim solution.


Fixes HDX-2847
2025-11-20 15:24:26 +00:00
Elizabet Oliveira
562dd7ea28
Fix minor UI issues (#1382) 2025-11-20 15:00:42 +00:00
Drew Davis
59422a1aba
feat: Add custom attributes for individual rows (#1379)
Closes HDX-2776
Closes HDX-2752

# Summary

This PR extends the custom attributes feature from #1356 to support custom attributes on individual rows (rather than entire traces). Further, attributes which are URLs are now rendered as links, supporting use-cases which require building custom external links from queried data.

## Demo

Source Configuration:

<img width="972" height="649" alt="Screenshot 2025-11-18 at 6 01 55 PM" src="https://github.com/user-attachments/assets/42e9cc95-d9e3-4155-8e25-58e4dcf0b787" />

Side panel:
<img width="1587" height="511" alt="Screenshot 2025-11-18 at 6 02 12 PM" src="https://github.com/user-attachments/assets/3a1d7683-eb79-4925-99fe-4e2d7cdad78f" />

Inferred link:
<img width="727" height="173" alt="Screenshot 2025-11-18 at 6 02 32 PM" src="https://github.com/user-attachments/assets/68f42f95-598c-4b30-b616-9556e32945bf" />


<details>
<summary>logview attribute definition</summary>

```sql
if(
  NOT empty(TraceId) AND NOT empty(SpanId) AND NOT empty(ServiceName),
  concat('https://logview.com?q=',
    'trace_id=', TraceId,
    '&span_id=', SpanId,
    '&service=', ServiceName,
    '&start_time=', formatDateTime(Timestamp - INTERVAL 1 SECOND, '%FT%T.%fZ'),
    '&end_time=', formatDateTime(Timestamp + Duration/1e9 + INTERVAL 1 SECOND, '%FT%T.%fZ')
  ),
  ''
)
```
</details>
2025-11-19 21:38:07 +00:00
Drew Davis
770276a162
feat: Add search to trace waterfall (#1377)
Closes HDX-2753
Closes HDX-2755
Closes HDX-2756

# Summary

This PR adds a search function for filtering spans and logs in the trace waterfall. Because the waterfall can consist of both spans and logs, from two different sources, there is one input per source. If the correlated log source is not available (ensuring there are no logs in the waterfall) then there is only one input.

The input persists in the query parameters so that the filtered side panel can be shared, and the parameters are cleared when the side panel closes. 

Currently, only Lucene is supported for searching.

This PR also adds a couple of minor improvements to the waterfall

1. There is now a count of spans and errors
2. There is now a span status in the waterfall tooltip 

## Demo


https://github.com/user-attachments/assets/fb623875-5811-4f7f-9f40-c0b34de1c541
2025-11-19 20:32:58 +00:00
Drew Davis
237a267765
style: Fix color-bg references (#1386)
Closes HDX-2866

This PR updates references to background colors (color-success and color-danger no longer exist).

The background colors now render:

<img width="211" height="281" alt="Screenshot 2025-11-19 at 1 56 03 PM" src="https://github.com/user-attachments/assets/04102b3a-e03a-40b5-bd20-4bb2dc11edbe" />
<img width="210" height="128" alt="Screenshot 2025-11-19 at 1 56 49 PM" src="https://github.com/user-attachments/assets/4ca09e95-f078-4bad-9790-f6f76afccd55" />
2025-11-19 19:13:48 +00:00
Brandon Pereira
f868c3ca61
when selecting a range in the heatmap chart, selection not visible (#1384)
This was a regression from https://github.com/hyperdxio/hyperdx/pull/1347. This adds back the existing styles.

<img width="1210" height="548" alt="Screenshot 2025-11-19 at 9 53 27 AM" src="https://github.com/user-attachments/assets/52343706-2b92-4779-94c0-bdccb1668f09" />

Fixes HDX-2863
2025-11-19 17:05:29 +00:00
Drew Davis
bacefac9e0
fix: Fix session page source change on submit (#1380)
Closes HDX-2858

# Summary

This PR fixes a bug on the sessions page which caused any search submission to revert the source select back to its default. 

The cause of this bug was that the form submission was updating the wrong URL query parameter (source instead of sessionSource), and form submission would trigger the select to take whatever (original) value was set for sessionSource).
2025-11-19 14:09:31 +00:00
github-actions[bot]
d322cd967d
Release HyperDX (#1325)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-11-19 04:24:41 +01:00
Drew Davis
c4915d45a7
feat: Add custom trace-level attributes above trace waterfall (#1356)
Ref HDX-2752

# Summary

This PR adds a new Source setting which specifies additional Span-Level attributes which should be displayed above the Trace Waterfall. The attributes may be specified for both Log and Trace kind sources.

These are displayed on the trace panel rather than at the top of the side panel because they are trace level (from any span in the trace), whereas the top of the side panel shows information specific to the span. In a followup PR, we'll add row-level attributes, which will appear at the top of the side panel.

Notes:

1. The attributes are pulled from the log and trace source (if configured for each) despite the search page only being set to query one of those sources. If an attribute value comes from the log source while the trace source is currently configured on the search page, the attribute tag will not offer the option to show the "Add to search" button and instead will just show a "search this value" option, which navigates the search page to search the value in the correct source.

## Demo

First, source is configured with highlighted attributes:
<img width="954" height="288" alt="Screenshot 2025-11-14 at 3 02 25 PM" src="https://github.com/user-attachments/assets/e5eccbfa-3389-4521-83df-d63fcb13232a" />

Values for those attributes within the trace show up on the trace panel above the waterfall:
<img width="1257" height="152" alt="Screenshot 2025-11-14 at 3 02 59 PM" src="https://github.com/user-attachments/assets/7e3e9d87-5f3a-409b-9b08-054d6e460970" />

Values are searchable when clicked, and if a lucene version of the property is provided, the lucene version will be used in the search box
<img width="1334" height="419" alt="Screenshot 2025-11-14 at 3 03 10 PM" src="https://github.com/user-attachments/assets/50d98f99-5056-48ce-acca-4219286a68f7" />
2025-11-18 19:34:07 +00:00
Warren
3f29e33852
chore: push local, aio, collector images to clickhouse/clickstack-xxx (#1376)
will migrate to `clickhouse/clickstack-xxx` repos in next PR
2025-11-18 17:17:52 +00:00
Drew Davis
09f07e576a
fix: Prevent incorrect dashboard side panel close (#1372)
Closes #1324 
Closes HDX-2724

This PR fixes a bug that caused the Side Panel to close when clicked when on a dashboard with more than one Search Table tile. The fix was to remove the `useClickOutside` hook in favor of Mantine's default behavior, which is to close when clicking outside the drawer.
2025-11-17 20:51:06 +00:00
Drew Davis
4d1eaf1073
style: Fix filter color and alert icon alignment (#1369)
## Before

<img width="493" height="105" alt="Screenshot 2025-11-14 at 2 46 59 PM" src="https://github.com/user-attachments/assets/412ce6ce-7c62-484b-a6d8-b4fd71b8980a" />

## After

<img width="510" height="103" alt="Screenshot 2025-11-14 at 2 46 20 PM" src="https://github.com/user-attachments/assets/a39d7406-c032-4ea3-9508-1e18c9aa18a6" />
2025-11-17 15:09:59 +00:00
Brandon Pereira
44a6a08a29
remove react select (#1367)
Co-authored-by: Elizabet Oliveira <elizabet.oliveira@clickhouse.com>
2025-11-14 13:36:10 -07:00
Elizabet Oliveira
af6a8d0dac
Refactor: Remove bootstrap, adopt semantic tokens, and improve Mantine UI usage (#1347) 2025-11-14 18:01:54 +00:00
Drew Davis
a7e150c825
feat: Improve Service Maps (#1353)
# Summary

This PR makes a number of minor fixes and improvements to the Service Maps feature:

1. The Service Map now has its own tab in the side panel. This resolves usability issues such as the trace panel capturing scroll events and appearing too large on the side panel. Closes HDX-2785, Closes HDX-2732.
2. On single-trace service maps (eg. the one on the side panel), request counts are now rendered as exact numbers (eg. `1 request`), rather than approximate numbers (eg. `~1 request`). Closes HDX-2741.
3. Service map viewport bounds are now reset when the input data changes (typically when the source or sampling level changes). Closes HDX-2778.
4. Service maps now have an empty state. Closes HDX-2739.

<img width="1359" height="902" alt="Screenshot 2025-11-11 at 11 00 05 PM" src="https://github.com/user-attachments/assets/6d8c7fda-bf4e-4dbe-83e4-6395f53511cb" />
<img width="1365" height="910" alt="Screenshot 2025-11-11 at 11 05 13 PM" src="https://github.com/user-attachments/assets/af5218f9-43f8-4536-abee-5ce090cf0438" />
2025-11-14 16:40:52 +00:00
Mike Shi
5e440ab390
update docs spelling (#1365) 2025-11-14 15:04:26 +00:00
Brandon Pereira
3fb5ef7083
fix prop warnings (#1366)
Very minor PR which fixes 2 HTML structure issues (div under p, button under button).

Before: 
<img width="968" height="146" alt="Screenshot 2025-11-13 at 6 58 22 PM" src="https://github.com/user-attachments/assets/ca16ea04-d308-47ec-a3f0-74a8c639dd4b" />

After:
Non prop errors (on search page at least)
2025-11-14 14:59:55 +00:00
Dan Hable
94a669d3ca
feat(tasks): emit duration and success/failure counts for tasks (#1364)
Emits success/failure counter values as well as execution duration as a gauge for task execution. This allows monitoring the background task health using HyperDX alerts.
2025-11-13 23:26:22 +00:00
Mike Shi
cfba5cb63d
feat: Sort source dropdown alphabetically (#1359)
Fixes HDX-2820
2025-11-13 14:43:27 +00:00
Drew Davis
c42a070a9e
fix: Fix session search behavior (#1357)
# Summary

This PR fixes a few bugs in the session search page:

1. Clicking ENTER now triggers a form submission on the session page for lucene conditions (SQL conditions already worked)
2. Clicking ENTER now triggers a form submission on the session side panel for both lucene and SQL conditions
3. The WHERE condition in the search sidebar is now interpreted in the correct `whereLanguage` instead of assuming lucene. Partially reverts #863, but I confirmed that the page-level search does not filter the sidepanel spans after this change.

This PR also fixes the same issue (ENTER now submits forms) on the dashboard and services page. #1208 introduced the issue by preventing the ENTER event from bubbling up to the form when using `AutocompleteInput` / `SearchInputV2`.

Closes HDX-2816
Closes HDX-2817

https://github.com/user-attachments/assets/b91bdb0f-e241-43c2-9854-88fbe43daec7
2025-11-13 14:28:03 +00:00
Drew Davis
7bb7a878de
feat: Add filter for root spans (#1341)
Closes HDX-2772

This PR adds a filter that allows for quickly viewing just root spans from a Trace source.

Notes:
- The state of this filter is persisted in the URL Query Params
- This filter is not persisted in a saved search to match the behavior of other filters, which are not persisted in saved searches.

<img width="1237" height="833" alt="Screenshot 2025-11-12 at 3 56 18 PM" src="https://github.com/user-attachments/assets/9e6b461d-f201-4521-b546-15f986c7ec5b" />
<img width="1252" height="693" alt="Screenshot 2025-11-12 at 3 56 32 PM" src="https://github.com/user-attachments/assets/0aa02818-93ba-4f57-96fd-58c46aac3d9d" />
2025-11-13 14:11:37 +00:00
Dan Hable
a75ce3be6e
fix(alerts): correct p-queue usage (#1355)
Avoid awating on the call to `add()`. Doing so causes the call to await not only for the function to be enqueued, but also finish execution.

This section of the [documentation](https://www.npmjs.com/package/p-queue) is key:
> [!IMPORTANT] If you await this promise, you will wait for the task to finish running, which may defeat the purpose of using a queue for concurrency. See the [Usage](https://www.npmjs.com/package/p-queue#usage) section for examples.
2025-11-12 20:12:09 +00:00
Tom Alexander
63fcf145cd
fix: optimize query key for aliasMap to prevent jitter (#1351)
Fixes: HDX-2787

During live tail, the date range changes every few seconds (e.g., from 9:00-9:15 to 9:02-9:17, etc...). The original aliasMap query key included the entire config object, which contains the dateRange property. Every date range change triggered a refetch of the alias map, even though aliases are derived from the SELECT statement and not from the date range.

While refetching, react-query sets aliasMap to undefined. This caused column IDs to change.  React-table uses column IDs as keys to track resize state, so when the ID changes, it loses the stored width and resets to the default size, causing the visible jitter.

Now we have a consistent aliasMap with the added benefit of less network requests.
2025-11-12 18:24:44 +00:00
Mike Shi
64b5673089
feat: Format row counts in search page (#1352) 2025-11-11 20:21:49 -05:00
Tom Alexander
b90a0649b8
fix: Switch to 'all' after filters change on kubernetes dashboard page (#1337)
Fixes: HDX-2789
2025-11-11 14:52:47 +00:00
Drew Davis
44caf197b4
feat: Zero-fill empty alert periods (#1340)
Closes HDX-2568

# Summary

This PR adds zero-filling to alert evaluation, meaning that periods with no data returned in the alert query will be interpreted as a 0 value, which will (a) cause BELOW-threshold alerts to ALERT and (b) cause ABOVE-threshold alerts to auto-resolve.

Grouped alerts do not have this behavior except when no group returns any data, since it is not always possible to know which groups should have data. A note about this behavior has been added to the UI. Groups are still auto-resolved (when appropriate) when the following period has no data for that group. 

<img width="773" height="460" alt="Screenshot 2025-11-10 at 8 53 05 AM" src="https://github.com/user-attachments/assets/82f6ced1-9bd1-41cd-832d-7bf8abb1253d" />
2025-11-10 19:27:27 +00:00
Drew Davis
78aff3365d
fix: Group alert histories by evaluation time (#1338)
Closes HDX-2728

# Summary

This PR groups AlertHistory records by `createdAt` time to avoid showing multiple alert histories for the same time on the alerts page. There can be multiple AlertHistory records for the same `createdAt` time for grouped alerts

## Testing

To test this, setup a Saved Search alert with a group by configured, then navigate to the alerts page to see one history per time:

<img width="1466" height="154" alt="Screenshot 2025-11-07 at 4 46 40 PM" src="https://github.com/user-attachments/assets/ccc48ba0-07b2-48b1-ad25-de8c88467611" />
<img width="791" height="773" alt="Screenshot 2025-11-07 at 4 46 30 PM" src="https://github.com/user-attachments/assets/2ab0f0c6-1d46-4c65-9fbb-cf4c5d62580e" />
2025-11-10 19:21:20 +00:00
Warren
840d73076c
feat: adjust alert template title and body to reflect alert state (#1339)
Currently, the resolved alert will have the same title and body message as the alerting one, which is misleading

Ref: HDX-2786

## Slack

### ALERT
<img width="723" height="358" alt="Screenshot 2025-11-09 at 10 02 52 PM" src="https://github.com/user-attachments/assets/b1c6f563-f095-457e-9a70-01c8149796c4" />

### RESOLVED
<img width="650" height="117" alt="Screenshot 2025-11-09 at 10 26 01 PM" src="https://github.com/user-attachments/assets/07ef1e7d-8ee5-4604-92cf-4811a0a5c811" />

## incident.io

### ALERT
<img width="1432" height="398" alt="Screenshot 2025-11-09 at 11 07 30 PM" src="https://github.com/user-attachments/assets/30e25eb3-32b2-4f51-934d-b28e75dd5cf7" />

### RESOLVED
<img width="1427" height="305" alt="Screenshot 2025-11-09 at 11 08 56 PM" src="https://github.com/user-attachments/assets/913a5b99-bb07-47ae-bec9-6b0814e4b400" />
2025-11-10 18:29:19 +00:00
Drew Davis
b33db7660b
refactor: Extract helper functions from processAlert (#1336)
This PR extracts a couple of functions out of the excessively long `processAlert` function, to improve readability. 

This is also intended to simplify HDX-2568, which will be able to re-use some of these functions.
2025-11-10 15:42:06 +00:00
hiasr
c5cb1d4bb0
fix: add json compatibility for infrastructure tab (#1256)
Co-authored-by: Ruben Hias <ruben.hias@techwolf.ai>
2025-11-09 08:58:05 +01:00
Tom Alexander
892e43f889
fix: Improve Kubernetes dashboard performance (#1333)
These are the minimal set of changes needed to improve the kubernetes dashboard with 100k+ pods.

**Changes:**
* Fixed a performance issue in ChartUtils that caused computation to be O(n^2). This caused charts to slow down rendering to a crawl and freeze the page. It's not as noticeable with a smaller data set. This was the main issue.
* Limited the number of items returned in the nodes, namespaces, and pods tables to 10k. This was the second biggest issue.
* Introduced a virtualized table to each of the tables to speed up rendering. This was the third biggest issue.
* Increased the amount of unique items returned from the metadata query so that users can filter for the items they need (UX improvement)

**Future changes that will improve the experience even more:**
1) Fetch 10k, but add pagination (UX)
2) Improve query for fetching tabular data. It's timeseries, but realistically, we can make a smarter more performant query
3) To fill out the data in the tables (cpu, memory, uptime, etc...) we make separate queries and combine them on the server side. We could make this one large query (we have an existing ticket in the backlog for it).
4) Chart rendering is very computational intensive. It would be a better user experience to load these after the table loads.

**Outstanding (existing) bugs that exist that I will fix in follow-up tickets:**
1) The namespaces query uses the wrong time window. It does not respect the global time picker date range.
2) Sorting of the table columns is broken.

Ref: HDX-2370

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-11-07 18:28:45 +00:00
Brandon Pereira
2743d85b37
Resizable Waterfall Traces Panel (#1328)
As requested by some users, we should have a way to resize the traces waterfall view (if there is enough trace data) so that they can see more of the trace, and still be able to click the trace events to view details

https://github.com/user-attachments/assets/d1b77887-4f6e-4972-b4b4-fefd70dd344e

Fixes HDX-2677
2025-11-07 15:33:06 +00:00
Drew Davis
59c6655a01
test: Refactor lengthy processAlert tests (#1335)
This PR refactors some common setup out of each `processAlert` integration test, as these tests are becoming very lengthy and hard to understand and write.

- Common mocks are now performed in beforeEach() instead of in each test
- `setupSavedSearchAlertTest` and `createAlertDetails` helpers are introduced to create the objects each test case depends on (connection, source, team, savedSearch, client, webhook, alert, AlertDetails)
- `processAlertAtTime` helper is introduced to run `processAlert` at a particular `now` time value, after querying the AlertHistory records that exist at that time.

Helps with HDX-2568
2025-11-07 15:09:56 +00:00
Brandon Pereira
99cb17c620
Webhook UX Improvements (#1323)
Adds the ability to edit existing webhooks and also test them

<img width="1884" height="1674" alt="Screenshot 2025-11-04 at 8 31 00 AM" src="https://github.com/user-attachments/assets/5f220ec4-c5ab-4ec7-89b9-cf39c215b87b" />
<img width="1922" height="590" alt="Screenshot 2025-11-04 at 8 52 39 AM" src="https://github.com/user-attachments/assets/5238df2c-90b7-465a-a029-5392c45a1e1a" />

Fixes HDX-2672

Closes https://github.com/hyperdxio/hyperdx/issues/1069
2025-11-07 14:45:50 +00:00
Brandon Pereira
2faa15a0a3
Add HTML <title> Tags (#1321)
Add title tags to most important pages, add a fallback title page so any other pages will have something basic.

Fixes HDX-2706
2025-11-05 19:45:31 +00:00
Brandon Pereira
1e39e1341b
Fix bug where generated URLs default to live tail (#1326)
This was originally prevented by this useEffect: https://github.com/hyperdxio/hyperdx/pull/1305/files#diff-6a2491347ca591776e19bf42f3b0f76b4fb6ba15f6e70e697d45c30218997b69L739 but I think having logic to deviate from the URL causing a lot of complexity in this page, so I personally think we should work towards making the URL the source of truth for the state instead.

Original Bug Reproduction:

1. Increase time range beyond default live tail duration
2. Click on a histogram bar and then click "View Events"
3. Note that the time range is updated
4. Wait a few seconds and the time range will be incorrectly reverted back to the default live tailing date range

Fix:

1. Do reproduction steps as above
2. At  step 4, see that URL is displayed as intended.

Fixes HDX-2718
2025-11-05 15:30:30 +00:00
Drew Davis
6e628bcded
feat: Support field:(<term>...) Lucene searches (#1315)
# Summary

This PR updates HyperDX's lucene support to include parenthesized field searches of the form `<field>:(<term>...)`.

Prior to these changes, HyperDX would ignore the `<field>` entirely and search as if the query were just `<term>...`.

With these changes, the search is performed just like a `<term>...` search except:

1. The `field` is used for the search, instead of the implicit field expression (eg. `Body` for `otel_logs`)
2. The search is performed without `hasToken()`, as we assume that fields do not have bloom filters setup (matching the current behavior for how we search fields)

This support has the added benefit of unlocking multi-token substring searches (Ref HDX-1931)
- Previously, you could not search a field for a substring with multiple tokens, eg `error.message:*Method not allowed*` is interpreted as 3 separate terms, and only `*Method` would be associated with `error.message`. `error.message:"Method not allowed"` and `error.message:"*Method not allowed*"` look for exact matches, instead of substrings.
- Now, this can be accomplished with `error.message:("Method not allowed")`. This matches the current behavior of a search like `"Method not allowed"`, which would search the source's default implicit column (eg. `Body`) for the substring "Method not allowed".

## Testing

To test these changes, this PR adds a few dozen query parser unit test cases.
2025-11-04 23:39:58 +00:00
Warren
f612bf3c00
feat: add support for alert auto-resolve + Incident.io integration (#1298)
Plus fixed 'group-by' alert state issues (alert histories)

<img width="836" height="362" alt="image" src="https://github.com/user-attachments/assets/1c132313-25ea-4059-9b7c-0bfaa85408ea" />

Ref: HDX-2661
Ref: HDX-2660
2025-11-04 22:53:04 +00:00
Brandon Pereira
8dee21c81a
Minor Heatmap Improvements (#1317)
Small improvements to heatmap logic:

1. Improve the logic around filtering the outliers. Previously it was hardcoded to Duration, now it will correctly use the `Value` from the user. If the value contains an aggregate function, it will also perform a CTE to properly calculate.
1. If the outliers query fails, we show the user the query error
2. We prioritize the outlier keys in the event deltas view over inliers (this was how it was before, now it only includes inliers if no outliers are found)
3. Ensure the autocomplete suggestions are displayed (there was a zindex issue)
2025-11-04 21:48:39 +00:00
Aaron Knudtson
19c5085cde
chore: split json otel collector to enable both during dev (#1247)
Gets us closer to a staging instance of json

<img width="216" height="174" alt="image" src="https://github.com/user-attachments/assets/b5cc3cf8-aef0-4ba4-9e9a-8c1d4fad5451" />


Co-authored-by: Warren <5959690+wrn14897@users.noreply.github.com>
2025-11-04 21:16:41 +00:00
Drew Davis
91e443f431
feat: Add service map (beta) (#1319)
Closes HDX-2699

# Summary

This PR adds a Service Map feature to HyperDX, based on (sampled) trace data.

## Demo

https://github.com/user-attachments/assets/602e9b42-1586-4cb1-9c99-024c7ef9d2bb

## How the service map is constructed

The service map is created by querying client-server (or producer-consumer) relationships from a Trace source. Two spans have a client-server/producer-consumer relationship if (a) they have the same trace ID and (b) the server/consumer's parent span ID is equal to the client/producer's span ID. This is accomplished via a self-join on the Trace table (the query can be found in `useServiceMap.ts`.

To help keep this join performant, user's can set a sampling level as low as 1% and up to 100%. Lower sampling levels will result in fewer rows being joined, and thus a faster service map load. Sampling is done on `cityHash64(TraceId)` to ensure that either a trace is included in its entirety or not included at all.
2025-11-04 20:20:26 +00:00
Brandon Pereira
24bf2b419d
fix state issues with relative time input not matching reality (#1320)
Fix issues where input state became out of sync in certain edge cases with relative time

**Before** (Demo Video):

https://github.com/user-attachments/assets/5f7b92f1-1dcd-413d-bca1-092d4e4bc360

**After**: issues are not observed.
2025-11-04 18:59:15 +00:00
Brandon Pereira
43dfb3aaff
chore to move critical path files (#1314)
moves them into a core folder, this allows us to easily track when core files are modified via path

no changeset because no version bump required

fixes HDX-2589
2025-10-30 15:16:33 +00:00