mirror of https://github.com/statping/statping
feat: working on instrumentation
parent
f310706448
commit
133f34da52
|
@ -0,0 +1,3 @@
|
||||||
|
@razorpay:registry=https://npm.pkg.github.com/
|
||||||
|
//npm.pkg.github.com/:always-auth=true
|
||||||
|
//npm.pkg.github.com/:_authToken=${GITHUB_ACCESS_TOKEN}
|
File diff suppressed because it is too large
Load Diff
|
@ -17,6 +17,7 @@
|
||||||
"@fortawesome/fontawesome-svg-core": "^1.2.36",
|
"@fortawesome/fontawesome-svg-core": "^1.2.36",
|
||||||
"@fortawesome/free-solid-svg-icons": "^5.15.4",
|
"@fortawesome/free-solid-svg-icons": "^5.15.4",
|
||||||
"@fortawesome/react-fontawesome": "^0.1.15",
|
"@fortawesome/react-fontawesome": "^0.1.15",
|
||||||
|
"@razorpay/universe-utils": "^5.1.2",
|
||||||
"apexcharts": "^3.28.1",
|
"apexcharts": "^3.28.1",
|
||||||
"axios": "^0.21.1",
|
"axios": "^0.21.1",
|
||||||
"date-fns": "^2.23.0",
|
"date-fns": "^2.23.0",
|
||||||
|
|
|
@ -36,4 +36,8 @@
|
||||||
To create a production bundle, use `npm run build` or `yarn build`.
|
To create a production bundle, use `npm run build` or `yarn build`.
|
||||||
-->
|
-->
|
||||||
</body>
|
</body>
|
||||||
|
<script type="text/javaScript">
|
||||||
|
window.LUMBERJACK_API_URL = "%REACT_APP_LUMBERJACK_API_URL%";
|
||||||
|
window.LUMBERJACK_API_KEY = "%REACT_APP_LUMBERJACK_API_KEY%";
|
||||||
|
</script>
|
||||||
</html>
|
</html>
|
||||||
|
|
|
@ -1,12 +1,16 @@
|
||||||
import React from "react";
|
import React, { useEffect } from "react";
|
||||||
import { BrowserRouter, Switch, Route, Redirect } from "react-router-dom";
|
import { BrowserRouter, Switch, Route, Redirect } from "react-router-dom";
|
||||||
import { ChakraProvider } from "@chakra-ui/react";
|
import { ChakraProvider } from "@chakra-ui/react";
|
||||||
import theme from "../theme";
|
import theme from "../theme";
|
||||||
import ServicesPage from "./ServicesPage";
|
import ServicesPage from "./ServicesPage";
|
||||||
import Navigation from "./Navbar";
|
import Navigation from "./Navbar";
|
||||||
|
import { initLumberjack } from "../utils/trackers";
|
||||||
|
|
||||||
const App = () => {
|
const App = () => {
|
||||||
console.log(`Application running on ${process.env.NODE_ENV} mode.`);
|
console.log(`Application running on ${process.env.NODE_ENV} mode.`);
|
||||||
|
useEffect(() => {
|
||||||
|
initLumberjack();
|
||||||
|
}, [])
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<ChakraProvider theme={theme}>
|
<ChakraProvider theme={theme}>
|
||||||
|
|
|
@ -10,6 +10,7 @@ import SubServiceCard from "./SubServiceCard";
|
||||||
// import ServiceLoader from "./ServiceLoader";
|
// import ServiceLoader from "./ServiceLoader";
|
||||||
// import DateUtils from "../utils/DateUtils";
|
// import DateUtils from "../utils/DateUtils";
|
||||||
import infoIcon from "../static/info.svg";
|
import infoIcon from "../static/info.svg";
|
||||||
|
import { analyticsTrack } from "../utils/analytics";
|
||||||
|
|
||||||
const GroupItem = ({ service, showPlusButton }) => {
|
const GroupItem = ({ service, showPlusButton }) => {
|
||||||
const [collapse, setCollapse] = useState(false);
|
const [collapse, setCollapse] = useState(false);
|
||||||
|
@ -43,6 +44,12 @@ const GroupItem = ({ service, showPlusButton }) => {
|
||||||
} else {
|
} else {
|
||||||
setCollapse(true);
|
setCollapse(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
analyticsTrack({
|
||||||
|
objectName: 'Test object',
|
||||||
|
actionName: 'clicked',
|
||||||
|
screen: 'Home page'
|
||||||
|
})
|
||||||
};
|
};
|
||||||
|
|
||||||
const closeCollapse = () => {
|
const closeCollapse = () => {
|
||||||
|
|
|
@ -0,0 +1,84 @@
|
||||||
|
import errorService from '@razorpay/universe-utils/errorService';
|
||||||
|
import { titleCase } from './helper';
|
||||||
|
|
||||||
|
export const sendToLumberjack = ({ eventName, properties = {} }) => {
|
||||||
|
const body = {
|
||||||
|
mode: 'live',
|
||||||
|
key: window.LUMBERJACK_API_KEY,
|
||||||
|
events: [
|
||||||
|
{
|
||||||
|
event_type: 'test_source',
|
||||||
|
event: eventName,
|
||||||
|
event_version: 'v1',
|
||||||
|
timestamp: new Date().getTime(),
|
||||||
|
properties: {
|
||||||
|
...properties,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
};
|
||||||
|
|
||||||
|
fetch(window.LUMBERJACK_API_URL, {
|
||||||
|
method: 'post',
|
||||||
|
body: JSON.stringify(body),
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/json',
|
||||||
|
},
|
||||||
|
}).catch((error) => {
|
||||||
|
throwAnalyticsException(error);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
const throwAnalyticsException = (errorMessage) => {
|
||||||
|
const error = new Error(errorMessage);
|
||||||
|
errorService.captureError(error);
|
||||||
|
};
|
||||||
|
|
||||||
|
export const analyticsTrack = ({
|
||||||
|
objectName,
|
||||||
|
actionName,
|
||||||
|
screen,
|
||||||
|
properties = {},
|
||||||
|
toLumberjack = true,
|
||||||
|
}) => {
|
||||||
|
if (!objectName) {
|
||||||
|
const errorMessage = '[analytics]: objectName cannot be empty';
|
||||||
|
throwAnalyticsException(errorMessage);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!actionName) {
|
||||||
|
const errorMessage = '[analytics]: actionName cannot be empty';
|
||||||
|
throwAnalyticsException(errorMessage);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!screen) {
|
||||||
|
const errorMessage = '[analytics]: screen cannot be empty';
|
||||||
|
throwAnalyticsException(errorMessage);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (/_/g.test(objectName)) {
|
||||||
|
const errorMessage = `[analytics]: expected objectName: ${objectName} to not have '_'`;
|
||||||
|
throwAnalyticsException(errorMessage);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (/_/g.test(actionName)) {
|
||||||
|
const errorMessage = `[analytics]: expected actionName: ${actionName} to not have '_'`;
|
||||||
|
throwAnalyticsException(errorMessage);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const eventTimestamp = new Date().toISOString();
|
||||||
|
const eventName = titleCase(`${objectName} ${actionName}`);
|
||||||
|
|
||||||
|
if (toLumberjack) {
|
||||||
|
sendToLumberjack({
|
||||||
|
eventName,
|
||||||
|
properties: {
|
||||||
|
...properties,
|
||||||
|
screen,
|
||||||
|
eventTimestamp,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
|
@ -57,3 +57,11 @@ export const calcPer = (uptime, downtime) => {
|
||||||
// });
|
// });
|
||||||
// return arrayStr.join("<br/>");
|
// return arrayStr.join("<br/>");
|
||||||
// }
|
// }
|
||||||
|
|
||||||
|
/* Delimiters are space / underscore */
|
||||||
|
export function titleCase(sentence) {
|
||||||
|
return (sentence || '')
|
||||||
|
.split(/\s+|_/)
|
||||||
|
.map((word) => word.charAt(0).toUpperCase() + word.substr(1).toLowerCase())
|
||||||
|
.join(' ');
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,9 @@
|
||||||
|
import analyticsService from '@razorpay/universe-utils/analytics';
|
||||||
|
|
||||||
|
export const initLumberjack = () => {
|
||||||
|
analyticsService.init({
|
||||||
|
lumberjackAppName: 'test_source',
|
||||||
|
lumberjackApiKey: window.LUMBERJACK_API_KEY,
|
||||||
|
lumberjackApiUrl: "https://lumberjack.stage.razorpay.in/v1/track",
|
||||||
|
});
|
||||||
|
};
|
24956
react-frontend/yarn.lock
24956
react-frontend/yarn.lock
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue