2019. 5. 25. 18:03ㆍ[공부] 영상/스프링 부트 강의
Actuator
production 에서 App의 모니터링 기능을 제공한다.
Auditing, health, metric 등을 자동으로 감시할 수 있도록 해준다.
Spring security 를 사용할 경우 Actuator 의 접근 경로를 풀어주도록한다.
webSecurity
.ignoring()
.requestMatchers(EndpointRequest.toAnyEndpoint())
Endpoint : 모니터링 하는 대상
Actuator를 Remote 로 모니터링 할 때 두가지 방법이 존재한다.
방법 1. JMX
방법 2. Http (web)
Http web을 통해 endpoint 모니터링 하기
/actuator |
web을 통해 접근 가능한 actuator endpoint 목록 열람 |
/actuator/health | Healthcheck |
/actuator/beans | application context안의 bean 들을 열람 |
/actuator/heapdump | heap dump 열람 |
/actuator/threaddumbp | thread dump 열람 |
/actuator/logger | logger 열람 |
... | ... |
이외의 endpoint 가 궁금하다면 : https://docs.spring.io/spring-boot/docs/current/reference/html/production-ready-endpoints.html#production-ready-endpoints |
Actuator를 가져오면 기본적으로 대부분의 endpoint가 활성화 되어있다.
but. endpoint는 민감한 정보를 노출하기 때문에 health와 info 외에 web으로의 노출은 활성화 되어있지 않다.
즉 예를들어 /actuator/beans 는 web을 통해서 열람할 수 없다. 모든 endpoint 를 web에서 활성화 시키고 싶다면 property를 통해 활성화 해주면된다.
management.endpoints.web.exposure.include=*
actuator 에 접근하는 base path(/actuator) 를 변경하고 싶으면 아래와 같이 property를 주면된다.
management.endpoints.web.base-path=/management
actuator 에 접근하는 port 를 변경하고 싶으면 아래와 같이 property를 주면된다.
management.server.port=9090
health 정보를 좀 더 디테일 하게 얻고 싶다면 아래 property를 주면 된다.
management.endpoints.health.show-details=always
Custom 한 Endpoint를 만들 수도 있다.
ex. /actuator/myEndpoint 를 만들 수 있다.
@Component
@Endpoint(id="myEndpoint")
public class MyEndpoint{
private String value="Hello world";
@ReadOperation
public String getValue(){
return value;
}
@WriteOperation
public void setValue(String value){
this.value = value;
}
@DeleteOpertation
public void deleteValue(){
this.value = null;
}
}
Health check 할 때 원하는 데이터의 health 를 볼 수 있도록 만들기
@Component
public class MyHealthIndicator implements HealthIndicator{
@Autowired
MyEndpoint myEndpoint;
@Override
public Health health(){
if(!myEndpoint.getValue().equals("Hello world")){
return Health.down().withDetail("value was changed").build();
else
return Health.up().build();
}
}
/actuator/health 에 들어가면 myEndpoint 에대한 health 정보가 나오는 것을 확인 할 수 있다.
Loggers
런타임 중에 서버에 찍히는 로깅 레벨을 바꿀 수 있다. 예를들어 서버에 아무런 설정도 하지 않았다면 서버는 INFO 레벨의 로깅 정보를 찍어내고 있다. 이러한 서버에 찍히는 로깅 정보를 읽어보고 싶으면 /actuator/loggers 엔드포인트에 접근하면 확인 할 수 있다.
Acuator remote 를 통해 이러한 로깅 레벨을 변경할 수 있다.
curl -XPOST http://localhost:8080/actuator/loggers/org.springframework.web
-H 'Content-Type: application/json; charset=utf-8'
-d '{ "configuredLevel":"debug" }'
서버에 찍히는 로깅 레벨이 info 에서 debug로 바뀌게 된다.
SignalFX : Actuator를 통해 모니터링을 gui 로 할 수 있도록 도와주는 모니터링 시스템 (like influx)
1. signalFX에 가입하여 Access token을 얻는다.
2. 스프링 부트에 signalFX 에 의존성을 걸어준다.
3. 스프링 부트에 signalFX 설정을 해준다.
management.metrics.export.signalfx.access-token=YOUR_ACCESS_TOKEN
management.metrics.export.signalfx.step=30s
30 초마다 actuator 정보를 signalFX로 보낸다.
signalFX는 이를 바탕으로 그래프와 같은 보드를 그려준다.
컨트롤러나 메소드에 @Timed 를 달아주면 metric 정보를 측정할 때 해당 컨트롤러, 메소드의 시간을 측정한다.
'[공부] 영상 > 스프링 부트 강의' 카테고리의 다른 글
스프링 부트 강의 정리 (39~40 : 배포) (0) | 2019.05.26 |
---|---|
스프링 부트 강의 정리 (31~34 : NoSQL, API Client) (0) | 2019.05.19 |
스프링 부트 강의 정리 (28~30 : Database) (0) | 2019.05.19 |
스프링 부트 강의 정리 (26 ~ 27 : Security) (0) | 2019.05.11 |
스프링 부트 강의 정리 (23 ~ 25 : 웹플럭스, 컨테이너) (0) | 2019.05.11 |