참고
액추에이터 - health
상세보기
NOTE
management:
endpoint:
health:
show-details: always
YAML
복사
자세한 정보를 위해서 show-details를 always로 해준다.
{
"status": "UP",
"components": {
"db": {
"status": "UP",
"details": {
"database": "H2",
"validationQuery": "isValid()"
}
},
"diskSpace": {
"status": "UP",
"details": {
"total": 2000396742656,
"free": 1813467586560,
"threshold": 10485760,
"path": "D:\\study\\Spring\\Spring_final\\start\\do-actuator-start\\.",
"exists": true
}
},
"ping": {
"status": "UP"
}
}
}
JSON
복사
컴포넌트 상태만 보기
NOTE
management:
endpoint:
health:
show-components: always
YAML
복사
show-componests를 사용
{
"status": "UP",
"components": {
"db": {
"status": "UP"
},
"diskSpace": {
"status": "UP"
},
"ping": {
"status": "UP"
}
}
}
JSON
복사
기본정보인 status만 제공된다.
헬스 이상상태
NOTE
{
"status": "DOWN",
"components": {
"db": {
"status": "DOWN"
},
"diskSpace": {
"status": "UP"
},
"ping": {
"status": "UP"
}
}
}
JSON
복사
헬스 컴포넌트 중 하나라도 이상이있다면, 전체 상태는 DOWN이 된다.
액츄에이터 - info
기본/env 정보보기
NOTE
management:
info:
# 기본적으로 제공해주는 정보
java:
enabled: true
os:
enabled: true
env:
enabled: true # 커스텀한 정보를 보기위해 true
info:
# 사용자가 커스텀한 정보
app:
name: hello-actuator
company: yh
YAML
복사
info에서 제공하는 정보를 볼수도있고, 직접 넣을수도 있음
{
"app": {
"name": "hello-actuator",
"company": "yh"
},
"java": {
"version": "19-ea",
"vendor": {
"name": "Oracle Corporation"
},
"runtime": {
"name": "OpenJDK Runtime Environment",
"version": "19-ea+20-1369"
},
"jvm": {
"name": "OpenJDK 64-Bit Server VM",
"vendor": "Oracle Corporation",
"version": "19-ea+20-1369"
}
},
"os": {
"name": "Windows 10",
"version": "10.0",
"arch": "amd64"
}
}
JSON
복사
java, os 등 여러 정보가 표기됨
build 정보
NOTE
build.info.properties를 가져옴!
springBoot {
buildInfo()
}
Groovy
복사
build.gradle에 다음코드를 추가
{
// ...
"build": {
"artifact": "actuator",
"name": "actuator",
"time": "2023-04-02T13:46:56.634Z",
"version": "0.0.1-SNAPSHOT",
"group": "hello"
},
// ...
}
JSON
복사
build에 대한 정보가 출력된다.
build-info.properties 코드
git 정보
NOTE
git.properteis를 가져옴!
plugins {
...
id "com.gorylenko.gradle-git-properties" version "2.4.1" //git 버전작성
}
Groovy
복사
build.gradle에 다음코드를 추가 (해당 정보는 git으로 관뢰되어야 나온다)
{
// ...
"git": {
"branch": "master",
"commit": {
"id": "87c5211",
"time": "2023-03-17T06:57:52Z"
}
},
// ...
}
JSON
복사
commit정보를 볼 수 있음(더 많은 정보를 볼수도 있다)
management:
info:
git:
mode: "full"
YAML
복사
자세한 정보를 알기 위해선 다음 옵션 작성
git.properties 코드
액츄에이터 - logger
NOTE
loggers 엔드포인트를 사용하면 로깅과 관련된 정보를 확인하고, 또 실시간으로 변경할 수도 있다.
LogController 생성
NOTE
@Slf4j
@RestController
public class LogController {
@GetMapping("/log")
public String log(){
log.trace("trace log");
log.debug("debug log");
log.info("info log");
log.warn("warn log");
log.error("error log");
return "ok";
}
}
Java
복사
여러 레벨의 로그를 남기는 단순한 컨트롤러
로그레벨 확인
NOTE
logging:
level:
hello.controller: debug
YAML
복사
•
hello.controller 패키지와 그 하위는 debug 레벨을 출력하도록 함
실행결과
// ...
{
"hello": {
"effectiveLevel": "INFO"
},
"hello.ActuatorApplication": {
"effectiveLevel": "INFO"
},
"hello.controller": {
"configuredLevel": "DEBUG",
"effectiveLevel": "DEBUG"
},
"hello.controller.LogController": {
"effectiveLevel": "DEBUG"
},
}
JSON
복사
•
로그를 별도로 설정하지 않으면 기본으로 INFO를 사용한다.
•
실행결과를 hello는 INFO, hello.controller부터는 DEBUG임을 확인할 수 있다.
자세히 조회하기
{
"configuredLevel": "DEBUG",
"effectiveLevel": "DEBUG"
}
JSON
복사
localhost:8080/actuator/loggers/hello.controller
•
로거이름을 뒤에 넣으면 해당 부분의 로거정보만 조회가 가능하다.
실시간 로그 레벨 변경
NOTE
개발 서버는 보통 DEBUG로그를 사용하지만, 운영 서버는 DEBUG로 하면 너무 많은 로그를 출력하게되 디스크에 영향을 주게된다.
•
서버는 중요하다고 판단되는 INFO레벨을 사용한다.
•
그런데 서비스 운영중에 문제가 있어서 DEBUG나 TRACE로그를 남겨야 하는경우 일반적으로는 로깅 설정을 변경하고, 서버를 다시 시작해야 한다.
•
loggers엔드포인트를 사용하면 다시 시작하지 않고, 실시간으로 로그 레벨을 변경할 수 있다.
POST 전달
{
"configuredLevel": "TRACE"
}
JSON
복사
localhost:8080/actuator/loggers/hello.controller
{
"configuredLevel": "TRACE",
"effectiveLevel": "TRACE"
}
JSON
복사
hello.controller의 로그레벨이 TRACE로 변경됨!
액츄에이터 - httpexchanges
NOTE
HTTP 요청과 응답의 과거 기록을 확인하고 싶다면 httpexchanges 앤드포인트를 사용하면 된다.
InMemoryHttpExchangesRepository 추가
NOTE
@Bean
public InMemoryHttpExchangeRepository httpExchangeRepository() {
return new InMemoryHttpExchangeRepository();
}
Java
복사
기본적으로 제공해주는 InMemoryHttpExchangeRepository 추가
•
HttpExchangeRepository 인터페이스의 구현체를 빈으로 등로갛면 httpexchanges 앤드포인트를 사용할 수 있다.
•
스프링 부트는 기본으로 InMemoryHttpExchangeRepository 구현체를 제공한다.
httpexchanges 확인
NOTE
`{
"exchanges": [
{
"timestamp": "2023-04-03T05:23:15.725426400Z",
"request": {
"uri": "http://localhost:8080/actuator/httpexchanges",
"method": "GET",
"headers": {
"host": [
"localhost:8080"
],
"connection": [
"keep-alive"
],
// ...
JSON
복사
http://localhost:8080/actuator/httpexchanges
http 요청기록에 대한 정보가 나온다.