0. What is Monitoring

μ˜€λŠ˜λ‚ μ˜ μ΅œμ‹  μ‹œμŠ€ν…œμ—μ„œλŠ” λ°©λŒ€ν•œ 수의 λ©”νŠΈλ¦­μ΄ 생성 및 μˆ˜μ§‘λ  수 μžˆμ–΄ 문제λ₯Ό 효과적으둜 μ§„λ‹¨ν•˜λŠ” 데 어렀움이 μžˆμŠ΅λ‹ˆλ‹€. λ°μ΄ν„°μ˜ 양이 λ„ˆλ¬΄ 많으면 μ–΄λ””μ„œλΆ€ν„° 쑰사λ₯Ό μ‹œμž‘ν•΄μ•Ό 할지 κ²°μ •ν•˜κΈ° μ–΄λ €μšΈ 수 μžˆμŠ΅λ‹ˆλ‹€. 적극적으둜 μ§„λ‹¨ν•˜μ§€ μ•ŠλŠ” κ²½μš°μ—λ„ μ‚¬μš© κ°€λŠ₯ν•œ λ°μ΄ν„°μ˜ 양이 μ••λ„μ μœΌλ‘œ 많기 λ•Œλ¬Έμ— λ¬Έμ œκ°€ μ‘΄μž¬ν•˜λŠ”μ§€ μ—¬λΆ€λ₯Ό νŒŒμ•…ν•˜λŠ” 것 μ—­μ‹œ λ§ˆμ°¬κ°€μ§€λ‘œ μ–΄λ €μšΈ 수 μžˆμŠ΅λ‹ˆλ‹€.

λ‹€μŒ 방법을 μ‹œλ„ν•΄ λ³΄μ„Έμš”.

  • USE

  • RED

  • Four Golden Signals

USE

λΈŒλ Œλ“  그레그의 μ‚¬μš© μ œμ•ˆ

