μŠ€ν”„λ§λΆ€νŠΈ Actuator

2023. 5. 15. 11:06γ†μΈν”„λŸ°/μŠ€ν”„λ§ λΆ€νŠΈ - 핡심 원리와 ν™œμš©

728x90

 

 

1️⃣ Spring Actuator 

μ‹€λ¬΄μ—μ„œλŠ” κ°œλ°œμ„ ν•œλ‹€ ν•˜λ©΄ μš”κ΅¬μ‚¬ν•­λŒ€λ‘œ κ°œλ°œμ„ ν•˜λŠ” 것을 λ„˜μ–΄μ„œ λ§Œλ“  μ„œλΉ„μŠ€μ— λ¬Έμ œκ°€ μžˆλŠ”μ§€ μ—†λŠ”μ§€ λͺ¨λ‹ˆν„°λ§ν•˜κ³  μ§€ν‘œλ“€μ„ μ‹¬μ–΄μ„œ κ°μ‹œν•˜λŠ” ν™œλ™μ΄ ν•„μš”ν•˜λ‹€. 

이런 ν™œλ™μ„ ν”„λ‘œλ•μ…˜ μ€€λΉ„ κΈ°λŠ₯이라고 ν•˜λŠ”λ° ν”„λ‘œλ•μ…˜μ„ μš΄μ˜μ— 배포할 λ•Œ μ€€λΉ„ν•΄μ•Όν•˜λŠ” λΉ„ κΈ°λŠ₯적인 μš”μ†Œλ“€μ„ λœ»ν•œλ‹€. 

 

- μ§€ν‘œ metric, 좔적 trace, 감사 auditing 

- λͺ¨λ‹ˆν„°λ§ 

 

μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ ν˜„μž¬ μ‚΄μ•„μžˆλŠ”μ§€, 둜그 μ •λ³΄λŠ” μ •μƒμ μœΌλ‘œ μ„€μ •λ˜μ–΄ μžˆλŠ”μ§€, 컀λ„₯μ…˜ 풀은 μ–Όλ§ˆλ‚˜ μ‚¬μš©λ˜κ³  μžˆλŠ” 지 등을 확인할 수 μžˆμ–΄μ•Ό ν•˜λŠ”λ° μŠ€ν”„λ§ λΆ€νŠΈλŠ” actuatorλΌλŠ” κ±Έ μ œκ³΅ν•΄ ν”„λ‘œλ•μ…˜ μ€€λΉ„ κΈ°λŠ₯을 νŽΈλ¦¬ν•˜κ²Œ μ‚¬μš©ν•  수 μžˆλ„λ‘ 도와쀀닀. 

 

Spring ActuatorλŠ” μš΄μ˜μ€‘μΈ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ HTTPλ‚˜ JMX λ₯Ό μ΄μš©ν•΄μ„œ λͺ¨λ‹ˆν„°λ§ν•˜κ³  관리할 수 μžˆλŠ” κΈ°λŠ₯을 μ œκ³΅ν•œλ‹€. 

 

 

 

2️⃣ Actuator μ‚¬μš©λ²• 

μŠ€ν”„λ§μ΄ μ œκ³΅ν•˜λŠ” 앑츄에이터λ₯Ό μ‚¬μš©ν•˜κΈ° μœ„ν•΄μ„œλŠ” 라이브러리λ₯Ό μΆ”κ°€ν•΄μ•Όν•œλ‹€. 

implementation 'org.springframework.boot:spring-boot-starter-actuator' //actuator μΆ”κ°€

build.gradle에 앑츄에이터 라이브러리λ₯Ό μΆ”κ°€ν•œλ‹€. 

 

라이브러리λ₯Ό μΆ”κ°€ν•˜κ³  μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μ‹€ν–‰ν•œ λ‹€μŒ 

localhost:8080/actuator 

λ₯Ό μ‹€ν–‰ν•˜λ©΄ 

/actuatorλŠ” μ‚¬μš©κ°€λŠ₯ν•œ μ•€λ“œν¬μΈνŠΈ λͺ©λ‘μ„ 확인할 수 μžˆλ‹€. 

endpoints λž€ λͺ¨λ‹ˆν„°λ§μ΄λ‚˜ μ‘°μž‘μ„ ν•  수 μžˆλ„λ‘ ν•˜λŠ” μ—°κ²°μ μœΌλ‘œ κΈ°λ³Έ endpoints λ₯Ό μ œκ³΅ν•˜κ³  μ‚¬μš©μžκ°€ ν•„μš”μ— 따라 μΆ”κ°€ν•  μˆ˜λ„ μžˆλ‹€. 

 

/actuator/healthλ₯Ό 보면 

이 κΈ°λŠ₯은 ν˜„μž¬ μ„œλ²„κ°€ 잘 λ™μž‘ν•˜κ³  μž‡λŠ”μ§€ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ ν—¬μŠ€ μƒνƒœλ₯Ό λ‚˜νƒ€λ‚΄λŠ” 것이닀. 

(κΈ°λ³Έ 섀정은 μ΄λ ‡κ²Œ ν˜„μž¬ μƒνƒœλ§Œ 확인할 수 μžˆλ„λ‘ λ˜μ–΄ 있고 더 λ§Žμ€ κΈ°λŠ₯을 보기 μœ„ν•΄μ„œλŠ” λ…ΈμΆœ 섀정이 ν•„μš”ν•˜λ‹€.) 

 

 

management:
  endpoints:
    web:
      exposure:
        include: "*"

더 λ§Žμ€ 앑츄에이터 κΈ°λŠ₯을 웹에 λ…ΈμΆœμ‹œν‚€κΈ° μœ„ν•΄μ„œλŠ” application.yml에 μ„€μ •ν•΄μ£Όλ©΄ 되고, 

κ·Έ λ‹€μŒ /actuator λ₯Ό ν•˜λ©΄ 

앑츄에이터가 μ œκ³΅ν•˜λŠ” λ§Žμ€ κΈ°λŠ₯을 확인할 수 μžˆλ‹€. 

μ΄λ ‡κ²Œ 앑츄에이터가 μ œκ³΅ν•˜λŠ” κΈ°λŠ₯을 endpoint 라고 ν•˜λŠ” 것이닀.

 

health : μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μƒνƒœ 

metrics : λ©”λͺ¨λ¦¬, μŠ€λ ˆλ“œ μƒνƒœ λ“± 

logger : logger 정보λ₯Ό 보고, logger level μƒνƒœ λ³€κ²½ λ“±

beans : μŠ€ν”„λ§ μ»¨ν…Œμ΄λ„ˆμ— λ“±λ‘λœ 빈 쑰회 

 

 

 

3️⃣ Acuator Endpoint μ„€μ • 

endpointλ₯Ό μ‚¬μš©ν•˜λ €λ©΄ 2가지 섀정이 ν•„μš”ν•˜λ‹€.

 

- μ•€λ“œν¬μΈνŠΈ ν™œμ„±ν™” 

- μ•€λ“œν¬μΈνŠΈ λ…ΈμΆœ 

 

-> μ•€λ“œν¬μΈνŠΈλ₯Ό ν™œμ„±ν™”ν•œλ‹€λŠ” 것은 ν•΄λ‹Ή κΈ°λŠ₯ 자체λ₯Ό μ‚¬μš©ν• μ§€ 말지 on, offλ₯Ό κ²°μ •ν•˜λŠ” 것이고, 

μ•€λ“œν¬μΈνŠΈλ₯Ό λ…ΈμΆœν•œλ‹€λŠ” 것은 μ•€λ“œν¬μΈνŠΈλ₯Ό HTTP 에 λ…ΈμΆœν• μ§€ μ•„λ‹ˆλ©΄ JMX에 λ…ΈμΆœν• μ§€ μ„ νƒν•˜λŠ” 것이닀. 

(근데 μ•€λ“œν¬μΈνŠΈκ°€ ν™œμ„±ν™”λ˜μ§€ μ•ŠμœΌλ©΄ λ…ΈμΆœ μ—¬λΆ€λ₯Ό 결정해도 보이지 μ•ŠλŠ”λ‹€.) 

 

λŒ€λΆ€λΆ„μ˜ μ•€λ“œν¬μΈνŠΈλŠ” ν™œμ„±ν™”λ˜μ–΄μžˆκ³ , λ…ΈμΆœν• μ§€λ§Œ μ„ νƒν•˜λ©΄ λœλ‹€.(shutdown μ œμ™Έ) 

 

management:
  endpoints:
    web:
      exposure:
        include: "*"

이 μ˜΅μ…˜μ€ λͺ¨λ“  μ•€λ“œν¬μΈνŠΈλ₯Ό 웹에 λ…ΈμΆœν•œλ‹€λŠ” 뜻이고, μ΄λ•Œ shutdown μ•€λ“œν¬μΈνŠΈλŠ” 일단 ν™œμ„±ν™” μžμ²΄κ°€ μ•ˆλ˜μ–΄ 있기 λ•Œλ¬Έμ— λ…ΈμΆœλ„ λ˜μ§€ μ•ŠλŠ”λ‹€. 

 

λ§Œμ•½ shutdown μ•€λ“œν¬μΈνŠΈλ₯Ό ν™œμ„±ν™”ν•˜λ €λ©΄ 

management:
  endpoints:
    web:
      exposure:
        include: "*"
  endpoint:
    shutdown:
      enabled: true

management.endpoint.shutdown.enabled λ₯Ό true둜 μ„€μ •ν•΄μ£Όλ©΄ λœλ‹€. 

localhost:8080/actuator/shutdown 을 POST둜 μš”μ²­ν•˜λ©΄ μ‹€μ œ μ„œλ²„κ°€ μ’…λ£Œλ˜λŠ” 것을 확인할 수 μžˆλ‹€. 

 

( 이 κΈ°λŠ₯은 μ‹€μ œ μ„œλ²„κ°€ μ’…λ£Œλ˜λŠ” 것이기 λ•Œλ¬Έμ—  μ£Όμ˜ν•΄μ„œ μ‚¬μš©ν•΄μ•Ό ν•œλ‹€..!!) 

 

 

 

4️⃣ Endpoint μ’…λ₯˜ 

μ΄λ ‡κ²Œ 각각 μ•€λ“œν¬μΈνŠΈλ₯Ό ν†΅ν•΄μ„œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ 수 λ§Žμ€ κΈ°λŠ₯을 κ΄€λ¦¬ν•˜κ³  λͺ¨λ‹ˆν„°λ§ν•  수 μžˆλ‹€. 

 

Endpoint μ’…λ₯˜ 

- beans : μŠ€ν”„λ§ μ»¨ν…Œμ΄λ„ˆμ— λ“±λ‘λœ μŠ€ν”„λ§ λΉˆμ„ 보여쀀닀. 

 

- conditions : condition을 ν†΅ν•΄μ„œ λΉˆμ„ 등둝할 λ•Œ 평가 쑰건과 μΌμΉ˜ν•˜κ±°λ‚˜ μΌμΉ˜ν•˜μ§€ μ•ŠλŠ” 이유λ₯Ό ν‘œμ‹œν•œλ‹€. 

 

 

- configprops : @ConfigurationProperties λ₯Ό 보여쀀닀. 

 

 

- env: Environment 정보λ₯Ό 보여쀀닀. 

 

 

- health : μ• ν”Œλ¦¬μΌ€μ΄μ…˜ ν—¬μŠ€ 정보λ₯Ό 보여쀀닀. 

 

 

- httpexchanges : HTTP 호좜 응닡 정보λ₯Ό 보여쀀닀. -> HttpExchangeRepositoryλ₯Ό κ΅¬ν˜„ν•œ λΉˆμ„ λ³„λ„λ‘œ 등둝해야 μ‚¬μš© κ°€λŠ₯ 

- info : μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 정보λ₯Ό 보여쀀닀. 

- loggers : μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 둜거 섀정을 보여주고 λ³€κ²½ν•  수 μžˆλ‹€. 

- metrics : μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ λ©”νŠΈλ¦­ 정보λ₯Ό 보여쀀닀. 

- mappings : @RequestMapping 정보λ₯Ό 보여쀀닀. 

- threaddump : μ“°λ ˆλ“œ 덀프λ₯Ό μ‹€ν–‰ν•΄μ„œ 보여쀀닀. 

- shutdown : μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μ’…λ£Œν•œλ‹€. (κΈ°λ³Έ: λΉ„ν™œμ„±ν™”) 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90