μλ‘
μλΉμ€ μ΄μμ ν΄λκ°λ©΄μ κΈ°μ‘΄μ μμμ μΌλ‘ μλ² health checkνλ λ°©μμΌλ‘λ μλΉμ€λ₯Ό λͺ¨λν°λ§νκΈ° μ΄λ €μ νλ‘λ©ν μ°μ€λ₯Ό λμ ν΄ μλ² λ§€νΈλ¦μ μμ§νκ³ κ·ΈλΌνλλ₯Ό 컀μ€ν°λ§μ΄μ§ν΄ μμ μλΉμ€λ₯Ό μν λμ보λλ₯Ό ꡬμΆνμ΅λλ€. μ΄λ₯Ό ν΅ν΄ λͺ¨λν°λ§μ μμ½κ²ν μ μμμ§λ§, λ λ€λ₯Έ λ¬Έμ μ μ΄ μμμ΅λλ€.
μμλ 24μκ° λΌμ΄λΈ μλΉμ€ μ€μ΄μ§λ§ λ°±μλ κ°λ°μκ° 24μκ° λμ보λλ₯Ό λ³Ό μ μλ λ Έλ¦μ΄μμ΅λλ€. λ, νλ‘ νΈ(iOSμ AOS)μ ν΅ν© ν μ€νΈλ ν¨κ» μ§ννμμ§λ§, λͺ¨λ°μΌ νλ«νΌμ νΉμ± μ μ¬μ¬λ₯Ό κ±°μ³ λ°°ν¬λ₯Ό ν΄μΌλ―λ‘ λ°°ν¬ν λλ§λ€ λκΈ°ν μλ μμμ΅λλ€. κ·Έ μΈμλ APIμ ν΄λΌμ΄μΈνΈ κ°μ λ²μ λμ΄λΌλκ° μ¬λμ μμ΄λ μλ¬ λ‘κ·Έ κ΄λ¦¬, λͺ¨λ°μΌ νλ«νΌ λ§λ€ λ°λ‘ λμν΄μ€μΌ νλ νΈλ¬λΈμν λ± κ³ λ €ν κ²μ΄ μ°λλ―Έ κ°μμ΅λλ€.
ν΄κ²°ν΄μΌ ν λ¬Έμ λ λ§μμ‘μ§λ§, μ²μ κ²½νν΄λ³΄λ μλΉμ€ μ΄μμ μμμ λλ¬νκ³ μ μλ―Έν νΈλν½μ΄ λ°μνκ³ μλ€λ μ μ λ무 μ¦κ±°μ μ΅λλ€. λ§€μΌ μΆκ·Όν λλ§λ€ κ·ΈλΌνλ λμ보λλ§ λ°λΌλ΄€λ κ² κ°λ€μ. μ μ λ€μ΄ μ΄μλ₯Ό μ§μ λ°κ²¬νκΈ° μ μ κ°λ°μλ€μ΄ νμ νκ³ κ³ μΉ μ μλ μμ€ν λ§λ€μ΄ λ¬Έμ λ₯Ό νλνλ ν΄κ²°ν΄ λ³΄κ² μ΅λλ€.
μ₯μ 경보, Issue Alert
λͺ¨λν°λ§ μμ€ν μ λμ νκ³ λμ μ’ μ’ λΉμ μμ μΈ νΈλν½μ΄ κ΄μΈ‘λμμ΅λλ€. μ£Όλ‘ ν ν°κ³Ό κ΄λ ¨λ APIμμ 4XX μλ¬κ° μΉμμλλ°, iOS νμ 리ν¬ν νκ³ ν¨κ» μμΈμ νμ ν΄λ³΄λ ν ν° κ°±μ κ³Ό κ΄λ ¨λ μ½λμμ 무ν 루νκ° λλ λ²κ·Έκ° μμμ΅λλ€.
κ΅μ₯ν μ΄κΈ°λΆν° μ‘΄μ¬νλ λ²κ·Έμμ§λ§, 무ν루ν λλ ν ν° κ°±μ μ½λμ λ³κ°λ‘ μ κ· λ°κΈμ μ μμ μΌλ‘ λμκΈ° λλ¬Έμ ν΅ν© ν
μ€νΈμμλ νμ
νμ§ λͺ»νλ κ²μ΄μμ΅λλ€. (μ΄λλ‘ λͺ¨λ₯΄κ³ μ§λκ°λ€λ©΄, λμ΄λ μ μ λ§νΌ μλ²κ° DDOSλ₯Ό λΉν…)
κ·Έλ¦¬κ³ μμ 2μ°¨ MVPλ₯Ό λ°°ν¬ν λ, μ₯μ κ° λ°μν μ μ΄ μμμ΅λλ€. μμ ν ν° λ²κ·Έλ₯Ό κ³ μΉ λ²μ μ΄ λ°°ν¬λμλλ°, μ κ· νμ μ¨λ³΄λ©μ΄ λλλ 쑰건과 λ³κ²½λ ν ν° μ½λκ° μ λ¬νκ² μλκ°λ©΄μ κΈ°μ‘΄ νμλ€μ΄ μ¨λ³΄λ©νλ©΄μ κ°νλ²λ¦¬λ μ¬κ°ν μ₯μ μμ΅λλ€…
λΉμ νμ¬ μΈλΆ κ΅μ‘ μ€μ΄μλλ°, ν λ¨ν‘λ°©μμ μΉκ΅¬λ€μ΄ μ±μ΄ κ°μκΈ° λμμνλ€λ 리ν¬ν μ λ£κ³ κΈνκ² νμ₯μ€λ‘ κ°μ ν΄λν°μΌλ‘ κ·ΈλΌνλ νμΈνκ³ iOS νμ₯λκ³Ό μμνκ³ κΉνλΈ λͺ¨λ°μΌλ‘ ν«ν½μ€ μ΄μλ λ¦° κΈ°μ΅μ΄ μλ€μ… π
μμ λ μΌμ΄μ€ λͺ¨λ κ²°κ³Όμ μΌλ‘λ λμ ν λͺ¨λν°λ§ μμ€ν μ ν΅ν΄ ν΄κ²°νμμ§λ§, λΉμ μ νΈλν½μ λν κ²½λ³΄κ° μμ΄ μ₯μ κ°μ§μ νμ©νμ§ λͺ»νκ³ μ¬ν μ‘°μΉν μΌμ΄μ€μμ΅λλ€.
Grafana Alert
κ·ΈλΌνλμμλ λ€μν 경보 κΈ°λ₯μ μ 곡ν©λλ€. λΉμ μ νΈλν½μ λν κΈ°μ€μ μ€μ νλ€λ©΄, μ ν΄μ§ μΈμλ€μκ² μλ¦Όμ μ μ‘νλ κΈ°λ₯μ λλ€. μ΄λ₯Ό ν΅ν΄ λΉ λ₯΄κ² μ₯μ λ₯Ό νμ νλλ° λμμ μ€ μ μμ΅λλ€. κ°μ₯ λ§μ΄ νμ©νλ Slackμ μ μ©ν΄ λ³΄κ² μ΅λλ€.
Slack App μμ±
μ°μ κ·ΈλΌνλμ μν΄ νΈλ¦¬κ±°λμ΄ μ¬λ μ±λμ μλ¦Όμ μ μ‘ν Slack Appμ μμ±ν΄μΌ ν©λλ€. Slack API ννμ΄μ§μ μ μν©λλ€.
1. From scratchλ₯Ό μ ν ν μ΄λ¦κ³Ό μλ¦Όμ μ μ‘ν workspaceλ₯Ό μ νν©λλ€. (π¨ App Nameμ μ΄λͺ¨μ§ λ£μΌλ©΄ μλ¬κ° λ°μνλ©° μμ±λμ§ μμ΅λλ€!)
2. Appμ΄ μμ±λλ©΄, μ’μΈ‘ λ©λ΄λ₯Ό ν΅ν΄ [Features > App Home > Your App’s Presence in Slack]μμ Display Nameκ³Ό Default Nameμ μ€μ ν΄ λ΄ μ¬μ©μλ₯Ό μμ±ν©λλ€. (π¨ Display Nameμ μ΄λͺ¨μ§ λ£μΌλ©΄ μλ¬κ° λ°μνλ©° μμ±λμ§ μμ΅λλ€!) (π¨ μ΄ λ¨κ³λ₯Ό λ°μ΄λμΌλ©΄ μ΄ν λ¨κ³μμ μλ¬κ° λ°μν©λλ€!)
3. μ¬λμ Webhooksμ μ§μνκΈ° λλ¬Έμ Webhooks URLλ§ λ°κΈνλ©΄ κ°λ¨ν μλ¦Όμ μ μ‘ν μ μμ΅λλ€.[Features > Incoming Webhooks > Add New Webhook to Workspace]λ₯Ό ν΅ν΄ μλ¦Όμ μ μ‘ν μ±λ μ μ© μΉν μ΄ μμ±ν©λλ€.
4. SlackμΌλ‘ λμμ μ νν μν¬μ€νμ΄μ€μ μ±λμμ @APP-NAME (μ μ κ²½μ° @κ·ΈλΌνλ 경보 ) λ©μμ§λ₯Ό μ λ ₯νλ©΄, μμ±ν λ΄μ ν΄λΉ μ±λλ‘ μ΄λν μ μμ΅λλ€.
π¨ κ·ΈλΌνλ 경보 μ±μ μ€μΉν λ΄ μ¬μ©μκ° μμ΅λλ€. μλ¬κ° λ°μνλ€λ©΄, [App Home > Display Name] λ¨κ³λ₯Ό 건λλ°μκΈ° λλ¬Έμ λλ€. Display Nameκ³Ό Default Nameμ μ€μ ν¨μΌλ‘μ¨, Slack Appμ Bot profile μμ±μ΄ μλ£λ©λλ€.
κ·ΈλΌνλ Alert Rule μμ±
μ€λΉλ μλ£λμμΌλ κ·ΈλΌνλμμ 경보λ₯Ό μ€μ ν΄λ΄ μλ€. Alert Ruleμ κ·ΈλΌνλκ° μΈμ 경보λ₯Ό λ°μμν¬μ§μ λν κ·μΉμ μ€μ νλ κ²μ λλ€. 경보 쑰건μ 3κ°μ§λ‘ ꡬμ±λλλ°
- Query : λμ보λλ₯Ό μμ±ν λμ λ§μ°¬κ°μ§λ‘ PromQLμ ν΅ν΄ 쑰건μ λμμ΄ λ 맀νΈλ¦μ μ‘°ννκΈ° μν 쿼리λ₯Ό μμ±ν©λλ€.
- Reduce : μ‘°νν 맀νΈλ¦μ Last, Min, Max λ±μ μ°μ°μ ν΅ν΄ ν λ² νν°λ§ν©λλ€.
- Threshold : μ»μ΄μ§ κ°μ κΈ°μ€μΌλ‘ 경보λ₯Ό λ°μν μ νν 쑰건μ μ€μ ν©λλ€.
μ λ 10λΆκ° μλ² μλ΅μ½λκ° 4XXμΈ μκ° 100μ λμ΄κ°λ©΄ νΈλ¦¬κ±°λλλ‘ μ€μ νμ΅λλ€. μ ν¬ μλ²λ ν ν° μ ν¨μ± κ²μ¦κ³Ό λ§λ£λ₯Ό 4XX μ½λλ‘ νΈλ€λ§ν¨μΌλ‘ μκ³κ°μ μ‘°κΈ λκ² μ‘μλλ°, κ°μ μλ²λ ν΄λΌμ΄μΈνΈ νκ²½μ λ§μΆ° μ€μ νλ©΄ λ©λλ€.
κ·ΈλΌνλ Contact point μ€μ
Contact pointλ 경보λ₯Ό λ³΄λΌ λμμ μ€μ νλ κ²μ λλ€. μκΉ μμ±ν Webhook URLμ μ λ ₯νκ³ ν μ€νΈν΄λ³΄λ©΄
μ μμ μΌλ‘ μλνλ κ²μ λ³Ό μ μμ΅λλ€.
κ·ΈλΌνλ Notification policies μ€μ
λ£°κ³Ό λμμ μ νμΌλ©΄, λ κ°λ₯Ό μλ‘ μ°κ²°ν΄μΌ μλνλλ‘ κ²½λ³΄κ° λ°μ‘λ μ μμ΅λλ€. Default policyλ₯Ό Editνκ³ μμ±ν contact pointμ grafana_folderλ₯Ό μ€μ ν΄μ£Όλ©΄ λ©λλ€.
μλ¬ μΆμ , Error Tracking
μ₯μ κ° λ°μνλ©΄ λΉ λ₯΄κ² νμ ν μ μκ² λμμ§λ§, λ³΄κ³ λ°μ μ₯μ μ μμΈμ λΆμνλλ° μ΄λ €μμ΄ μμμ΅λλ€. νμ¬λ μλ²μμ μλ¬κ° λ°μνλ©΄ error messageμ payload, stack traceλ₯Ό μ¬λμ μ μ‘νμ¬ λ©μμ§λ₯Ό κΈ°λ°μΌλ‘ λ¬Έμ λ₯Ό μ¬ννκ³ λλ²κΉ νκΈ° μμνμμ΅λλ€.
κ°λ° μ΄λ°μλ λ¬΄μ² νΈλ¦¬νμμ§λ§, μλΉμ€ μ΄μκ³Ό λμμ κ°λ°μ μ§ννλ©΄μ μνλ μλ¬ λ‘κ·Έλ₯Ό μ°Ύλ κ²μ΄ λ¬΄μ² μ΄λ €μ μ΅λλ€. μλμ κ°μ΄ POST /v1/posts APIμ λν λ‘κ·Έλ₯Ό κ²μνμμ§λ§ μ ν λ€λ₯Έ λ‘κ·Έλ§ κ²μλλ μΌμ΄ λΉλ²νλλ°, λ¨μν λ©μμ§μ λ¬Έμμ΄ κ²μμλ§ μ΅μ νλ μ¬λμ λ‘κ·Έ κ΄λ¦¬ μ©μΌλ‘ μ¬μ©νκΈ° μ ν©νμ§ μλ€κ³ λκΌμ΅λλ€.
Sentry
Data dogs, AWS CloudWatch λ± λ€μν λ‘κ·Έ κ΄λ¦¬ μ루μ μ΄ μμμ§λ§, μ ν¬λ Sentryμ μ£Όλͺ©νμλλ° κ·Έ μ΄μ λ λ€μκ³Ό κ°μ΅λλ€.
1. λ‘κ·Έ κ΄λ¦¬ μ루μ μ΄ μλμ§λ§, λ‘κ·Έ μ΄μμΌλ‘ λλ²κΉ νλλ° νμν κ΅μ₯ν λ§μ μ 보λ₯Ό μ 곡ν©λλ€.
μλ μ¬μ§μ Breadscrumbs κΈ°λ₯μΈλ° μΉ μ¬μ΄νΈμμ λμν λͺ¨λ νλμ μΊ‘μ³νμ¬ κΈ°λ‘ν©λλ€. Breadscrumbsλ₯Ό ν¬ν¨νμ¬ μλ¬κ° λ°μν APIλ₯Ό νΈμΆν ν΄λΌμ΄μΈνΈλ μ΄λ νλ«νΌμ΄κ³ μ΄λ€ λ°μ΄ν°λ₯Ό μ μ‘νλμ§ λ±μ λ³λμ μ€μ μμ΄ μλμΌλ‘ κΈ°λ‘λ©λλ€. λ§μ½, λ‘κΉ μ½λλ₯Ό λμ ν΄ Sentry error capture μ½λλ₯Ό μΆκ° μμ±νλ€λ©΄ κ΅μ₯ν μμΈν μ 보λ₯Ό νμΈν μ μκ² λμμ΅λλ€.
2. νλ‘ νΈμλ μλ¬ νΈλνΉ μ루μ μΌλ‘ λ μ λͺ ν Sentryμ΄μ§λ§, Spring bootμ λν μ§μκ³Ό κΈ°λ₯μ΄ λ§€μ° λ€μνμ΅λλ€.
κ°μ₯ λνμ μΌλ‘λ Performance Monitoring κΈ°λ₯μΈλ°, WAS μλ²μμ Mapping μ€μΈ API λ³λ‘ μλ΅μλ, μ€ν¨μ¨, νΈμΆν μ λν¬ μ μ μ, μ¬μ© λΉλ λ± μλ² μ±λ₯ μ΅μ νμ νμν λ€μν μ§νλ₯Ό μ 곡ν©λλ€.
3. νλ‘ νΈμλ, λ°±μλ λͺ¨λμκ² νμν μλ¬ μΆμ μ루μ μ λλ€.
λ°±μλ λ³΄λ€ νλ‘ νΈμνΈ μ루μ μΌλ‘ λ μ λͺ ν λ§νΌ iOS, AOS νλ«νΌμ μ μ©νμ¬ μλΉμ€ μ 체μ μλ¬ μΆμ μ΄ κ°λ₯νμ΅λλ€. Sentry μμ€ν νλλ‘ μ¬λ¬ νλ‘μ νΈ μΆμ μ΄ κ°λ₯νλ―λ‘ νλ«νΌλ§λ€ μ 곡λ API Docsλ₯Ό ν΅ν΄ μμ½κ² μ μ©μ΄ κ°λ₯ν©λλ€.
λ¬Όλ‘ λ¨μ λ μ‘΄μ¬νμ§λ§ λ¨ νκ°μ§μ λλ€!
1. λΉμλλ€.
Sentryλ Saas ννλ‘ μ 곡λμ΄ νλ‘μ νΈμ μ°κ²°λ§νλ©΄ λλ Cloud Sentryμ μ§μ μλ²μ μ€μΉνκ³ μ°κ²°νλ On-premise Sentryλ‘ λλ©λλ€. Cloud Sentryμ κ²½μ° Team μκΈμ¦λ λ§€λ¬ 35000μ μ λ
on-premise sentryλ μ΅μ AWS xlarge ec2κ° νμνλ―λ‘ λ§€λ¬ 16λ§μμ λ ν©λλ€.
λ μλΉμ€ λͺ¨λ λΆλ΄λλ κ°κ²©μ΄μ§λ§, νλ‘μ νΈ νμμ΄ κ°μΈμ μΌλ‘ μμ ν AWS Creditμ νμ©ν μ μμκΈ° λλ¬Έμ AWS EC2μ μ¨νλ λ―Έμ€ ννλ‘ μ€μΉνκΈ°λ‘ νμμ΅λλ€.
Docker container for Sentry
μ¨νλ λ―Έμ€ μ€μΉμ κ²½μ°, Self-Hosted Sentryμ© λ컀 μ€μΉ νμΌκ³Ό κ°μ΄λ(https://develop.sentry.dev/self-hosted/#getting-started)λ₯Ό μ 곡νκ³ μμ΅λλ€. Sentryλ₯Ό νΈμ€ν ν μλ²μ ν°λ―Έλλ₯Ό ν΅ν΄ μ€ννλ©΄ λ©λλ€.
# Assuming current latest version is 24.1.0
# Current actual version can be acquired from the Releases page on GitHub
VERSION="24.1.0"
git clone <https://github.com/getsentry/self-hosted.git>
cd self-hosted
git checkout ${VERSION}
sudo ./install.sh
sudo docker ps λ₯Ό ν΅ν΄ μ€ν μ€μΈ sentry containerλ€μ΄ νμΈλκ³ , server_url:9000 μ μ μμ Sentry μ½μ λ‘κ·ΈμΈ μ°½μ΄ λ¬λ€λ©΄ μ μ μ€μΉλ κ²μ λλ€.
π¨ λ°λμ 4 vCPU + 16GB RAM μ΄μ μΈμ€ν΄μ€μ μ€μΉνμΈμ. (Sentry container μ€μΉ μ€ κ³μ ν°λ―Έλμ΄ λ©μΆλ κ²½μ°)
CPUμ RAM νλλΌλ λͺ¨μλ κ²½μ°, 컨ν μ΄λ μ€μΉ μ€ μ±λ₯ λΆμ‘±μΌλ‘ μΈν΄ μΈμ€ν΄μ€κ° λ©μΆ°λ²λ¦½λλ€.
Sentry Project μ€μ
μ΄μ Sentryμ μ€νλ§ λΆνΈλ₯Ό μ°κ²°ν΄λ³΄κ² μ΅λλ€.
Sentry μ½μμ μ μν΄ Spring boot νλ‘μ νΈλ₯Ό μμ±ν©λλ€.
νλ‘μ νΈλ₯Ό μμ±νλ©΄, μ°κ²°μ μν κ°μ΄λλ₯Ό μ 곡νλλ° κ°μ΄λλ₯Ό κ·Έλλ‘ λ°λΌνκΈ°λ₯Ό κΆμ₯ν©λλ€. λ³λλ‘ μ€νλ§ λΆνΈ λνλ¨ΌνΈ(https://docs.sentry.io/platforms/java/guides/spring-boot/)λ₯Ό 곡μμ μΌλ‘ μ 곡νμ§λ§, Spring boot 3 κΈ°μ€ μ½μ λ΄λΆμμ μ 곡νλ κ°μ΄λκ° μ€λ₯ μμ΄ μ μ μλνμμ΅λλ€.
Sentry Issue
μ μμ μΌλ‘ μ°κ²°λλ©΄ WASμμ μμΈκ° λ°μν λλ§λ€ Issues νμ λ€μκ³Ό κ°μ΄ κΈ°λ‘λ©λλ€. ν΄λ¦ μ μμΈν μλ¬ νΈλ μ΄μ± μ 보λ₯Ό νμΈν μ μμ΅λλ€.
μ μ κ²½μ°μλ κ° νμλ€μκ² κ°μΈ κ³μ μ λ°κΈν΄μ£Όκ³ , μ΄μκ° λ°μνλ©΄ 1μ°¨μ μΌλ‘ νμ ν ν λ΄λΉ νμμκ² κ°λ΅ν μ€λͺ κ³Ό Sentry issue urlμ 첨λΆν΄ μ¬λμΌλ‘ μ μ‘νμ΅λλ€. λͺ¨λν°λ§ λ΄λΉμΌλ‘μ μλΉμ€ μ λ°μ μΌλ‘ λ°μνλ μλ¬λ₯Ό λΉ λ₯΄κ² νμ ν μ μμ΄ μ’μκ³ , κ° λ΄λΉμλ€μ λ μ΄μ΄ν λλ²κΉ μ΄ κ°λ₯ν΄μ λ§μ‘±λκ° λμμ΅λλ€.
λ§μΉλ©°
μ λ°μ μΌλ‘ λ§μ‘±λκ° λμ κ°μ μ¬νλ€μ΄μμ΅λλ€. λ€λ§ μμ€ν ꡬλμ μν μ΅μ μ¬μμ΄ ec2 xlargeμΈ λ§νΌ μ μ§λΉμ©μ΄ κ΅μ₯ν μ¬λΌκ°κ³ , νμ¬ νμ©μ€μΈ Sentry κΈ°λ₯μ΄ μ λΆ μ€ κ·Ήν μΌλΆμ΄κΈ° λλ¬Έμ νμ©λ²μ λν΄ μ‘°κΈ λ μ°κ΅¬κ° νμν κ² κ°μ΅λλ€. λ, μλΉμ€ μ΄μμ μμ κΈ°μ λ€μ΄κ°λ§νΌ μΆκ°λ‘ SRE μμ€ν λ€μ λμ νκΈ° λ³΄λ¨ νμ¬ μμ€ν μ νμ©νλ λ°©μμ μ°κ΅¬νκ±°λ, μμ€ν μ κ·λͺ¨μ λΉμ©μ μ΅μ ννλ λ°©ν₯μΌλ‘ λμκ° μμ μ λλ€.
'π Activity > Project' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
κ°λ°μλ€μ΄ μμ¬ν μ μλ μμ μλΉμ€ λ§λ€κΈ°Β 1ν (νλ‘λ©ν μ°μ€, κ·ΈλΌνλ) (0) | 2024.07.02 |
---|---|
LoRa Network performance enhancement (0) | 2024.02.25 |
Econo Beep (μμ½λ Έ μ‘) - 1.0 (Summer Dev Ver) - κ°λ° νκ³ λ‘ (0) | 2022.10.06 |
Profile (0) | 2019.07.07 |