Today I Learned
날짜
2024년 1월 9일 목요일
내용
Sentry에서 Stack Trace를 추가하는법
에러가 난 구체적인 코드를 아는 건 서비스의 에러를 해결하는데 정말 큰 도움이 된다. (구) 글로벌팀의 서비스들은 Sentry를 사용하고 있는데 구체적인 에러의 위치가 나타나지 않는다. 이전부터 지속적으로 웹훅에 오류가 발생하고 있는 상황이라 이 기능이 꼭 필요하다. 이걸 Stack Trace라고 한다.
사실 이전에 시도를 했었다. Github Integration을 하면 된다고 했는데, 그 이후에도 보이지 않는다..
이렇게 추가해줬다. 하지만 에러 메시지가 출력이 안되는데… capture_exception()
을 사용하면 된다는 글을 이제야 봤다. 빠르게 적용해봤다.
1
2
3
4
5
6
7
sentry_sdk.init(
dsn="https://2f5b704eb95bb7bf56b2e4ea0dd0a005@o4508011061772288.ingest.us.sentry.io/4508011708874752",
traces_sample_rate=0.5,
profiles_sample_rate=0.5,
include_local_variables=True,
environment="production",
)
main.py 에서 이렇게 초기화해줬다. 우리는 무료 플랜이라 용량이 그리 많지 않은데, 너무 많은 span이 발생해서 월말쯤에는 작동하지 않았다.. 그래서 1.0을 0.5로 줄여줬다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
def test_function(msg, msg2):
result = msg + msg2
return result
@router.get("/test")
def test_webhook():
try:
a = "test first"
b = 3
result = test_function(a, b)
return result
except Exception as e:
capture_exception(e) # 에러 캡쳐 지점
return {"error": str(e)}
이렇게 실행해봤다. 더하는 두 변수가 str과 int로 다르니 오류가 발생할거다.
내가 원하는 기능이었다. 굿!
회고
에러 딱대!