Commit a0a7956e authored by Annie Ke's avatar Annie Ke Committed by GitHub

fix: send batch-submitter error logs to sentry (#525)

* fix: send batch-submitter error logs to sentry

* chore: changeset

* move sentry to logger and use multi-stream
parent f950b71b
---
"@eth-optimism/core-utils": minor
"@eth-optimism/batch-submitter": patch
---
initialize Sentry and streams in Logger, remove Sentry from Batch Submitter
...@@ -39,8 +39,7 @@ ...@@ -39,8 +39,7 @@
"bluebird": "^3.7.2", "bluebird": "^3.7.2",
"dotenv": "^8.2.0", "dotenv": "^8.2.0",
"ethers": "5.0.0", "ethers": "5.0.0",
"old-contracts": "npm:@eth-optimism/contracts@^0.0.2-alpha.7", "old-contracts": "npm:@eth-optimism/contracts@^0.0.2-alpha.7"
"pino-sentry": "^0.6.1"
}, },
"devDependencies": { "devDependencies": {
"@eth-optimism/smock": "^1.0.0", "@eth-optimism/smock": "^1.0.0",
......
/* External Imports */ /* External Imports */
import { Logger, injectL2Context } from '@eth-optimism/core-utils' import { Logger, injectL2Context } from '@eth-optimism/core-utils'
import { createWriteStream } from 'pino-sentry'
import { exit } from 'process' import { exit } from 'process'
import { Signer, Wallet } from 'ethers' import { Signer, Wallet } from 'ethers'
import { JsonRpcProvider, TransactionReceipt } from '@ethersproject/providers' import { JsonRpcProvider, TransactionReceipt } from '@ethersproject/providers'
...@@ -17,11 +16,13 @@ import { ...@@ -17,11 +16,13 @@ import {
} from '..' } from '..'
/* Logger */ /* Logger */
const destination = createWriteStream({ const log = new Logger({
name: 'oe:batch-submitter:init',
sentryOptions: {
dsn: process.env.SENTRY_DSN, dsn: process.env.SENTRY_DSN,
tracesSampleRate: 0.05, tracesSampleRate: 0.05,
},
}) })
const log = new Logger({ name: 'oe:batch-submitter:init', destination })
interface RequiredEnvVars { interface RequiredEnvVars {
// The HTTP provider URL for L1. // The HTTP provider URL for L1.
......
...@@ -31,9 +31,13 @@ ...@@ -31,9 +31,13 @@
}, },
"dependencies": { "dependencies": {
"@ethersproject/abstract-provider": "^5.0.9", "@ethersproject/abstract-provider": "^5.0.9",
"@sentry/node": "^6.3.0",
"@types/pino-multi-stream": "^5.1.1",
"ethers": "^5.0.31", "ethers": "^5.0.31",
"lodash": "^4.17.21", "lodash": "^4.17.21",
"pino": "^6.11.1", "pino": "^6.11.1",
"prom-client": "^13.1.0" "prom-client": "^13.1.0",
"pino-multi-stream": "^5.3.0",
"pino-sentry": "^0.7.0"
} }
} }
import pino, { import pino, { LoggerOptions as PinoLoggerOptions } from 'pino'
LoggerOptions as PinoLoggerOptions, import pinoms, { Streams } from 'pino-multi-stream'
DestinationObjectOptions, import { createWriteStream } from 'pino-sentry'
DestinationStream, import { NodeOptions } from '@sentry/node'
} from 'pino'
export type LogLevel = 'trace' | 'debug' | 'info' | 'warn' | 'error' | 'fatal' export type LogLevel = 'trace' | 'debug' | 'info' | 'warn' | 'error' | 'fatal'
export interface LoggerOptions { export interface LoggerOptions {
name: string name: string
level?: LogLevel level?: LogLevel
destination?: DestinationObjectOptions | DestinationStream sentryOptions?: NodeOptions
streams?: Streams
} }
/** /**
...@@ -31,9 +31,16 @@ export class Logger { ...@@ -31,9 +31,16 @@ export class Logger {
base: null, base: null,
} }
this.inner = options.destination let loggerStreams: Streams = [{ stream: process.stdout }]
? pino(loggerOptions, pino.destination(options.destination)) if (options.sentryOptions) {
: pino(loggerOptions) loggerStreams.push({
level: 'error',
stream: createWriteStream(options.sentryOptions),
})
}
if (options.streams) loggerStreams = loggerStreams.concat(options.streams)
this.inner = pino(loggerOptions, pinoms.multistream(loggerStreams))
} }
child(bindings: pino.Bindings): Logger { child(bindings: pino.Bindings): Logger {
......
...@@ -1744,6 +1744,17 @@ ...@@ -1744,6 +1744,17 @@
"@sentry/utils" "6.2.5" "@sentry/utils" "6.2.5"
tslib "^1.9.3" tslib "^1.9.3"
"@sentry/core@6.3.0":
version "6.3.0"
resolved "https://registry.yarnpkg.com/@sentry/core/-/core-6.3.0.tgz#3b8db24918a00c0b77f1663fc6d9be925f66bb3e"
integrity sha512-voot/lJ9gRXB6bx6tVqbEbD6jOd4Sx6Rfmm6pzfpom9C0q+fjIZTatTLq8GdXj8DzxaH1MBDSwtaq/eC3NqYpA==
dependencies:
"@sentry/hub" "6.3.0"
"@sentry/minimal" "6.3.0"
"@sentry/types" "6.3.0"
"@sentry/utils" "6.3.0"
tslib "^1.9.3"
"@sentry/hub@5.30.0": "@sentry/hub@5.30.0":
version "5.30.0" version "5.30.0"
resolved "https://registry.yarnpkg.com/@sentry/hub/-/hub-5.30.0.tgz#2453be9b9cb903404366e198bd30c7ca74cdc100" resolved "https://registry.yarnpkg.com/@sentry/hub/-/hub-5.30.0.tgz#2453be9b9cb903404366e198bd30c7ca74cdc100"
...@@ -1762,6 +1773,15 @@ ...@@ -1762,6 +1773,15 @@
"@sentry/utils" "6.2.5" "@sentry/utils" "6.2.5"
tslib "^1.9.3" tslib "^1.9.3"
"@sentry/hub@6.3.0":
version "6.3.0"
resolved "https://registry.yarnpkg.com/@sentry/hub/-/hub-6.3.0.tgz#4225b3b0f31fe47f24d80753b257a4b57de5d651"
integrity sha512-lAnW3Om66t9IR+t1wya1NpOF9lGbvYG6Ca8wxJJGJ1t2PxKwyxpZKzRx0q8M1QFhlZ5cETCzxmM7lBEZ4QVCBg==
dependencies:
"@sentry/types" "6.3.0"
"@sentry/utils" "6.3.0"
tslib "^1.9.3"
"@sentry/minimal@5.30.0": "@sentry/minimal@5.30.0":
version "5.30.0" version "5.30.0"
resolved "https://registry.yarnpkg.com/@sentry/minimal/-/minimal-5.30.0.tgz#ce3d3a6a273428e0084adcb800bc12e72d34637b" resolved "https://registry.yarnpkg.com/@sentry/minimal/-/minimal-5.30.0.tgz#ce3d3a6a273428e0084adcb800bc12e72d34637b"
...@@ -1780,7 +1800,16 @@ ...@@ -1780,7 +1800,16 @@
"@sentry/types" "6.2.5" "@sentry/types" "6.2.5"
tslib "^1.9.3" tslib "^1.9.3"
"@sentry/node@^5.18.1", "@sentry/node@^5.21.1": "@sentry/minimal@6.3.0":
version "6.3.0"
resolved "https://registry.yarnpkg.com/@sentry/minimal/-/minimal-6.3.0.tgz#e64d87c92a4676a11168672a96589f46985f2b22"
integrity sha512-ZdPUwdPQkaKroy67NkwQRqmnfKyd/C1OyouM9IqYKyBjAInjOijwwc/Rd91PMHalvCOGfp1scNZYbZ+YFs/qQQ==
dependencies:
"@sentry/hub" "6.3.0"
"@sentry/types" "6.3.0"
tslib "^1.9.3"
"@sentry/node@^5.18.1":
version "5.30.0" version "5.30.0"
resolved "https://registry.yarnpkg.com/@sentry/node/-/node-5.30.0.tgz#4ca479e799b1021285d7fe12ac0858951c11cd48" resolved "https://registry.yarnpkg.com/@sentry/node/-/node-5.30.0.tgz#4ca479e799b1021285d7fe12ac0858951c11cd48"
integrity sha512-Br5oyVBF0fZo6ZS9bxbJZG4ApAjRqAnqFFurMVJJdunNb80brh7a5Qva2kjhm+U6r9NJAB5OmDyPkA1Qnt+QVg== integrity sha512-Br5oyVBF0fZo6ZS9bxbJZG4ApAjRqAnqFFurMVJJdunNb80brh7a5Qva2kjhm+U6r9NJAB5OmDyPkA1Qnt+QVg==
...@@ -1810,6 +1839,21 @@ ...@@ -1810,6 +1839,21 @@
lru_map "^0.3.3" lru_map "^0.3.3"
tslib "^1.9.3" tslib "^1.9.3"
"@sentry/node@^6.3.0":
version "6.3.0"
resolved "https://registry.yarnpkg.com/@sentry/node/-/node-6.3.0.tgz#8d55f32930d531b9a2a3b594754392925b1e3816"
integrity sha512-n3RemuJsMpSbrIopJ2TxeECwQy/Dvho59SePAVQzK0s6dpG3Ak6YWQSh1XESbFbgLi4KzkbMdeBgznmmEbZPgg==
dependencies:
"@sentry/core" "6.3.0"
"@sentry/hub" "6.3.0"
"@sentry/tracing" "6.3.0"
"@sentry/types" "6.3.0"
"@sentry/utils" "6.3.0"
cookie "^0.4.1"
https-proxy-agent "^5.0.0"
lru_map "^0.3.3"
tslib "^1.9.3"
"@sentry/tracing@5.30.0": "@sentry/tracing@5.30.0":
version "5.30.0" version "5.30.0"
resolved "https://registry.yarnpkg.com/@sentry/tracing/-/tracing-5.30.0.tgz#501d21f00c3f3be7f7635d8710da70d9419d4e1f" resolved "https://registry.yarnpkg.com/@sentry/tracing/-/tracing-5.30.0.tgz#501d21f00c3f3be7f7635d8710da70d9419d4e1f"
...@@ -1832,6 +1876,17 @@ ...@@ -1832,6 +1876,17 @@
"@sentry/utils" "6.2.5" "@sentry/utils" "6.2.5"
tslib "^1.9.3" tslib "^1.9.3"
"@sentry/tracing@6.3.0":
version "6.3.0"
resolved "https://registry.yarnpkg.com/@sentry/tracing/-/tracing-6.3.0.tgz#5da2ce67bb5f9cf4f3aa9b6dff06089478f0c501"
integrity sha512-3UNGgQOrDKBoDqLc4vt+0n27Zv3lbNEoCbBydq4IvGfuYq7ozWMsaTcelsotMsd4ckDuOEh8V/nJTqrDjvL76g==
dependencies:
"@sentry/hub" "6.3.0"
"@sentry/minimal" "6.3.0"
"@sentry/types" "6.3.0"
"@sentry/utils" "6.3.0"
tslib "^1.9.3"
"@sentry/types@5.30.0": "@sentry/types@5.30.0":
version "5.30.0" version "5.30.0"
resolved "https://registry.yarnpkg.com/@sentry/types/-/types-5.30.0.tgz#19709bbe12a1a0115bc790b8942917da5636f402" resolved "https://registry.yarnpkg.com/@sentry/types/-/types-5.30.0.tgz#19709bbe12a1a0115bc790b8942917da5636f402"
...@@ -1842,6 +1897,11 @@ ...@@ -1842,6 +1897,11 @@
resolved "https://registry.yarnpkg.com/@sentry/types/-/types-6.2.5.tgz#34b75285b149e0b9bc5fd54fcc2c445d978c7f2e" resolved "https://registry.yarnpkg.com/@sentry/types/-/types-6.2.5.tgz#34b75285b149e0b9bc5fd54fcc2c445d978c7f2e"
integrity sha512-1Sux6CLYrV9bETMsGP/HuLFLouwKoX93CWzG8BjMueW+Di0OGxZphYjXrGuDs8xO8bAKEVGCHgVQdcB2jevS0w== integrity sha512-1Sux6CLYrV9bETMsGP/HuLFLouwKoX93CWzG8BjMueW+Di0OGxZphYjXrGuDs8xO8bAKEVGCHgVQdcB2jevS0w==
"@sentry/types@6.3.0":
version "6.3.0"
resolved "https://registry.yarnpkg.com/@sentry/types/-/types-6.3.0.tgz#919cc1870f34b7126546c77e3c695052795d3add"
integrity sha512-xWyCYDmFPjS5ex60kxOOHbHEs4vs00qHbm0iShQfjl4OSg9S2azkcWofDmX8Xbn0FSOUXgdPCjNJW1B0bPVhCA==
"@sentry/utils@5.30.0": "@sentry/utils@5.30.0":
version "5.30.0" version "5.30.0"
resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-5.30.0.tgz#9a5bd7ccff85ccfe7856d493bffa64cabc41e980" resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-5.30.0.tgz#9a5bd7ccff85ccfe7856d493bffa64cabc41e980"
...@@ -1858,6 +1918,14 @@ ...@@ -1858,6 +1918,14 @@
"@sentry/types" "6.2.5" "@sentry/types" "6.2.5"
tslib "^1.9.3" tslib "^1.9.3"
"@sentry/utils@6.3.0":
version "6.3.0"
resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-6.3.0.tgz#e28645b6d4acd03a478e58bfe112ea02f81e94a0"
integrity sha512-NZzw4oLelgvCsVBG2e+ZtFtaBvgA7rZYtcGFbZTphhAlYoJ6JMCQUzYk0iwJK79yR1quh510x4UE0jynvvToWg==
dependencies:
"@sentry/types" "6.3.0"
tslib "^1.9.3"
"@sindresorhus/is@^0.14.0": "@sindresorhus/is@^0.14.0":
version "0.14.0" version "0.14.0"
resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea"
...@@ -2138,6 +2206,20 @@ ...@@ -2138,6 +2206,20 @@
dependencies: dependencies:
"@types/node" "*" "@types/node" "*"
"@types/pino-multi-stream@^5.1.1":
version "5.1.1"
resolved "https://registry.yarnpkg.com/@types/pino-multi-stream/-/pino-multi-stream-5.1.1.tgz#8d5bc607357324621667c8a5613d4a534c075d0f"
integrity sha512-juOdSxwfE5TFKJJlq/VzXxTRyO+9yI9RZoyh/CYnof8MvqM+aUSUP1ZXGTuOZe7qgQnGp8xr8NHU2O/rTrYysA==
dependencies:
"@types/pino" "*"
"@types/pino-pretty@*":
version "4.7.0"
resolved "https://registry.yarnpkg.com/@types/pino-pretty/-/pino-pretty-4.7.0.tgz#e4a18541f8464d1cc48216f5593cc6a0e62dc2c3"
integrity sha512-fIZ+VXf9gJoJR4tiiM7G+j/bZkPoZEfFGzA4d8tAWCTpTVyvVaBwnmdLs3wEXYpMjw8eXulrOzNCjmGHT3FgHw==
dependencies:
"@types/pino" "*"
"@types/pino-std-serializers@*": "@types/pino-std-serializers@*":
version "2.4.1" version "2.4.1"
resolved "https://registry.yarnpkg.com/@types/pino-std-serializers/-/pino-std-serializers-2.4.1.tgz#f8bd52a209c8b3c97d1533b1ba27f57c816382bf" resolved "https://registry.yarnpkg.com/@types/pino-std-serializers/-/pino-std-serializers-2.4.1.tgz#f8bd52a209c8b3c97d1533b1ba27f57c816382bf"
...@@ -2145,6 +2227,16 @@ ...@@ -2145,6 +2227,16 @@
dependencies: dependencies:
"@types/node" "*" "@types/node" "*"
"@types/pino@*":
version "6.3.7"
resolved "https://registry.yarnpkg.com/@types/pino/-/pino-6.3.7.tgz#0ccef98a159230cb3fa2589c7e8b00a7550a69f6"
integrity sha512-v7FdDXVEL0Zx1zcCf0cJZMojChnF+O0ujDKV1UdocsLuUhENjdtNIaanCZK1zRELp35x//bI2/IHtYUK0vmRvw==
dependencies:
"@types/node" "*"
"@types/pino-pretty" "*"
"@types/pino-std-serializers" "*"
"@types/sonic-boom" "*"
"@types/pino@^6.3.6": "@types/pino@^6.3.6":
version "6.3.6" version "6.3.6"
resolved "https://registry.yarnpkg.com/@types/pino/-/pino-6.3.6.tgz#3aa928bcbd30dc0c6a0ec2e9302cabd5dee6e832" resolved "https://registry.yarnpkg.com/@types/pino/-/pino-6.3.6.tgz#3aa928bcbd30dc0c6a0ec2e9302cabd5dee6e832"
...@@ -9933,6 +10025,13 @@ pinkie@^2.0.0: ...@@ -9933,6 +10025,13 @@ pinkie@^2.0.0:
resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870"
integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA=
pino-multi-stream@^5.3.0:
version "5.3.0"
resolved "https://registry.yarnpkg.com/pino-multi-stream/-/pino-multi-stream-5.3.0.tgz#2816ec4422c7e37e676a210a1705c7155506afd4"
integrity sha512-4fAGCRll18I+JmoAbxDvU9zc5sera/3c+VgTtUdoNMOZ/VSHB+HMAYtixKpeRmZTDHDDdE2rtwjVkuwWB8mYQA==
dependencies:
pino "^6.0.0"
pino-pretty@^4.7.1: pino-pretty@^4.7.1:
version "4.7.1" version "4.7.1"
resolved "https://registry.yarnpkg.com/pino-pretty/-/pino-pretty-4.7.1.tgz#499cf185e110399deae731221c899915c811bd1a" resolved "https://registry.yarnpkg.com/pino-pretty/-/pino-pretty-4.7.1.tgz#499cf185e110399deae731221c899915c811bd1a"
...@@ -9950,12 +10049,12 @@ pino-pretty@^4.7.1: ...@@ -9950,12 +10049,12 @@ pino-pretty@^4.7.1:
split2 "^3.1.1" split2 "^3.1.1"
strip-json-comments "^3.1.1" strip-json-comments "^3.1.1"
pino-sentry@^0.6.1: pino-sentry@^0.7.0:
version "0.6.1" version "0.7.0"
resolved "https://registry.yarnpkg.com/pino-sentry/-/pino-sentry-0.6.1.tgz#ba3c6b0f904f918a55d99e4fd87cc92da4ba5164" resolved "https://registry.yarnpkg.com/pino-sentry/-/pino-sentry-0.7.0.tgz#087717d2787ec437627e97454238ca7ce0562a91"
integrity sha512-UWA+rR7ybFFePqMw+hBL93hIureAWw+WfnxTjT3xg7an0lTnZRZ6rSdxIBgNb0pyKx9goHFaQbYU7Y6vSuIIXg== integrity sha512-/rZO1R/oMcMa4mzfIqW6Afap+TGgVHgB8iZfzwjhLdT2PhyuTUNJ3KJT2eIZ0citsQNv26pxRzIPbqgHuQtUAQ==
dependencies: dependencies:
"@sentry/node" "^5.21.1" "@sentry/node" "^6.2.5"
commander "^2.20.0" commander "^2.20.0"
pumpify "^2.0.1" pumpify "^2.0.1"
split2 "^3.1.1" split2 "^3.1.1"
...@@ -9966,6 +10065,18 @@ pino-std-serializers@^3.1.0: ...@@ -9966,6 +10065,18 @@ pino-std-serializers@^3.1.0:
resolved "https://registry.yarnpkg.com/pino-std-serializers/-/pino-std-serializers-3.2.0.tgz#b56487c402d882eb96cd67c257868016b61ad671" resolved "https://registry.yarnpkg.com/pino-std-serializers/-/pino-std-serializers-3.2.0.tgz#b56487c402d882eb96cd67c257868016b61ad671"
integrity sha512-EqX4pwDPrt3MuOAAUBMU0Tk5kR/YcCM5fNPEzgCO2zJ5HfX0vbiH9HbJglnyeQsN96Kznae6MWD47pZB5avTrg== integrity sha512-EqX4pwDPrt3MuOAAUBMU0Tk5kR/YcCM5fNPEzgCO2zJ5HfX0vbiH9HbJglnyeQsN96Kznae6MWD47pZB5avTrg==
pino@^6.0.0:
version "6.11.3"
resolved "https://registry.yarnpkg.com/pino/-/pino-6.11.3.tgz#0c02eec6029d25e6794fdb6bbea367247d74bc29"
integrity sha512-drPtqkkSf0ufx2gaea3TryFiBHdNIdXKf5LN0hTM82SXI4xVIve2wLwNg92e1MT6m3jASLu6VO7eGY6+mmGeyw==
dependencies:
fast-redact "^3.0.0"
fast-safe-stringify "^2.0.7"
flatstr "^1.0.12"
pino-std-serializers "^3.1.0"
quick-format-unescaped "^4.0.3"
sonic-boom "^1.0.2"
pino@^6.11.1: pino@^6.11.1:
version "6.11.2" version "6.11.2"
resolved "https://registry.yarnpkg.com/pino/-/pino-6.11.2.tgz#2f3d119c526651aab4ec3d280844785d52d0b690" resolved "https://registry.yarnpkg.com/pino/-/pino-6.11.2.tgz#2f3d119c526651aab4ec3d280844785d52d0b690"
...@@ -10307,6 +10418,11 @@ quick-format-unescaped@4.0.1: ...@@ -10307,6 +10418,11 @@ quick-format-unescaped@4.0.1:
resolved "https://registry.yarnpkg.com/quick-format-unescaped/-/quick-format-unescaped-4.0.1.tgz#437a5ea1a0b61deb7605f8ab6a8fd3858dbeb701" resolved "https://registry.yarnpkg.com/quick-format-unescaped/-/quick-format-unescaped-4.0.1.tgz#437a5ea1a0b61deb7605f8ab6a8fd3858dbeb701"
integrity sha512-RyYpQ6Q5/drsJyOhrWHYMWTedvjTIat+FTwv0K4yoUxzvekw2aRHMQJLlnvt8UantkZg2++bEzD9EdxXqkWf4A== integrity sha512-RyYpQ6Q5/drsJyOhrWHYMWTedvjTIat+FTwv0K4yoUxzvekw2aRHMQJLlnvt8UantkZg2++bEzD9EdxXqkWf4A==
quick-format-unescaped@^4.0.3:
version "4.0.3"
resolved "https://registry.yarnpkg.com/quick-format-unescaped/-/quick-format-unescaped-4.0.3.tgz#6d6b66b8207aa2b35eef12be1421bb24c428f652"
integrity sha512-MaL/oqh02mhEo5m5J2rwsVL23Iw2PEaGVHgT2vFt8AAsr0lfvQA5dpXo9TPu0rz7tSBdUPgkbam0j/fj5ZM8yg==
quick-lru@^4.0.1: quick-lru@^4.0.1:
version "4.0.1" version "4.0.1"
resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f" resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment