Sentry-javascript: withScope ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜, @sentry/node์—์„œ scope.setTag๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ๋งค์šฐ ๋ถ„๋ช…ํ•ฉ๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2019๋…„ 08์›” 12์ผ  ยท  3์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: getsentry/sentry-javascript

ํŒจํ‚ค์ง€ + ๋ฒ„์ „

  • [ ] @sentry/browser
  • [x] @sentry/node
  • [ ] raven-js
  • [ ] raven-node _(๋…ธ๋“œ์šฉ ๋ ˆ์ด๋ธ)_
  • [ ] ๋‹ค๋ฅธ:

๋ฒ„์ „:

5.5.0

์„ค๋ช…

#1762 ์ดํ›„ ์ƒˆ ๋ฌธ์ œ ๋งŒ๋“ค๊ธฐ๊ฐ€ ์ข…๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
@sentry/node์— ์ž‘์€ ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธด ๋ฌธ์ž์—ด๋กœ setTag ๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ํ›จ์”ฌ ์ปค์ง‘๋‹ˆ๋‹ค.
์ด๊ฒƒ์€ ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜์ผ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋‚ด DO droplet ๋ฉ”ํŠธ๋ฆญ์— ๋”ฐ๋ฅด๋ฉด ์„œ๋ฒ„๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•ด์•ผ๋งŒ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋Š” CPU ์‚ฌ์šฉ๋Ÿ‰ ๋ฐ ๊ณต๊ฐœ ๋Œ€์—ญํญ์˜ ์˜๊ตฌ์ ์ธ ์ฆ๊ฐ€๋ฅผ ์•ผ๊ธฐํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‹๋ณ„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๊ทธ๋ฆผ์€ setTag ์ถ”๊ฐ€ํ–ˆ์„ ๋•Œ(7์›” 11์ผ)์™€ ์ œ๊ฑฐํ–ˆ์„ ๋•Œ(8์›” 9์ผ) ์–ด๋–ป๊ฒŒ ๋˜์—ˆ๋Š”์ง€ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.
System memory (1)

Needs Reproduction

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

@kamilogorek ๋ฌธ์ œ๊ฐ€ ๋˜๋Š” ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. https://github.com/ParabolInc/action/blob/0bde4b002aa3d53fc00f1febcb39185079d827f2/packages/server/utils/sendToSentry.ts#L28 -L35

๋ณด๊ธฐ์—๋Š” ๋ฒ”์œ„๊ฐ€ GC๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ธ๊ธฐ๊ฐ€ ์—†์„ ์ˆ˜๋„ ์žˆ์ง€๋งŒ ๋‚ด๊ฐ€ ์ •๋ง๋กœ ์›ํ•˜๋Š” ๊ฒƒ์€ ์˜ˆ์™ธ ๋ฐ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊นจ๋—ํ•œ API ํ˜ธ์ถœ์ž…๋‹ˆ๋‹ค. ์˜ˆ: Sentry.captureExpection(error, {tags: {foo: 1}}) . ๋ฒ”์œ„ ๋ฐ ๊ด€๋ จ ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋“  3 ๋Œ“๊ธ€

์ด์— ๋Œ€ํ•œ ์žฌํ˜„ ์‚ฌ๋ก€๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์—ฌ๋Ÿฌ ๋™์‹œ ์š”์ฒญ์ด ์žˆ๋Š” setTag ๋Š” ํ™•์‹คํžˆ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ๋Š˜๋ฆฌ์ง€๋งŒ ๋ฒ”์œ„๊ฐ€ GC๋˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๊ธฐ์ค€์„ ์œผ๋กœ ๋–จ์–ด์ง‘๋‹ˆ๋‹ค.

@kamilogorek ๋ฌธ์ œ๊ฐ€ ๋˜๋Š” ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. https://github.com/ParabolInc/action/blob/0bde4b002aa3d53fc00f1febcb39185079d827f2/packages/server/utils/sendToSentry.ts#L28 -L35

๋ณด๊ธฐ์—๋Š” ๋ฒ”์œ„๊ฐ€ GC๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ธ๊ธฐ๊ฐ€ ์—†์„ ์ˆ˜๋„ ์žˆ์ง€๋งŒ ๋‚ด๊ฐ€ ์ •๋ง๋กœ ์›ํ•˜๋Š” ๊ฒƒ์€ ์˜ˆ์™ธ ๋ฐ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊นจ๋—ํ•œ API ํ˜ธ์ถœ์ž…๋‹ˆ๋‹ค. ์˜ˆ: Sentry.captureExpection(error, {tags: {foo: 1}}) . ๋ฒ”์œ„ ๋ฐ ๊ด€๋ จ ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

withScope ์ˆ˜๋ช… ์ฃผ๊ธฐ๊ฐ€ ๋๋‚  ๋•Œ popScope ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜์—ฌ ๋‚ด๋ถ€ ๋ฐฐ์—ด์—์„œ ๋ ˆ์ด์–ด๋ฅผ ์ œ๊ฑฐํ•˜๋ฏ€๋กœ ์ด์— ๋Œ€ํ•œ ๊ฐ•๋ ฅํ•œ ์ฐธ์กฐ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. GC๊ฐ€ ์ž๋™์œผ๋กœ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
fwfw ํ†ตํ™”๋ฅผ ๋‹ค์Œ์œผ๋กœ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Sentry.withScope((scope) => {
  scope.setUser(user)
  scope.setTags(tags)
  Sentry.captureException(error)
});
์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