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

feat[dtl]: add endpoint metrics (#698)

* add prom bundle to measure endpoint metrics

* add changeset
parent 0bd11296
---
'@eth-optimism/data-transport-layer': patch
---
add metrics to measure http endpoint latency
......@@ -19,9 +19,9 @@
"build": "tsc -p tsconfig.build.json"
},
"dependencies": {
"@eth-optimism/common-ts": "^0.0.1",
"@eth-optimism/contracts": "^0.2.8",
"@eth-optimism/core-utils": "^0.3.2",
"@eth-optimism/common-ts": "^0.0.1",
"@ethersproject/providers": "^5.0.21",
"@sentry/node": "^6.3.1",
"@sentry/tracing": "^6.3.1",
......@@ -32,6 +32,7 @@
"dotenv": "^8.2.0",
"ethers": "^5.0.26",
"express": "^4.17.1",
"express-prom-bundle": "^6.3.6",
"level": "^6.0.1",
"levelup": "^4.4.0",
"node-fetch": "^2.6.1"
......
/* Imports: External */
import { BaseService } from '@eth-optimism/common-ts'
import express, { Request, Response } from 'express'
import promBundle from 'express-prom-bundle'
import cors from 'cors'
import { BigNumber } from 'ethers'
import { JsonRpcProvider } from '@ethersproject/providers'
......@@ -105,6 +106,7 @@ export class L1TransportServer extends BaseService<L1TransportServerOptions> {
private _initializeApp() {
// TODO: Maybe pass this in as a parameter instead of creating it here?
this.state.app = express()
// Init Sentry options
Sentry.init({
dsn: this.options.sentryDsn,
release: `data-transport-layer@${process.env.npm_package_version}`,
......@@ -118,6 +120,12 @@ export class L1TransportServer extends BaseService<L1TransportServerOptions> {
})
this.state.app.use(Sentry.Handlers.requestHandler())
this.state.app.use(Sentry.Handlers.tracingHandler())
// Init metrics
const metricsMiddleware = promBundle({
includeMethod: true,
includePath: true,
})
this.state.app.use(metricsMiddleware)
this.state.app.use(cors())
this._registerAllRoutes()
this.state.app.use(Sentry.Handlers.errorHandler())
......
......@@ -6068,6 +6068,14 @@ expand-template@^2.0.3:
resolved "https://registry.yarnpkg.com/expand-template/-/expand-template-2.0.3.tgz#6e14b3fcee0f3a6340ecb57d2e8918692052a47c"
integrity sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==
express-prom-bundle@^6.3.6:
version "6.3.6"
resolved "https://registry.yarnpkg.com/express-prom-bundle/-/express-prom-bundle-6.3.6.tgz#c8da1c1024edfcc54953c365991aca57ffd0cfda"
integrity sha512-IRsTRCEKCVCHEriQlZ1FuutjEFc89KASsveXh+1HcGEnuZKiAC4LugxrsGEIdySqYvqOYSr2SWHJ6L8/BK2SHA==
dependencies:
on-finished "^2.3.0"
url-value-parser "^2.0.0"
express@^4.14.0, express@^4.17.1:
version "4.17.1"
resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134"
......@@ -9933,7 +9941,7 @@ oboe@2.1.4:
ethers "5.0.0"
ganache-core "^2.12.1"
on-finished@~2.3.0:
on-finished@^2.3.0, on-finished@~2.3.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947"
integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=
......@@ -13082,6 +13090,11 @@ url-to-options@^1.0.1:
resolved "https://registry.yarnpkg.com/url-to-options/-/url-to-options-1.0.1.tgz#1505a03a289a48cbd7a434efbaeec5055f5633a9"
integrity sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k=
url-value-parser@^2.0.0:
version "2.0.3"
resolved "https://registry.yarnpkg.com/url-value-parser/-/url-value-parser-2.0.3.tgz#cd4b8d6754e458d65e8125260c09718d926e6e21"
integrity sha512-FjIX+Q9lYmDM9uYIGdMYfQW0uLbWVwN2NrL2ayAI7BTOvEwzH+VoDdNquwB9h4dFAx+u6mb0ONLa3sHD5DvyvA==
url@^0.11.0:
version "0.11.0"
resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1"
......
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