"μ€‘μš”ν•œ 뢀뢄을 κ°„κ³Όν•˜μ§€ μ•Šκ³  일반적인 μ„±λŠ₯ 문제λ₯Ό μ‹ μ†ν•˜κ²Œ ν•΄κ²°ν•˜λŠ” 방법을 λ‹€λ₯Έ μ‚¬λžŒλ“€μ—κ²Œ κ°€λ₯΄μΉ˜κΈ° μœ„ν•΄ USE 방법을 κ°œλ°œν–ˆμŠ΅λ‹ˆλ‹€. λΉ„ν–‰ λ§€λ‰΄μ–Όμ˜ 비상 체크리슀트처럼 κ°„λ‹¨ν•˜κ³ , κ°„λ‹¨ν•˜λ©°, μ™„μ „ν•˜κ³ , λΉ λ₯΄λ„둝 κ³ μ•ˆλ˜μ—ˆμŠ΅λ‹ˆλ‹€."

  • Utilization (ν™œμš©λ„): μ‚¬μš©λ₯ μ€ λ¦¬μ†ŒμŠ€(예: CPU, λ©”λͺ¨λ¦¬, λ””μŠ€ν¬ λ˜λŠ” λ„€νŠΈμ›Œν¬)κ°€ μ‚¬μš©λ˜λŠ” 정도λ₯Ό μΈ‘μ •ν•©λ‹ˆλ‹€. ν˜„μž¬ μ‚¬μš© 쀑인 μ‚¬μš© κ°€λŠ₯ν•œ λ¦¬μ†ŒμŠ€μ˜ λΉ„μœ¨ λ˜λŠ” λ°±λΆ„μœ¨μ„ λ‚˜νƒ€λƒ…λ‹ˆλ‹€. μ‚¬μš©λ₯ μ΄ λ†’μœΌλ©΄ λ¦¬μ†ŒμŠ€ 병λͺ© ν˜„μƒ 및 잠재적인 μ„±λŠ₯ 문제λ₯Ό λ‚˜νƒ€λ‚Ό 수 μžˆμŠ΅λ‹ˆλ‹€.

  • Saturation(포화도): ν¬ν™”λ„λŠ” μ‹œμŠ€ν…œ λ‚΄μ—μ„œ λ°œμƒν•˜λŠ” λ¦¬μ†ŒμŠ€ 혼작 λ˜λŠ” λŒ€κΈ°μ—΄μ˜ μˆ˜μ€€μ„ λ‚˜νƒ€λƒ…λ‹ˆλ‹€. λ¦¬μ†ŒμŠ€κ°€ μ΅œλŒ€ μš©λŸ‰κΉŒμ§€ ν™œμš©λ˜κ³  μžˆλŠ” 정도λ₯Ό λ‚˜νƒ€λƒ…λ‹ˆλ‹€. 포화 μˆ˜μ€€μ΄ λ†’μœΌλ©΄ λ¦¬μ†ŒμŠ€μ— λΆ€ν•˜κ°€ 많이 κ±Έλ € 응닡 μ‹œκ°„μ΄ μ§€μ—°λ˜κ±°λ‚˜ λŠ˜μ–΄λ‚  수 μžˆμŠ΅λ‹ˆλ‹€.

  • Errors(였λ₯˜): 였λ₯˜λŠ” μ‹œμŠ€ν…œ λ‚΄μ—μ„œ λ°œμƒν•œ 였λ₯˜ λ˜λŠ” μž₯μ• μ˜ 수λ₯Ό λ‚˜νƒ€λƒ…λ‹ˆλ‹€. μ—¬κΈ°μ—λŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 였λ₯˜, μ‹œμŠ€ν…œ 좩돌 λ˜λŠ” λ„€νŠΈμ›Œν¬ μž₯애와 같은 λΉ„μ •μƒμ μ΄κ±°λ‚˜ 예기치 μ•Šμ€ μ΄λ²€νŠΈκ°€ λͺ¨λ‘ ν¬ν•¨λ©λ‹ˆλ‹€. 였λ₯˜λ₯Ό λͺ¨λ‹ˆν„°λ§ν•˜λ©΄ μ‹œμŠ€ν…œ μ•ˆμ •μ„± λ¬Έμ œμ™€ κ°œμ„ μ΄ ν•„μš”ν•œ 잠재적 μ˜μ—­μ„ νŒŒμ•…ν•˜λŠ” 데 도움이 λ©λ‹ˆλ‹€.

κ΄€λ¦¬μžμ™€ μ‹œμŠ€ν…œ μš΄μ˜μžλŠ” μ‚¬μš©λŸ‰ μ§€ν‘œλ₯Ό λͺ¨λ‹ˆν„°λ§ν•¨μœΌλ‘œμ¨ λ¦¬μ†ŒμŠ€ μ‚¬μš©λ₯ μ„ μ’…ν•©μ μœΌλ‘œ νŒŒμ•…ν•˜κ³ , 잠재적인 병λͺ© ν˜„μƒμ„ νŒŒμ•…ν•˜κ³ , μ„±λŠ₯ 문제λ₯Ό 사전에 ν•΄κ²°ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 이 μ •λ³΄λŠ” μš©λŸ‰ κ³„νš, λ¦¬μ†ŒμŠ€ ν• λ‹Ή μ΅œμ ν™”, μ‹œμŠ€ν…œμ˜ μ „λ°˜μ μΈ μƒνƒœμ™€ νš¨μœ¨μ„± 보μž₯에 μœ μš©ν•©λ‹ˆλ‹€.

RED

