Spring Actuator ์ฌ์ฉํด๋ณด๊ธฐ
Spring Actuator๋?
์ ํ๋ฆฌ์ผ์ด์ ์ ์ํ๋ฅผ ๋ชจ๋ํฐ๋ง, Metric ์์ง์ ์ํ Http Endpoint๋ฅผ ์ ๊ณตํด์ฃผ๋ ๋ชจ๋์ด๋ค.
(์์ฝํ๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํ๋ฅผ ์ ์ฒด์ ์ผ๋ก ์ ์ ์๋๋ก ๋์์ฃผ๋ ๊ธฐ๋ฅ!)
// https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-actuator
implementation 'org.springframework.boot:spring-boot-starter-actuator:3.0.1'
๋ค์๊ณผ ๊ฐ์ด dependency๋ง ์ถ๊ฐํด์ฃผ๋ฉด ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค.
Ex) spring ์ค์ yaml ํ์ผ์ ์๋์ ๊ฐ์ด ์ด๋ค endpoint๋ค์ ํฌํจํ ์ง ๋ช ์ํด์ฃผ๋ฉด ๋๋ค.
management:
endpoints:
web:
exposure:
include: refresh,health,beans,httpexchanges
์ฃผ์ ์๋ ํฌ์ธํธ ์ข ๋ฅ
beans
- ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ชจ๋ Spring Bean ๋ชฉ๋ก์ ํ์ํด์ค๋ค.
- http://localhost:8080/actuator/beans
health (์ฃผ๋ก ์ฌ์ฉํ๋ endpoint)
- ์ ํ๋ฆฌ์ผ์ด์ ์ ํ์ฌ ์ํ ์ ๋ณด๋ฅผ ํ์ํ๋ค.
- http://localhost:8080/actuator/health
httpexchanges(httptrace)
- ์ต๊ทผ 100๊ฐ์ http ์์ฒญ์ ๋ฐํํ๋ค.
management.trace.http.include=request-headers,response-headers,cookies,errors
๋ ธ์ถ ์ ํฌํจ์ํฌ ๊ด๋ จ ์์๋ค์ ์ง์ ํ ์ ์๋ค.
@Bean
public InMemoryHttpExchangeRepository createTraceRepository() {
return new InMemoryHttpExchangeRepository();
}
๋น์ผ๋ก InMemoryHttpExchangeRepository๋ฅผ ๋ฑ๋กํด์ฃผ์ด์ผ ํ๋ค.
- http://localhost:8080/actuator/httpexchanges
env
- ์คํ๋ง์ ๋ชจ๋ ํ๊ฒฝ๋ณ์ ์ ๋ณด๋ฅผ ํ์ (๋ณด์์ ๋น์ถ์ฒ)
- management.endpoint.env.keys-to-sanitize ์์ฑ์ ํตํด ๋ฏผ๊ฐํ ์์ฑ์ ๊ฐ๋ฆด ์ ์๋ค.
- http://localhost:8080/actuator/env
metrics
- ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ์ข ์งํ๋ฅผ ์ ์ํ๋ค. (CPU ์ฌ์ฉ๋ฅ , ์ปค๋ฅ์ ํ..)
- http://localhost:8080/actuator/metrics
- cpu ์ฌ์ฉ๋ฅ ํ์ธ
http://localhost:8080/actuator/metrics/process.cpu.usage
conditions
- ์คํ๋ง ์๋ configuration ๊ณผ ์ง์ ์ค์ ํ configuration class๋ค์ ์ฑ๊ณต ์ฌ๋ถ์ ์ด์ ๋ฅผ ์ค๋ช ํ๋ค.
- http://localhost:8080/actuator/conditions
refresh
- ์ ํ๋ฆฌ์ผ์ด์ ์ ์ค์ ์ ๋ณด๋ฅผ refresh ํ ์ ์๋ค.
- [POST] http://localhost:8080/actuator/refresh
๊ทธ ์ธ์๋ ๊ณต์ ๋ฌธ์๋ฅผ ๋ณด๋ฉด ๋ค์ํ API ๋ค์ ํ์ธํ ์ ์๋ค.
https://docs.spring.io/spring-boot/docs/3.0.x/actuator-api/htmlsingle/#httpexchanges
actuator๋ ๊ฐ๋ฐ์์๊ฒ๋ ํธ์๋ฅผ ์ฃผ์ง๋ง ๋ณด์์ ๋ฌธ์ ๋ก ์์ ํ๊ฒ ์ฌ์ฉํ ํ์๊ฐ ์๋ค.
Spring Actuator ์์ ํ๊ฒ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ
- management.endpoints.enabled-by-default ์์ฑ์ false๋ก ํ์ฌ ๋ชจ๋ endpoint์ ๋ํด disable ์ํ๋ฅผ ์ ์งํ๊ณ ์ด์์ ํ์ํ endpoint๋ง true๋ก ์ค์ ํ์.
- actuator endpoint๋ enable์ํจ๋ค๊ณ ๋ฐ๋ก ์ฌ์ฉํ ์ ์๋ ๊ฒ์ด ์๋๋ผ expose์ ๋ช ์ํด์ฃผ์ด์ผ ํ๋๋ฐ expose์ Includeํ ๋, aterisk(*)๊ฐ ์๋ ํ์ํ endpoint๋ง ๋ช ์ํด์ฃผ๋๋ก ํ์.
ex) management.endpoints.web.exposure.include=health,httpexchanges
- acutator ์ ๊ทผํ ๋์๋ ์ธ์ฆ์ด ๋ ๊ถํ์ด ์๋ ์ฌ์ฉ์๋ง ์ ๊ทผ ๊ฐ๋ฅํ๋๋ก ํ์.
- acutator๋ ์๋น์ค ์ด์์ ์ฌ์ฉ๋๋ ํฌํธ์ ๋ค๋ฅธ ํฌํธ๋ฅผ ์ฌ์ฉํ๋ค.
- acutator default ๊ฒฝ๋ก๋ฅผ ์ฌ์ฉํ์ง ์๊ณ , ๊ฒฝ๋ก๋ฅผ ๋ณ๊ฒฝํ์ฌ ์ด์ํ๋ค.
์ฐธ๊ณ
https://techblog.woowahan.com/9232/