trying to connect pino but failed

This commit is contained in:
Lukasz Ostrowski 2023-08-03 10:27:48 +02:00
parent c7d0619dca
commit 55156782cf
5 changed files with 84 additions and 42 deletions

View file

@ -21,6 +21,8 @@
"@hookform/resolvers": "^3.1.0", "@hookform/resolvers": "^3.1.0",
"@opentelemetry/api": "^1.4.1", "@opentelemetry/api": "^1.4.1",
"@opentelemetry/exporter-trace-otlp-http": "^0.41.1", "@opentelemetry/exporter-trace-otlp-http": "^0.41.1",
"@opentelemetry/instrumentation": "^0.41.1",
"@opentelemetry/instrumentation-pino": "^0.34.0",
"@opentelemetry/resources": "^1.15.1", "@opentelemetry/resources": "^1.15.1",
"@opentelemetry/sdk-node": "^0.41.1", "@opentelemetry/sdk-node": "^0.41.1",
"@opentelemetry/sdk-trace-node": "^1.15.1", "@opentelemetry/sdk-trace-node": "^1.15.1",
@ -44,6 +46,7 @@
"next": "13.3.0", "next": "13.3.0",
"next-urql": "4.0.0", "next-urql": "4.0.0",
"pino": "^8.14.1", "pino": "^8.14.1",
"pino-opentelemetry-transport": "^0.1.0",
"pino-pretty": "^10.0.0", "pino-pretty": "^10.0.0",
"prisma": "^4.15.0", "prisma": "^4.15.0",
"react": "18.2.0", "react": "18.2.0",

View file

@ -1,13 +1,9 @@
import { createLogger as _createLogger } from "@saleor/apps-shared"; import pino from "pino";
/** const otelTransport = pino.transport({
* Extend factory to add more settings specific for the app target: "pino-opentelemetry-transport",
*/ });
export const logger = _createLogger(
{}, export const logger = pino(otelTransport);
{
redact: ["token", "secretKey"],
}
);
export const createLogger = logger.child.bind(logger); export const createLogger = logger.child.bind(logger);

View file

@ -1,15 +1,25 @@
import { NodeSDK } from "@opentelemetry/sdk-node"; import { trace } from "@opentelemetry/api";
import { OTLPTraceExporter } from "@opentelemetry/exporter-trace-otlp-http"; import { OTLPTraceExporter } from "@opentelemetry/exporter-trace-otlp-http";
import { Resource } from "@opentelemetry/resources"; import { Resource } from "@opentelemetry/resources";
import { SemanticResourceAttributes } from "@opentelemetry/semantic-conventions"; import { NodeSDK } from "@opentelemetry/sdk-node";
import { SimpleSpanProcessor } from "@opentelemetry/sdk-trace-node"; import { SimpleSpanProcessor } from "@opentelemetry/sdk-trace-node";
import { trace } from "@opentelemetry/api"; import { SemanticResourceAttributes } from "@opentelemetry/semantic-conventions";
const { PinoInstrumentation } = require("@opentelemetry/instrumentation-pino");
const sdk = new NodeSDK({ const sdk = new NodeSDK({
resource: new Resource({ resource: new Resource({
[SemanticResourceAttributes.SERVICE_NAME]: "saleor.app.search", [SemanticResourceAttributes.SERVICE_NAME]: "saleor.app.search",
}), }),
spanProcessor: new SimpleSpanProcessor(new OTLPTraceExporter()), spanProcessor: new SimpleSpanProcessor(new OTLPTraceExporter()),
instrumentations: [
new PinoInstrumentation({
// Optional hook to insert additional context to log object.
logHook: (span, record, level) => {
record["resource.service.name"] = "saleor.app.search";
},
}),
// other instrumentations
],
}); });
sdk.start(); sdk.start();

View file

