Skip to content

Commit 18a7de7

Browse files
Merge branch 'main' into integration-ruler
2 parents e1be10c + 8abba26 commit 18a7de7

File tree

25 files changed

+2279
-131
lines changed

25 files changed

+2279
-131
lines changed

frontend/src/AppRoutes/index.tsx

+17-14
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,20 @@
11
import { ConfigProvider } from 'antd';
22
import getLocalStorageApi from 'api/browser/localstorage/get';
33
import setLocalStorageApi from 'api/browser/localstorage/set';
4+
import logEvent from 'api/common/logEvent';
45
import NotFound from 'components/NotFound';
56
import Spinner from 'components/Spinner';
67
import { FeatureKeys } from 'constants/features';
78
import { LOCALSTORAGE } from 'constants/localStorage';
89
import ROUTES from 'constants/routes';
910
import AppLayout from 'container/AppLayout';
10-
import useAnalytics from 'hooks/analytics/useAnalytics';
1111
import { KeyboardHotkeysProvider } from 'hooks/hotkeys/useKeyboardHotkeys';
1212
import { useThemeConfig } from 'hooks/useDarkMode';
1313
import { useGetTenantLicense } from 'hooks/useGetTenantLicense';
1414
import { LICENSE_PLAN_KEY } from 'hooks/useLicense';
1515
import { NotificationProvider } from 'hooks/useNotifications';
1616
import { ResourceProvider } from 'hooks/useResourceAttribute';
1717
import history from 'lib/history';
18-
import { identity, pickBy } from 'lodash-es';
1918
import posthog from 'posthog-js';
2019
import AlertRuleProvider from 'providers/Alert';
2120
import { useAppContext } from 'providers/App/App';
@@ -51,8 +50,6 @@ function App(): JSX.Element {
5150
} = useAppContext();
5251
const [routes, setRoutes] = useState<AppRoutes[]>(defaultRoutes);
5352

54-
const { trackPageView } = useAnalytics();
55-
5653
const { hostname, pathname } = window.location;
5754

5855
const {
@@ -69,18 +66,21 @@ function App(): JSX.Element {
6966

7067
const { name, email, role } = user;
7168

69+
const domain = extractDomain(email);
70+
const hostNameParts = hostname.split('.');
71+
7272
const identifyPayload = {
7373
email,
7474
name,
7575
company_name: orgName,
76-
role,
76+
tenant_id: hostNameParts[0],
77+
data_region: hostNameParts[1],
78+
tenant_url: hostname,
79+
company_domain: domain,
7780
source: 'signoz-ui',
81+
role,
7882
};
7983

80-
const sanitizedIdentifyPayload = pickBy(identifyPayload, identity);
81-
const domain = extractDomain(email);
82-
const hostNameParts = hostname.split('.');
83-
8484
const groupTraits = {
8585
name: orgName,
8686
tenant_id: hostNameParts[0],
@@ -90,8 +90,13 @@ function App(): JSX.Element {
9090
source: 'signoz-ui',
9191
};
9292

93-
window.analytics.identify(email, sanitizedIdentifyPayload);
94-
window.analytics.group(domain, groupTraits);
93+
if (email) {
94+
logEvent('Email Identified', identifyPayload, 'identify');
95+
}
96+
97+
if (domain) {
98+
logEvent('Domain Identified', groupTraits, 'group');
99+
}
95100

96101
posthog?.identify(email, {
97102
email,
@@ -192,9 +197,7 @@ function App(): JSX.Element {
192197
hide_default_launcher: false,
193198
});
194199
}
195-
196-
trackPageView(pathname);
197-
}, [pathname, trackPageView]);
200+
}, [pathname]);
198201

