EEYatHo 앱 깎는 이야기

Crashlytics 본문

Monitoring

Crashlytics

EEYatHo 2024. 7. 21. 14:38
반응형
  • Crashlytics는 데이터를 90일까지만 유지 (무료인데 이정도면 감사합니다)

 

  • Crashlytics는 앱을 재실행 할 때, 디스크에 저장되어 있던 record들을 전송함.

 

  • Crashlytics 에서 유저의 기준
    • 앱을 개별적으로 설치한 것
    • 여러 기기에 앱을 설치한 사람이 있다면, Crashlytics는 각 설치를 다른 사용자로 계산
  • 세션의 기준
    • 유저가 앱에 참여하는 연속적인 기간
    • 앱이 새로 켜질 때 새 세션 시작 (콜드 스타트)
    • 최소 30분의 백그라운드 작동 후 포그라운드 상태가 될 때도 새 세션이 시작
  • 커스텀 key
    • record 발생시, 키값들을 함께 기록 (record의 “키” 탭에 있음)
    • NSDictionary
    • 64개의 키-값 쌍 지원. 개당 최대 1KB
    • 특정 record를 검토할 때, 커스텀 키를 함께 볼 수 있기에 앱의 구체적인 상태를 확인하게 해줌
    • record들을 커스텀 키로 필터링할 수도 있음
    • ex) language: ko, network: wifi
  • 커스텀 log
    • record 발생시, 로그들을 함께 기록 (record의 “로그 및 탐색경로” 탭에 있음)
    • 로그들 갯수 제한x, 총 크기를 64KB로 제한. 크기 초과하면 가장 오래된 log를 삭제
    • 특정 record를 검토할 때, 로그들을 함께 볼 수 있기에 record까지 어떤 과정이 있었는지 확인하게 해줌
    • log는 세션별로 관리됨. 앱이 종료된 후 다시 시작되면 이전 로그는 남아 있지 않음.
    • 커스텀 record는 log를 삭제 시키지 않음, 커스텀 record로 인해 로그가 꼬일 걱정은 안해도 됨. (로그1개 → 비충돌record → 로그2개 → record 시, 로그 3개가 보인다는 뜻)
    • ex) 네트워크 송수신, 화면 이동, 유저 액션 (버튼탭, 텍스트 입력 등), 타사 SDK api, 버그나 CS가 많이 발생하는 부분 / 크리티컬한 부분 (splash, 토큰 관리 등)
  • 사용자 식별자
    • 익명으로 유저들을 구별할 수 있는 기능 제공 (record의 “데이터” 탭에 있음)
    • 식별자로 해당 유저가 어떤 record들을 발생시켰는지 검색 가능
  • 커스텀 record (심각하지 않은 예외 보고)
    • 앱 크래시 외에도 커스텀한 record를 기록할 수 있음
    • Crashlytics는 세션별로 8개까지의 record만 저장. 한 세션에서 9개 이상이 발생하면, 이전 예외가 삭제됨.
      • record를 남발할 경우, 중요한 예외들이 보이지 않을 수 있으니 꼭 필요한 것에만 record 할 것
    • 커스텀 record 중 NSError를 사용할 경우, error의 domain과 code로 그룹화 됨.
      • domain과 code가 같으면 같은 record로 그룹화 됨.
      • NSError의 userInfo는 키-값 쌍으로 전환되어 “키”탭에서 확인 가능
        • 타임스탬프, userID 등을 domain이나 code에 넣어서 record의 카디널리티가 커질 경우, Crashlytics에서 오류 보고를 제한해야 할 수도 있음. 이러한 값들은 error의 userInfo에 넣을 것.
    • 커스텀 record는 삭제될 수 있음
      1. Crashlytics는 세션별로 8개까지의 record만 저장. 한 세션에서 9개 이상이 발생하면, 이전 예외가 삭제됨.
        • record를 남발할 경우, 중요한 예외들이 보이지 않을 수 있으니 꼭 필요한 것에만 record 할 것
      2. Crashlytics는 앱을 재실행 할 때, 디스크에 저장되어 있던 record들을 전송하며, 디바이스의 저장 공간을 과하게 사용하지 않기 위해 디스크 할당 공간을 제한함.
        • record를 전송하지 못한채로, 커스텀 record들이 쌓이면, 오래된 record가 삭제될 수 있음
    • ex) 중요한 부분에 예상치 못한 SideEffect로 인해 오류가 발생할 경우, 예상치 못한 API 에러, 타사 SDK 에러,
  • record의 그룹화
    • 비정상 종료는 스택 트레이스 분석을 통해 그룹화 됨
    • 커스텀 record 중 NSError를 사용하는 심각하지 않은 예외는 error의 domain과 code로 그룹화 됨.
  • 디버그시 발생하지 않는 버그를 고치는데 큰 도움을 줌
    • 앱이 백그라운드를 거쳐서 실행되는 경우, 디버그로 실행하면 발생하지 않았음;
  • 모니터링을 통해..
    • 오류를 추척할 수 있는 데이터 수집으로 든든함을 느낌
    • 특정 기기와 특정 OS버전에 대한 에러를 발견할 수 있음
  • ref
Comments