@ -4,7 +4,7 @@ import { createClient } from "../../lib/graphql";
import { saleorApp } from "../../../saleor-app"; import { saleorApp } from "../../../saleor-app";
import { createProtectedHandler, ProtectedHandlerContext } from "@saleor/app-sdk/handlers/next"; import { createProtectedHandler, ProtectedHandlerContext } from "@saleor/app-sdk/handlers/next";
import { createLogger } from "../../lib/logger"; import { createLogger, logger as otelLogger } from "../../lib/logger";
import { AppConfigurationFields, AppConfigurationSchema } from "../../domain/configuration"; import { AppConfigurationFields, AppConfigurationSchema } from "../../domain/configuration";
import { AlgoliaSearchProvider } from "../../lib/algolia/algoliaSearchProvider"; import { AlgoliaSearchProvider } from "../../lib/algolia/algoliaSearchProvider";
import { WebhookActivityTogglerService } from "../../domain/WebhookActivityToggler.service"; import { WebhookActivityTogglerService } from "../../domain/WebhookActivityToggler.service";
@ -28,11 +28,9 @@ export const handler = async (
const client = createClient(saleorApiUrl, async () => Promise.resolve({ token: token })); const client = createClient(saleorApiUrl, async () => Promise.resolve({ token: token }));
console.log(req.method);
// todo extract endpoints, add trpc // todo extract endpoints, add trpc
if (req.method === "GET") { if (req.method === "GET") {
logger.debug("Returning configuration"); logger.info("Returning configuration");
const configuration = await algoliaConfigurationRepository.getConfiguration(saleorApiUrl); const configuration = await algoliaConfigurationRepository.getConfiguration(saleorApiUrl);
@ -47,12 +45,13 @@ export const handler = async (
} else if (req.method === "POST") { } else if (req.method === "POST") {
tracer.startActiveSpan("update-configuration", async (span) => { tracer.startActiveSpan("update-configuration", async (span) => {
console.log("test log console"); console.log("test log console");
otelLogger.warn("test warn");
span.addEvent("update-configuration POST", { span.addEvent("update-configuration POST", {
foo: "BAR", foo: "BAR",
}); });
logger.debug("Updating the configuration - log logger pino"); logger.info("Updating the configuration - log logger pino");
const { appId, secretKey, indexNamePrefix } = JSON.parse(req.body) as AppConfigurationFields; const { appId, secretKey, indexNamePrefix } = JSON.parse(req.body) as AppConfigurationFields;

View file

@ -1176,6 +1176,12 @@ importers:
'@opentelemetry/exporter-trace-otlp-http': '@opentelemetry/exporter-trace-otlp-http':
specifier: ^0.41.1 specifier: ^0.41.1
version: 0.41.1(@opentelemetry/api@1.4.1) version: 0.41.1(@opentelemetry/api@1.4.1)
'@opentelemetry/instrumentation':
specifier: ^0.41.1
version: 0.41.1(@opentelemetry/api@1.4.1)
'@opentelemetry/instrumentation-pino':
specifier: ^0.34.0
version: 0.34.0(@opentelemetry/api@1.4.1)
'@opentelemetry/resources': '@opentelemetry/resources':
specifier: ^1.15.1 specifier: ^1.15.1
version: 1.15.1(@opentelemetry/api@1.4.1) version: 1.15.1(@opentelemetry/api@1.4.1)
@ -1245,6 +1251,9 @@ importers:
pino: pino:
specifier: ^8.14.1 specifier: ^8.14.1
version: 8.14.1 version: 8.14.1
pino-opentelemetry-transport:
specifier: ^0.1.0
version: 0.1.0(@opentelemetry/api@1.4.1)
pino-pretty: pino-pretty:
specifier: ^10.0.0 specifier: ^10.0.0
version: 10.0.0 version: 10.0.0
@ -7131,6 +7140,22 @@ packages:
jaeger-client: 3.19.0 jaeger-client: 3.19.0
dev: false dev: false
/@opentelemetry/exporter-logs-otlp-grpc@0.41.1(@opentelemetry/api-logs@0.41.1)(@opentelemetry/api@1.4.1):
resolution: {integrity: sha512-Axbafs6f59EOI+BpcRUWhyWQ7x1mPOZDMN/x89RY8b7xPODAoBFjMXiTHapIb0VQ7oMLvIwf2Ala5Afrp09djw==}
engines: {node: '>=14'}
peerDependencies:
'@opentelemetry/api': ^1.0.0
dependencies:
'@grpc/grpc-js': 1.9.0
'@opentelemetry/api': 1.4.1
'@opentelemetry/core': 1.15.1(@opentelemetry/api@1.4.1)
'@opentelemetry/otlp-grpc-exporter-base': 0.41.1(@opentelemetry/api@1.4.1)
'@opentelemetry/otlp-transformer': 0.41.1(@opentelemetry/api@1.4.1)
'@opentelemetry/sdk-logs': 0.41.1(@opentelemetry/api-logs@0.41.1)(@opentelemetry/api@1.4.1)
transitivePeerDependencies:
- '@opentelemetry/api-logs'
dev: false
/@opentelemetry/exporter-trace-otlp-grpc@0.41.1(@opentelemetry/api@1.4.1): /@opentelemetry/exporter-trace-otlp-grpc@0.41.1(@opentelemetry/api@1.4.1):
resolution: {integrity: sha512-Hdd1X/7UnJYqgofd2FS09Sh30NaZvoLrRSj1q+y6InzgYfUweRHpBUbcygAclRNkmKB+ydfsFJUXiOkK47bOYQ==} resolution: {integrity: sha512-Hdd1X/7UnJYqgofd2FS09Sh30NaZvoLrRSj1q+y6InzgYfUweRHpBUbcygAclRNkmKB+ydfsFJUXiOkK47bOYQ==}
engines: {node: '>=14'} engines: {node: '>=14'}
@ -7188,6 +7213,19 @@ packages:
'@opentelemetry/semantic-conventions': 1.15.1 '@opentelemetry/semantic-conventions': 1.15.1
dev: false dev: false
/@opentelemetry/instrumentation-pino@0.34.0(@opentelemetry/api@1.4.1):
resolution: {integrity: sha512-UtoVJG1gVit5Bksy0ccwtmJm9a39WDW4tMEAh0Spk31burJuEKKT09CslSQ3zmkoHj91iLWi5O5A94dIUVIXsg==}
engines: {node: '>=14'}
peerDependencies:
'@opentelemetry/api': ^1.3.0
dependencies:
'@opentelemetry/api': 1.4.1
'@opentelemetry/instrumentation': 0.41.1(@opentelemetry/api@1.4.1)
tslib: 2.6.0
transitivePeerDependencies:
- supports-color
dev: false
/@opentelemetry/instrumentation@0.41.1(@opentelemetry/api@1.4.1): /@opentelemetry/instrumentation@0.41.1(@opentelemetry/api@1.4.1):
resolution: {integrity: sha512-IsOidIIgI7Sg2NhWGYRZRifiv9kLyrxT89hBK1YVPDetuBEBUgFzD5VXdwqwfOKL3kgT4KiERMmLJ8gqig0o1A==} resolution: {integrity: sha512-IsOidIIgI7Sg2NhWGYRZRifiv9kLyrxT89hBK1YVPDetuBEBUgFzD5VXdwqwfOKL3kgT4KiERMmLJ8gqig0o1A==}
engines: {node: '>=14'} engines: {node: '>=14'}
@ -12915,7 +12953,7 @@ packages:
js-string-escape: 1.0.1 js-string-escape: 1.0.1
lodash: 4.17.21 lodash: 4.17.21
md5-hex: 3.0.1 md5-hex: 3.0.1
semver: 7.5.1 semver: 7.5.3
well-known-symbols: 2.0.0 well-known-symbols: 2.0.0
/concurrently@8.1.0: /concurrently@8.1.0:
@ -13589,7 +13627,7 @@ packages:
prop-types: 15.8.1 prop-types: 15.8.1
react: 18.2.0 react: 18.2.0
react-is: 17.0.2 react-is: 17.0.2
tslib: 2.5.3 tslib: 2.6.0
/downshift@7.6.0(react@18.2.0): /downshift@7.6.0(react@18.2.0):
resolution: {integrity: sha512-VSoTVynTAsabou/hbZ6HJHUVhtBiVOjQoBsCPcQq5eAROIGP+9XKMp9asAKQ3cEcUP4oe0fFdD2pziUjhFY33Q==} resolution: {integrity: sha512-VSoTVynTAsabou/hbZ6HJHUVhtBiVOjQoBsCPcQq5eAROIGP+9XKMp9asAKQ3cEcUP4oe0fFdD2pziUjhFY33Q==}
@ -13969,8 +14007,8 @@ packages:
resolution: {integrity: sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==} resolution: {integrity: sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==}
dependencies: dependencies:
debug: 3.2.7 debug: 3.2.7
is-core-module: 2.11.0 is-core-module: 2.12.1
resolve: 1.22.1 resolve: 1.22.2
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
dev: true dev: true
@ -13988,7 +14026,7 @@ packages:
eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.51.0)(eslint-import-resolver-typescript@3.5.3)(eslint@8.42.0) eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.51.0)(eslint-import-resolver-typescript@3.5.3)(eslint@8.42.0)
get-tsconfig: 4.4.0 get-tsconfig: 4.4.0
globby: 13.1.3 globby: 13.1.3
is-core-module: 2.11.0 is-core-module: 2.12.1
is-glob: 4.0.3 is-glob: 4.0.3
synckit: 0.8.5 synckit: 0.8.5
transitivePeerDependencies: transitivePeerDependencies:
@ -14045,11 +14083,11 @@ packages:
eslint-import-resolver-node: 0.3.7 eslint-import-resolver-node: 0.3.7
eslint-module-utils: 2.7.4(@typescript-eslint/parser@5.51.0)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.3)(eslint@8.42.0) eslint-module-utils: 2.7.4(@typescript-eslint/parser@5.51.0)(eslint-import-resolver-node@0.3.7)(eslint-import-resolver-typescript@3.5.3)(eslint@8.42.0)
has: 1.0.3 has: 1.0.3
is-core-module: 2.11.0 is-core-module: 2.12.1
is-glob: 4.0.3 is-glob: 4.0.3
minimatch: 3.1.2 minimatch: 3.1.2
object.values: 1.1.6 object.values: 1.1.6
resolve: 1.22.1 resolve: 1.22.2
semver: 6.3.0 semver: 6.3.0
tsconfig-paths: 3.14.1 tsconfig-paths: 3.14.1
transitivePeerDependencies: transitivePeerDependencies:
@ -15745,12 +15783,6 @@ packages:
dependencies: dependencies:
ci-info: 3.7.1 ci-info: 3.7.1
/is-core-module@2.11.0:
resolution: {integrity: sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==}
dependencies:
has: 1.0.3
dev: true
/is-core-module@2.12.1: /is-core-module@2.12.1:
resolution: {integrity: sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==} resolution: {integrity: sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==}
dependencies: dependencies:
@ -18781,6 +18813,17 @@ packages:
split2: 4.1.0 split2: 4.1.0
dev: false dev: false
/pino-opentelemetry-transport@0.1.0(@opentelemetry/api@1.4.1):
resolution: {integrity: sha512-MCPVdKPSXIaS/kY7NzGNK3zObuEDLR+sB+uy4TTAhdQ7iYcPhLy+pGF2gh82slkEUtBBCtd5Sl+39wyo8KOHag==}
dependencies:
'@opentelemetry/api-logs': 0.41.1
'@opentelemetry/exporter-logs-otlp-grpc': 0.41.1(@opentelemetry/api-logs@0.41.1)(@opentelemetry/api@1.4.1)
'@opentelemetry/sdk-logs': 0.41.1(@opentelemetry/api-logs@0.41.1)(@opentelemetry/api@1.4.1)
pino-abstract-transport: 1.0.0
transitivePeerDependencies:
- '@opentelemetry/api'
dev: false
/pino-pretty@10.0.0: /pino-pretty@10.0.0:
resolution: {integrity: sha512-zKFjYXBzLaLTEAN1ayKpHXtL5UeRQC7R3lvhKe7fWs7hIVEjKGG/qIXwQt9HmeUp71ogUd/YcW+LmMwRp4KT6Q==} resolution: {integrity: sha512-zKFjYXBzLaLTEAN1ayKpHXtL5UeRQC7R3lvhKe7fWs7hIVEjKGG/qIXwQt9HmeUp71ogUd/YcW+LmMwRp4KT6Q==}
hasBin: true hasBin: true
@ -19293,7 +19336,7 @@ packages:
estree-to-babel: 3.2.1 estree-to-babel: 3.2.1
neo-async: 2.6.2 neo-async: 2.6.2
node-dir: 0.1.17 node-dir: 0.1.17
resolve: 1.22.1 resolve: 1.22.2
strip-indent: 3.0.0 strip-indent: 3.0.0
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
@ -20113,15 +20156,6 @@ packages:
resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==}
engines: {node: '>=8'} engines: {node: '>=8'}
/resolve@1.22.1:
resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==}
hasBin: true
dependencies:
is-core-module: 2.12.1
path-parse: 1.0.7
supports-preserve-symlinks-flag: 1.0.0
dev: true
/resolve@1.22.2: /resolve@1.22.2:
resolution: {integrity: sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==} resolution: {integrity: sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==}
hasBin: true hasBin: true
@ -20134,7 +20168,7 @@ packages:
resolution: {integrity: sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==} resolution: {integrity: sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==}
hasBin: true hasBin: true
dependencies: dependencies:
is-core-module: 2.11.0 is-core-module: 2.12.1
path-parse: 1.0.7 path-parse: 1.0.7
supports-preserve-symlinks-flag: 1.0.0 supports-preserve-symlinks-flag: 1.0.0
dev: true dev: true