https://www.slideshare.net/weaveworks/monitoring-microservices

  • Rate(λΉ„μœ¨): λΉ„μœ¨μ€ νŠΉμ • κΈ°κ°„ λ™μ•ˆ 처리된 μš”μ²­μ˜ 수λ₯Ό λ‚˜νƒ€λƒ…λ‹ˆλ‹€. μ‹œμŠ€ν…œμ˜ νŠΈλž˜ν”½ λΆ€ν•˜λ₯Ό ν‰κ°€ν•˜κ³  νŠΉμ • μ‹œκ°„ 간격 λ™μ•ˆ μš”μ²­λŸ‰μ˜ 증가 λ˜λŠ” κ°μ†Œλ₯Ό μΆ”μ ν•˜λŠ” 데 도움이 λ©λ‹ˆλ‹€. λΉ„μœ¨μ΄ κΈ‰κ²©νžˆ μ¦κ°€ν•˜λ©΄ μ‹œμŠ€ν…œμ— λΆ€ν•˜ λ˜λŠ” μˆ˜μš”κ°€ λ§Žλ‹€λŠ” 것을 λ‚˜νƒ€λ‚Ό 수 μžˆμŠ΅λ‹ˆλ‹€.

  • Errors(였λ₯˜): 였λ₯˜λŠ” 처리 쀑에 λ°œμƒν•œ 였λ₯˜μ˜ 수λ₯Ό λ‚˜νƒ€λƒ…λ‹ˆλ‹€. 이λ₯Ό 톡해 μ‹œμŠ€ν…œμ˜ 였λ₯˜ λΉˆλ„λ₯Ό μΆ”μ ν•˜κ³  였λ₯˜μ˜ μœ ν˜•κ³Ό 원인을 νŒŒμ•…ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 였λ₯˜ μˆ˜κ°€ μ¦κ°€ν•˜λ©΄ μ‹œμŠ€ν…œ μ•ˆμ •μ„± 및 신뒰성에 λ¬Έμ œκ°€ μžˆμŒμ„ λ‚˜νƒ€λ‚Ό 수 μžˆμŠ΅λ‹ˆλ‹€.

  • Duration(지속 μ‹œκ°„): 지속 μ‹œκ°„μ€ μž‘μ—… λ˜λŠ” μž‘μ—…μ„ μˆ˜ν–‰ν•˜λŠ” 데 κ±Έλ¦¬λŠ” μ‹œκ°„μ„ μΈ‘μ •ν•©λ‹ˆλ‹€. μ‹œμŠ€ν…œ 처리 속도λ₯Ό ν‰κ°€ν•˜κ³  지연 λ˜λŠ” μ„±λŠ₯ μ €ν•˜λ₯Ό μ‹λ³„ν•˜λŠ” 데 도움이 λ©λ‹ˆλ‹€. 지속 μ‹œκ°„μ΄ 예기치 μ•Šκ²Œ κΈΈκ±°λ‚˜ μ¦κ°€ν•˜λ©΄ μ„±λŠ₯ κ°œμ„ μ΄ ν•„μš”ν•œ μ˜μ—­μ„ κ°•μ‘° ν‘œμ‹œν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μ΄λŠ” USE λ©”μ„œλ“œμ²˜λŸΌ λ¦¬μ†ŒμŠ€ λ²”μœ„κ°€ μ•„λ‹Œ μš”μ²­ λ²”μœ„λ‘œ μ œν•œλ©λ‹ˆλ‹€. 기간은 평균이 μ•„λ‹Œ 뢄포λ₯Ό μ˜λ―Έν•˜λŠ” κ²ƒμœΌλ‘œ λͺ…μ‹œμ μœΌλ‘œ κ°„μ£Όλ©λ‹ˆλ‹€.

Four Golden Signals

https://sre.google/sre-book/monitoring-distributed-systems/#xref_monitoring_golden-signals