199202
useEffect(() => {
200203
// feature flag shouldn't be loading and featureFlags or fetchError any one of this should be true indicating that req is complete

frontend/src/api/common/logEvent.ts

+4
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,15 @@ import { EventSuccessPayloadProps } from 'types/api/events/types';
77
const logEvent = async (
88
eventName: string,
99
attributes: Record<string, unknown>,
10+
eventType?: 'track' | 'group' | 'identify',
11+
rateLimited?: boolean,
1012
): Promise<SuccessResponse<EventSuccessPayloadProps> | ErrorResponse> => {
1113
try {
1214
const response = await axios.post('/event', {
1315
eventName,
1416
attributes,
17+
eventType: eventType || 'track',
18+
rateLimited: rateLimited || false, // TODO: Update this once we have a proper way to handle rate limiting
1519
});
1620

1721
return {

frontend/src/container/AppLayout/index.tsx

+10-5
Original file line numberDiff line numberDiff line change
@@ -392,11 +392,16 @@ function AppLayout(props: AppLayoutProps): JSX.Element {
392392
LOCALSTORAGE.DONT_SHOW_SLOW_API_WARNING,
393393
);
394394

395-
logEvent(`Slow API Warning`, {
396-
duration: `${data.duration}ms`,
397-
url: data.url,
398-
threshold: data.threshold,
399-
});
395+
logEvent(
396+
`Slow API Warning`,
397+
{
398+
durationMs: data.duration,
399+
url: data.url,
400+
thresholdMs: data.threshold,
401+
},
402+
'track',
403+
true, // rate limited - controlled by Backend
404+
);
400405

401406
const isDontShowSlowApiWarning = dontShowSlowApiWarning === 'true';
402407

frontend/src/container/EditAlertChannels/index.tsx

+3
Original file line numberDiff line numberDiff line change
@@ -173,6 +173,7 @@ function EditAlertChannels({
173173
const prepareEmailRequest = useCallback(
174174
() => ({
175175
name: selectedConfig?.name || '',
176+
send_resolved: selectedConfig?.send_resolved || false,
176177
to: selectedConfig.to || '',
177178
html: selectedConfig.html || '',
178179
headers: selectedConfig.headers || {},
@@ -208,6 +209,7 @@ function EditAlertChannels({
208209
const preparePagerRequest = useCallback(
209210
() => ({
210211
name: selectedConfig.name || '',
212+
send_resolved: selectedConfig?.send_resolved || false,
211213
routing_key: selectedConfig.routing_key,
212214
client: selectedConfig.client,
213215
client_url: selectedConfig.client_url,
@@ -261,6 +263,7 @@ function EditAlertChannels({
261263
const prepareOpsgenieRequest = useCallback(
262264
() => ({
263265
name: selectedConfig.name || '',
266+
send_resolved: selectedConfig?.send_resolved || false,
264267
api_key: selectedConfig.api_key || '',
265268
message: selectedConfig.message || '',
266269
description: selectedConfig.description || '',

frontend/src/container/OnboardingContainer/__test__/InviteUserFlow.test.tsx

-4
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,6 @@ jest.mock('hooks/useNotifications', () => ({
1919
})),
2020
}));
2121

22-
window.analytics = {
23-
track: jest.fn(),
24-
};
25-
2622
describe('Onboarding invite team member flow', () => {
2723
it('initial render and get started page', async () => {
2824
const { findByText } = render(

frontend/src/container/PipelinePage/PipelineListsView/Preview/hooks/useSampleLogs.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ const useSampleLogs = ({
3838
filters: filter || initialFilters,
3939
aggregateOperator: LogsAggregatorOperator.NOOP,
4040
orderBy: [{ columnName: 'timestamp', order: 'desc' }],
41-
limit: count || DEFAULT_SAMPLE_LOGS_COUNT,
41+
pageSize: count || DEFAULT_SAMPLE_LOGS_COUNT,
4242
};
4343
return q;
4444
}, [count, filter]);

frontend/src/hooks/analytics/useAnalytics.tsx

-40
This file was deleted.

frontend/src/index.html.ejs

+21-38
Original file line numberDiff line numberDiff line change
@@ -49,12 +49,10 @@
4949
/>
5050
<meta data-react-helmet="true" name="docusaurus_locale" content="en" />
5151
<meta data-react-helmet="true" name="docusaurus_tag" content="default" />
52-
<meta name="robots" content="noindex">
52+
<meta name="robots" content="noindex" />
5353
<link data-react-helmet="true" rel="shortcut icon" href="/favicon.ico" />
5454

5555
<link rel="stylesheet" href="/css/uPlot.min.css" />
56-
57-
5856
</head>
5957
<body>
6058
<noscript>You need to enable JavaScript to run this app.</noscript>
@@ -100,32 +98,16 @@
10098
</script>
10199
<script>
102100
const CUSTOMERIO_ID = '<%= htmlWebpackPlugin.options.CUSTOMERIO_ID %>';
103-
const CUSTOMERIO_SITE_ID = '<%= htmlWebpackPlugin.options.CUSTOMERIO_SITE_ID %>';
104-
!function(){var i="cioanalytics", analytics=(window[i]=window[i]||[]);if(!analytics.initialize)if(analytics.invoked)window.console&&console.error&&console.error("Snippet included twice.");else{analytics.invoked=!0;analytics.methods=["trackSubmit","trackClick","trackLink","trackForm","pageview","identify","reset","group","track","ready","alias","debug","page","once","off","on","addSourceMiddleware","addIntegrationMiddleware","setAnonymousId","addDestinationMiddleware"];analytics.factory=function(e){return function(){var t=Array.prototype.slice.call(arguments);t.unshift(e);analytics.push(t);return analytics}};for(var e=0;e<analytics.methods.length;e++){var key=analytics.methods[e];analytics[key]=analytics.factory(key)}analytics.load=function(key,e){var t=document.createElement("script");t.type="text/javascript";t.async=!0;t.setAttribute('data-global-customerio-analytics-key', i);t.src="https://cdp.customer.io/v1/analytics-js/snippet/" + key + "/analytics.min.js";var n=document.getElementsByTagName("script")[0];n.parentNode.insertBefore(t,n);analytics._writeKey=key;analytics._loadOptions=e};analytics.SNIPPET_VERSION="4.15.3";
105-
analytics.load(
106-
CUSTOMERIO_ID,
107-
{
108-
"integrations": {
109-
"Customer.io In-App Plugin": {
110-
siteId: CUSTOMERIO_SITE_ID
111-
}
112-
}
113-
}
114-
);
115-
analytics.page();
116-
}}();
117-
</script>
118-
<script>
119-
//Set your SEGMENT_ID
120-
const SEGMENT_ID = '<%= htmlWebpackPlugin.options.SEGMENT_ID %>';
121-
101+
const CUSTOMERIO_SITE_ID =
102+
'<%= htmlWebpackPlugin.options.CUSTOMERIO_SITE_ID %>';
122103
!(function () {
123-
var analytics = (window.analytics = window.analytics || []);
104+
var i = 'cioanalytics',
105+
analytics = (window[i] = window[i] || []);
124106
if (!analytics.initialize)
125107
if (analytics.invoked)
126108
window.console &&
127109
console.error &&
128-
console.error('Segment snippet included twice.');
110+
console.error('Snippet included twice.');
129111
else {
130112
analytics.invoked = !0;
131113
analytics.methods = [
@@ -152,35 +134,36 @@
152134
];
153135
analytics.factory = function (e) {
154136
return function () {
155-
if (window.analytics.initialized)
156-
return window.analytics[e].apply(window.analytics, arguments);
157-
var i = Array.prototype.slice.call(arguments);
158-
i.unshift(e);
159-
analytics.push(i);
137+
var t = Array.prototype.slice.call(arguments);
138+
t.unshift(e);
139+
analytics.push(t);
160140
return analytics;
161141
};
162142
};
163-
for (var i = 0; i < analytics.methods.length; i++) {
164-
var key = analytics.methods[i];
143+
for (var e = 0; e < analytics.methods.length; e++) {
144+
var key = analytics.methods[e];
165145
analytics[key] = analytics.factory(key);
166146
}
167-
analytics.load = function (key, i) {
147+
analytics.load = function (key, e) {
168148
var t = document.createElement('script');
169149
t.type = 'text/javascript';
170150
t.async = !0;
151+
t.setAttribute('data-global-customerio-analytics-key', i);
171152
t.src =
172-
'https://analytics-cdn.signoz.io/analytics.js/v1/' +
153+
'https://cdp.customer.io/v1/analytics-js/snippet/' +
173154
key +
174155
'/analytics.min.js';
175156
var n = document.getElementsByTagName('script')[0];
176157
n.parentNode.insertBefore(t, n);
177-
analytics._loadOptions = i;
158+
analytics._writeKey = key;
159+
analytics._loadOptions = e;
178160
};
179-
analytics._writeKey = SEGMENT_ID;
180-
analytics.SNIPPET_VERSION = '4.16.1';
181-
analytics.load(SEGMENT_ID, {
161+
analytics.SNIPPET_VERSION = '4.15.3';
162+
analytics.load(CUSTOMERIO_ID, {
182163
integrations: {
183-
'Segment.io': { apiHost: 'analytics-api.signoz.io/v1' },
164+
'Customer.io In-App Plugin': {
165+
siteId: CUSTOMERIO_SITE_ID,
166+
},
184167
},
185168
});
186169
analytics.page();

frontend/webpack.config.js

-2
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ const plugins = [
2121
new HtmlWebpackPlugin({
2222
template: 'src/index.html.ejs',
2323
INTERCOM_APP_ID: process.env.INTERCOM_APP_ID,
24-
SEGMENT_ID: process.env.SEGMENT_ID,
2524
CUSTOMERIO_SITE_ID: process.env.CUSTOMERIO_SITE_ID,
2625
CUSTOMERIO_ID: process.env.CUSTOMERIO_ID,
2726
POSTHOG_KEY: process.env.POSTHOG_KEY,
@@ -41,7 +40,6 @@ const plugins = [
4140
FRONTEND_API_ENDPOINT: process.env.FRONTEND_API_ENDPOINT,
4241
WEBSOCKET_API_ENDPOINT: process.env.WEBSOCKET_API_ENDPOINT,
4342
INTERCOM_APP_ID: process.env.INTERCOM_APP_ID,
44-
SEGMENT_ID: process.env.SEGMENT_ID,
4543
CUSTOMERIO_SITE_ID: process.env.CUSTOMERIO_SITE_ID,
4644
CUSTOMERIO_ID: process.env.CUSTOMERIO_ID,
4745
POSTHOG_KEY: process.env.POSTHOG_KEY,

frontend/webpack.config.prod.js

-2
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ const plugins = [
2626
new HtmlWebpackPlugin({
2727
template: 'src/index.html.ejs',
2828
INTERCOM_APP_ID: process.env.INTERCOM_APP_ID,
29-
SEGMENT_ID: process.env.SEGMENT_ID,
3029
CUSTOMERIO_SITE_ID: process.env.CUSTOMERIO_SITE_ID,
3130
CUSTOMERIO_ID: process.env.CUSTOMERIO_ID,
3231
POSTHOG_KEY: process.env.POSTHOG_KEY,
@@ -51,7 +50,6 @@ const plugins = [
5150
FRONTEND_API_ENDPOINT: process.env.FRONTEND_API_ENDPOINT,
5251
WEBSOCKET_API_ENDPOINT: process.env.WEBSOCKET_API_ENDPOINT,
5352
INTERCOM_APP_ID: process.env.INTERCOM_APP_ID,
54-
SEGMENT_ID: process.env.SEGMENT_ID,
5553
CUSTOMERIO_SITE_ID: process.env.CUSTOMERIO_SITE_ID,
5654
CUSTOMERIO_ID: process.env.CUSTOMERIO_ID,
5755
POSTHOG_KEY: process.env.POSTHOG_KEY,

go.mod

+2-2
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ require (
6969
go.opentelemetry.io/otel/trace v1.34.0
7070
go.uber.org/multierr v1.11.0
7171
go.uber.org/zap v1.27.0
72-
golang.org/x/crypto v0.31.0
72+
golang.org/x/crypto v0.32.0
7373
golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842
7474
golang.org/x/oauth2 v0.24.0
7575
golang.org/x/sync v0.10.0
@@ -115,7 +115,7 @@ require (
115115
github.com/fsnotify/fsnotify v1.7.0 // indirect
116116
github.com/go-faster/city v1.0.1 // indirect
117117
github.com/go-faster/errors v0.7.1 // indirect
118-
github.com/go-jose/go-jose/v4 v4.0.2 // indirect
118+
github.com/go-jose/go-jose/v4 v4.0.5 // indirect
119119
github.com/go-logfmt/logfmt v0.6.0 // indirect
120120
github.com/go-logr/logr v1.4.2 // indirect
121121
github.com/go-logr/stdr v1.2.2 // indirect

go.sum

+6-6
Original file line numberDiff line numberDiff line change
@@ -262,8 +262,8 @@ github.com/go-faster/errors v0.7.1/go.mod h1:5ySTjWFiphBs07IKuiL69nxdfd5+fzh1u7F
262262
github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU=
263263
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
264264
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
265-
github.com/go-jose/go-jose/v4 v4.0.2 h1:R3l3kkBds16bO7ZFAEEcofK0MkrAJt3jlJznWZG0nvk=
266-
github.com/go-jose/go-jose/v4 v4.0.2/go.mod h1:WVf9LFMHh/QVrmqrOfqun0C45tMe3RoiKJMPvgWwLfY=
265+
github.com/go-jose/go-jose/v4 v4.0.5 h1:M6T8+mKZl/+fNNuFHvGIzDz7BTLQPIounk/b9dw3AaE=
266+
github.com/go-jose/go-jose/v4 v4.0.5/go.mod h1:s3P1lRrkT8igV8D9OjyL4WRyHvjB6a4JSllnOrmmBOA=
267267
github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as=
268268
github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as=
269269
github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY=
@@ -1108,8 +1108,8 @@ golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm
11081108
golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
11091109
golang.org/x/crypto v0.0.0-20220411220226-7b82a4e95df4/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
11101110
golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
1111-
golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U=
1112-
golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk=
1111+
golang.org/x/crypto v0.32.0 h1:euUpcYgM8WcP71gNpTqQCn6rC2t6ULUPiOzfWaXVVfc=
1112+
golang.org/x/crypto v0.32.0/go.mod h1:ZnnJkOaASj8g0AjIduWNlq2NRxL0PlBrbKVyZ6V/Ugc=
11131113
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
11141114
golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
11151115
golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
@@ -1332,8 +1332,8 @@ golang.org/x/sys v0.29.0 h1:TPYlXGxvx1MGTn2GiZDhnjPA9wZzZeGKHHmKhHYvgaU=
13321332
golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
13331333
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
13341334
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
1335-
golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q=
1336-
golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM=
1335+
golang.org/x/term v0.28.0 h1:/Ts8HFuMR2E6IP/jlo7QVLZHggjKQbhu/7H0LJFr3Gg=
1336+
golang.org/x/term v0.28.0/go.mod h1:Sw/lC2IAUZ92udQNf3WodGtn4k/XoLyZoh8v/8uiwek=
13371337
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
13381338
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
13391339
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=

0 commit comments

Comments
 (0)