demo setup with otel traces

This commit is contained in:
Lukasz Ostrowski 2023-08-03 09:58:12 +02:00
parent 2393100b6c
commit c7d0619dca
4 changed files with 72 additions and 48 deletions

View file

@ -19,6 +19,7 @@
},
"dependencies": {
"@hookform/resolvers": "^3.1.0",
"@opentelemetry/api": "^1.4.1",
"@opentelemetry/exporter-trace-otlp-http": "^0.41.1",
"@opentelemetry/resources": "^1.15.1",
"@opentelemetry/sdk-node": "^0.41.1",

View file

@ -3,6 +3,7 @@ import { OTLPTraceExporter } from "@opentelemetry/exporter-trace-otlp-http";
import { Resource } from "@opentelemetry/resources";
import { SemanticResourceAttributes } from "@opentelemetry/semantic-conventions";
import { SimpleSpanProcessor } from "@opentelemetry/sdk-trace-node";
import { trace } from "@opentelemetry/api";
const sdk = new NodeSDK({
resource: new Resource({
@ -12,3 +13,5 @@ const sdk = new NodeSDK({
});
sdk.start();
export const tracer = trace.getTracer("saleor.app.search");

View file

@ -9,6 +9,7 @@ import { AppConfigurationFields, AppConfigurationSchema } from "../../domain/con
import { AlgoliaSearchProvider } from "../../lib/algolia/algoliaSearchProvider";
import { WebhookActivityTogglerService } from "../../domain/WebhookActivityToggler.service";
import { algoliaConfigurationRepository } from "../../domain/algolia-configuration/AlgoliaConfigurationRepository";
import { tracer } from "../../otel";
const logger = createLogger({
handler: "api/configuration",
@ -27,6 +28,8 @@ export const handler = async (
const client = createClient(saleorApiUrl, async () => Promise.resolve({ token: token }));
console.log(req.method);
// todo extract endpoints, add trpc
if (req.method === "GET") {
logger.debug("Returning configuration");
@ -42,7 +45,14 @@ export const handler = async (
success: false,
});
} else if (req.method === "POST") {
logger.debug("Updating the configuration");
tracer.startActiveSpan("update-configuration", async (span) => {
console.log("test log console");
span.addEvent("update-configuration POST", {
foo: "BAR",
});
logger.debug("Updating the configuration - log logger pino");
const { appId, secretKey, indexNamePrefix } = JSON.parse(req.body) as AppConfigurationFields;
@ -53,7 +63,7 @@ export const handler = async (
});
try {
logger.debug("Will ping Algolia");
logger.info("Will ping Algolia");
await algoliaClient.ping();
logger.debug("Algolia connection is ok. Will save settings");
@ -72,17 +82,24 @@ export const handler = async (
logger.debug("Webhooks enabled");
return res.status(200).send({
res.status(200).send({
success: true,
data: AppConfigurationSchema.parse(configuration), // todo probably remove Zod at this point
});
span.end();
return;
} catch (e) {
return res.status(400).end();
}
}
return;
});
} else {
logger.error("Method not supported");
res.status(405).end();
return res.status(405).end();
}
};
export default createProtectedHandler(handler, saleorApp.apl, ["MANAGE_APPS", "MANAGE_PRODUCTS"]);

View file

@ -1170,6 +1170,9 @@ importers:
'@hookform/resolvers':
specifier: ^3.1.0
version: 3.1.0(react-hook-form@7.43.9)
'@opentelemetry/api':
specifier: ^1.4.1
version: 1.4.1
'@opentelemetry/exporter-trace-otlp-http':
specifier: ^0.41.1
version: 0.41.1(@opentelemetry/api@1.4.1)
@ -4842,7 +4845,7 @@ packages:
/@changesets/apply-release-plan@6.1.3:
resolution: {integrity: sha512-ECDNeoc3nfeAe1jqJb5aFQX7CqzQhD2klXRez2JDb/aVpGUbX673HgKrnrgJRuQR/9f2TtLoYIzrGB9qwD77mg==}
dependencies:
'@babel/runtime': 7.22.3
'@babel/runtime': 7.22.5
'@changesets/config': 2.3.0
'@changesets/get-version-range-type': 0.3.2
'@changesets/git': 2.0.0
@ -4877,7 +4880,7 @@ packages:
/@changesets/assemble-release-plan@5.2.3:
resolution: {integrity: sha512-g7EVZCmnWz3zMBAdrcKhid4hkHT+Ft1n0mLussFMcB1dE2zCuwcvGoy9ec3yOgPGF4hoMtgHaMIk3T3TBdvU9g==}
dependencies:
'@babel/runtime': 7.22.3
'@babel/runtime': 7.22.5
'@changesets/errors': 0.1.4
'@changesets/get-dependents-graph': 1.3.5
'@changesets/types': 5.2.1
@ -5027,7 +5030,7 @@ packages:
/@changesets/get-release-plan@3.0.16:
resolution: {integrity: sha512-OpP9QILpBp1bY2YNIKFzwigKh7Qe9KizRsZomzLe6pK8IUo8onkAAVUD8+JRKSr8R7d4+JRuQrfSSNlEwKyPYg==}
dependencies:
'@babel/runtime': 7.22.3
'@babel/runtime': 7.22.5
'@changesets/assemble-release-plan': 5.2.3
'@changesets/config': 2.3.0
'@changesets/pre': 1.0.14
@ -5053,7 +5056,7 @@ packages:
/@changesets/git@2.0.0:
resolution: {integrity: sha512-enUVEWbiqUTxqSnmesyJGWfzd51PY4H7mH9yUw0hPVpZBJ6tQZFMU3F3mT/t9OJ/GjyiM4770i+sehAn6ymx6A==}
dependencies:
'@babel/runtime': 7.22.3
'@babel/runtime': 7.22.5
'@changesets/errors': 0.1.4
'@changesets/types': 5.2.1
'@manypkg/get-packages': 1.1.3
@ -5075,7 +5078,7 @@ packages:
/@changesets/pre@1.0.14:
resolution: {integrity: sha512-dTsHmxQWEQekHYHbg+M1mDVYFvegDh9j/kySNuDKdylwfMEevTeDouR7IfHNyVodxZXu17sXoJuf2D0vi55FHQ==}
dependencies:
'@babel/runtime': 7.22.3
'@babel/runtime': 7.22.5
'@changesets/errors': 0.1.4
'@changesets/types': 5.2.1
'@manypkg/get-packages': 1.1.3
@ -5084,7 +5087,7 @@ packages:
/@changesets/read@0.5.9:
resolution: {integrity: sha512-T8BJ6JS6j1gfO1HFq50kU3qawYxa4NTbI/ASNVVCBTsKquy2HYwM9r7ZnzkiMe8IEObAJtUVGSrePCOxAK2haQ==}
dependencies:
'@babel/runtime': 7.22.3
'@babel/runtime': 7.22.5
'@changesets/git': 2.0.0
'@changesets/logger': 0.0.5
'@changesets/parse': 0.3.16
@ -5102,7 +5105,7 @@ packages:
/@changesets/write@0.2.3:
resolution: {integrity: sha512-Dbamr7AIMvslKnNYsLFafaVORx4H0pvCA2MHqgtNCySMe1blImEyAEOzDmcgKAkgz4+uwoLz7demIrX+JBr/Xw==}
dependencies:
'@babel/runtime': 7.22.3
'@babel/runtime': 7.22.5
'@changesets/types': 5.2.1
fs-extra: 7.0.1
human-id: 1.0.2
@ -6659,7 +6662,7 @@ packages:
/@manypkg/get-packages@1.1.3:
resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==}
dependencies:
'@babel/runtime': 7.22.3
'@babel/runtime': 7.22.5
'@changesets/types': 4.1.0
'@manypkg/find-root': 1.1.0
fs-extra: 8.1.0
@ -6819,7 +6822,7 @@ packages:
'@types/react':
optional: true
dependencies:
'@babel/runtime': 7.22.3
'@babel/runtime': 7.22.5
'@emotion/hash': 0.8.0
'@material-ui/types': 5.1.0(@types/react@18.0.14)
'@material-ui/utils': 4.11.3(react-dom@18.2.0)(react@18.2.0)
@ -6852,7 +6855,7 @@ packages:
'@types/react':
optional: true
dependencies:
'@babel/runtime': 7.22.3
'@babel/runtime': 7.22.5
'@emotion/hash': 0.8.0
'@material-ui/types': 5.1.0(@types/react@18.0.27)
'@material-ui/utils': 4.11.3(react-dom@18.2.0)(react@18.2.0)
@ -6883,7 +6886,7 @@ packages:
'@types/react':
optional: true
dependencies:
'@babel/runtime': 7.22.3
'@babel/runtime': 7.22.5
'@material-ui/utils': 4.11.3(react-dom@18.2.0)(react@18.2.0)
'@types/react': 18.0.14
csstype: 2.6.21
@ -6903,7 +6906,7 @@ packages:
'@types/react':
optional: true
dependencies:
'@babel/runtime': 7.22.3
'@babel/runtime': 7.22.5
'@material-ui/utils': 4.11.3(react-dom@18.2.0)(react@18.2.0)
'@types/react': 18.0.27
csstype: 2.6.21
@ -6939,7 +6942,7 @@ packages:
react: ^16.8.0 || ^17.0.0
react-dom: ^16.8.0 || ^17.0.0
dependencies:
'@babel/runtime': 7.22.3
'@babel/runtime': 7.22.5
prop-types: 15.8.1
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
@ -10125,7 +10128,7 @@ packages:
/@swc/helpers@0.4.14:
resolution: {integrity: sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw==}
dependencies:
tslib: 2.5.3
tslib: 2.6.0
/@szmarczak/http-timer@4.0.6:
resolution: {integrity: sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==}
@ -10183,7 +10186,7 @@ packages:
engines: {node: '>=12'}
dependencies:
'@babel/code-frame': 7.21.4
'@babel/runtime': 7.22.3
'@babel/runtime': 7.22.5
'@types/aria-query': 5.0.1
aria-query: 5.1.3
chalk: 4.1.2
@ -12208,7 +12211,7 @@ packages:
/broadcast-channel@3.7.0:
resolution: {integrity: sha512-cIAKJXAxGJceNZGTZSBzMxzyOn72cVgPnKx4dc6LRjQgbaJUQqhy5rzL3zbMxkMWsGKkv2hSFkPRMEXfoMZ2Mg==}
dependencies:
'@babel/runtime': 7.22.3
'@babel/runtime': 7.22.5
detect-node: 2.1.0
js-sha3: 0.8.0
microseconds: 0.2.0
@ -16993,7 +16996,7 @@ packages:
/match-sorter@6.3.1:
resolution: {integrity: sha512-mxybbo3pPNuA+ZuCUhm5bwNkXrJTbsk5VWbR5wiwz/GC6LIiegBGn2w3O08UG/jdbYLinw51fSQ5xNU1U3MgBw==}
dependencies:
'@babel/runtime': 7.22.3
'@babel/runtime': 7.22.5
remove-accents: 0.4.2
dev: false
@ -19336,7 +19339,7 @@ packages:
peerDependencies:
react: '>=16.13.1'
dependencies:
'@babel/runtime': 7.22.3
'@babel/runtime': 7.22.5
react: 18.2.0
dev: true
@ -19696,7 +19699,7 @@ packages:
react: '>=16.6.0'
react-dom: '>=16.6.0'
dependencies:
'@babel/runtime': 7.22.3
'@babel/runtime': 7.22.5
dom-helpers: 5.2.1
loose-envify: 1.4.0
prop-types: 15.8.1