λͺ¨λ‹ˆν„°λ§μ˜ Four Golden SignalsλŠ” 지연 μ‹œκ°„, νŠΈλž˜ν”½, 였λ₯˜, 포화 μƒνƒœμž…λ‹ˆλ‹€. μ‚¬μš©μž λŒ€λ©΄ μ‹œμŠ€ν…œμ˜ λ„€ 가지 μ§€ν‘œλ§Œ μΈ‘μ •ν•  수 μžˆλ‹€λ©΄ 이 λ„€ 가지 μ§€ν‘œμ— μ§‘μ€‘ν•˜μ„Έμš”.

  • 지연 μ‹œκ°„(Latency) μš”μ²­μ„ μ²˜λ¦¬ν•˜λŠ” 데 κ±Έλ¦¬λŠ” μ‹œκ°„μž…λ‹ˆλ‹€. 성곡적인 μš”μ²­μ˜ 지연 μ‹œκ°„κ³Ό μ‹€νŒ¨ν•œ μš”μ²­μ˜ 지연 μ‹œκ°„μ„ κ΅¬λΆ„ν•˜λŠ” 것이 μ€‘μš”ν•©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄ λ°μ΄ν„°λ² μ΄μŠ€λ‚˜ 기타 μ€‘μš”ν•œ λ°±μ—”λ“œμ— λŒ€ν•œ 연결이 λŠμ–΄μ Έ 트리거된 HTTP 500 였λ₯˜λŠ” 맀우 λΉ λ₯΄κ²Œ 처리될 수 μžˆμ§€λ§Œ, HTTP 500 였λ₯˜λŠ” μ‹€νŒ¨ν•œ μš”μ²­μ„ λ‚˜νƒ€λ‚΄λ―€λ‘œ 전체 지연 μ‹œκ°„μ— 500을 κ³ λ €ν•˜λ©΄ 잘λͺ»λœ 계산이 λ‚˜μ˜¬ 수 μžˆμŠ΅λ‹ˆλ‹€. λ°˜λ©΄μ— 느린 였λ₯˜λŠ” λΉ λ₯Έ 였λ₯˜λ³΄λ‹€ 더 μ‹¬κ°ν•œ λ¬Έμ œμž…λ‹ˆλ‹€! λ”°λΌμ„œ λ‹¨μˆœνžˆ 였λ₯˜λ₯Ό ν•„ν„°λ§ν•˜λŠ” 것이 μ•„λ‹ˆλΌ 였λ₯˜ 지연 μ‹œκ°„μ„ μΆ”μ ν•˜λŠ” 것이 μ€‘μš”ν•©λ‹ˆλ‹€.

  • νŠΈλž˜ν”½(Traffic) μ‹œμŠ€ν…œμ— μ–Όλ§ˆλ‚˜ λ§Žμ€ μˆ˜μš”κ°€ λ°œμƒν•˜κ³  μžˆλŠ”μ§€λ₯Ό μΈ‘μ •ν•˜λŠ” μ§€ν‘œλ‘œ, 높은 μˆ˜μ€€μ˜ μ‹œμŠ€ν…œλ³„ λ©”νŠΈλ¦­μœΌλ‘œ μΈ‘μ •λ©λ‹ˆλ‹€. μ›Ή μ„œλΉ„μŠ€μ˜ 경우 이 츑정값은 일반적으둜 μ΄ˆλ‹Ή HTTP μš”μ²­ 수이며, μš”μ²­μ˜ νŠΉμ„±(예: 정적 μ½˜ν…μΈ  λŒ€ 동적 μ½˜ν…μΈ )에 따라 세뢄화될 수 μžˆμŠ΅λ‹ˆλ‹€. μ˜€λ””μ˜€ 슀트리밍 μ‹œμŠ€ν…œμ˜ 경우, 이 츑정은 λ„€νŠΈμ›Œν¬ I/O 속도 λ˜λŠ” λ™μ‹œ μ„Έμ…˜μ— μ΄ˆμ μ„ 맞좜 수 μžˆμŠ΅λ‹ˆλ‹€. ν‚€-κ°’ μ €μž₯ μ‹œμŠ€ν…œμ˜ 경우, 이 츑정은 μ΄ˆλ‹Ή νŠΈλžœμž­μ…˜ 및 검색 수일 수 μžˆμŠ΅λ‹ˆλ‹€.

  • 였λ₯˜(Errors) λͺ…μ‹œμ μœΌλ‘œ(예: HTTP 500), μ•”μ‹œμ μœΌλ‘œ(예: HTTP 200 성곡 μ‘λ‹΅μ΄μ§€λ§Œ 잘λͺ»λœ μ½˜ν…μΈ μ™€ κ²°ν•©λœ 경우) λ˜λŠ” 정책에 따라(예: "1초 응닡 μ‹œκ°„μ„ μ•½μ†ν•œ 경우 1초λ₯Ό μ΄ˆκ³Όν•˜λŠ” λͺ¨λ“  μš”μ²­μ€ 였λ₯˜") μ‹€νŒ¨ν•œ μš”μ²­μ˜ λΉ„μœ¨μž…λ‹ˆλ‹€. ν”„λ‘œν† μ½œ 응닡 μ½”λ“œκ°€ λͺ¨λ“  μž₯μ•  쑰건을 ν‘œν˜„ν•˜κΈ°μ— λΆˆμΆ©λΆ„ν•œ 경우, 뢀뢄적인 μž₯μ•  λͺ¨λ“œλ₯Ό μΆ”μ ν•˜κΈ° μœ„ν•΄ 보쑰(λ‚΄λΆ€) ν”„λ‘œν† μ½œμ΄ ν•„μš”ν•  수 μžˆμŠ΅λ‹ˆλ‹€. λ‘œλ“œ λ°ΈλŸ°μ„œμ—μ„œ HTTP 500을 ν¬μ°©ν•˜λ©΄ μ™„μ „νžˆ μ‹€νŒ¨ν•œ μš”μ²­μ„ λͺ¨λ‘ μž‘μ•„λ‚Ό 수 μžˆλŠ” 반면, μ—”λ“œνˆ¬μ—”λ“œ μ‹œμŠ€ν…œ ν…ŒμŠ€νŠΈλ₯Ό ν†΅ν•΄μ„œλ§Œ 잘λͺ»λœ μ½˜ν…μΈ λ₯Ό μ „μ†‘ν•˜λŠ” 것을 감지할 수 있기 λ•Œλ¬Έμ— μ΄λŸ¬ν•œ 경우λ₯Ό λͺ¨λ‹ˆν„°λ§ν•˜λŠ” 방법은 크게 λ‹€λ₯Ό 수 μžˆμŠ΅λ‹ˆλ‹€.

  • 포화도(Saturation) μ„œλΉ„μŠ€κ°€ μ–Όλ§ˆλ‚˜ '꽉' μ°¨ μžˆλŠ”μ§€. κ°€μž₯ μ œμ•½μ΄ λ§Žμ€ λ¦¬μ†ŒμŠ€λ₯Ό κ°•μ‘°ν•˜λŠ” μ‹œμŠ€ν…œ λΉ„μœ¨μ˜ μΈ‘μ •κ°’μž…λ‹ˆλ‹€(예: λ©”λͺ¨λ¦¬ μ œμ•½μ΄ μžˆλŠ” μ‹œμŠ€ν…œμ—μ„œλŠ” λ©”λͺ¨λ¦¬ ν‘œμ‹œ, I/O μ œμ•½μ΄ μžˆλŠ” μ‹œμŠ€ν…œμ—μ„œλŠ” I/O ν‘œμ‹œ). λ§Žμ€ μ‹œμŠ€ν…œμ΄ 100% μ‚¬μš©λ₯ μ— λ„λ‹¬ν•˜κΈ° 전에 μ„±λŠ₯이 μ €ν•˜λ˜λ―€λ‘œ μ‚¬μš©λ₯  λͺ©ν‘œλ₯Ό μ„€μ •ν•˜λŠ” 것이 ν•„μˆ˜μ μž…λ‹ˆλ‹€.

Conclusion

μœ„μ˜ λ‚΄μš©μ„ μ§€μΉ¨μœΌλ‘œ μ‚Όμ•„ λͺ¨λ‹ˆν„°λ§μ„ μ‹œμž‘ν•˜λ©΄ λ‹€μŒ λ‹¨κ³„λ‘œ μ„±μž₯ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

Last updated