• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

섹션14 Prometheus와 Grafana 설치 강의 내용중 문의 드립니다

23.09.10 01:16 작성 23.09.12 22:24 수정 조회수 378

0

강의 내용대로 진행하였는데

http://localhost:8000/user-service/actuator/prometheus

http://localhost:8000/order-service/actuator/prometheus

둘다 아래 이미지와같은 에러가 발생합니다

 

apigateway application.yml 설정

- id: user-service
  uri: lb://USER-SERVICE
  predicates:
- Path=/user-service/actuator/**
- Method=GET,POST
  filters:
- RemoveRequestHeader=Cookie
- RewritePath=/user-service/(?<segment>.*), /$\{segment}

- id: order-service
  uri: lb://ORDER-SERVICE
  predicates:
- Path=/order-service/actuator/**
- Method=GET
  filters:
- RemoveRequestHeader=Cookie
- RewritePath=/order-service/(?<segment>.*), /$\{segment}        

 

프로메테우스.yml 설정

static_configs:
  - targets: ["localhost:9090"]
- job_name: 'user-service'
  scrape_interval: 15s
  metrics_path: '/user-service/actuator/prometheus'
  static_configs:
    - targets: ['localhost:8000']
- job_name: 'order-service'
  scrape_interval: 15s
  metrics_path: '/order-service/actuator/prometheus'
  static_configs:
    - targets: ['localhost:8000']
- job_name: 'apigateway-service'
  scrape_interval: 15s
  metrics_path: '/actuator/prometheus'
  static_configs:
    - targets: ['localhost:8000']

 

apigateway 의 AuthorizationHeaderFilter.java

// 절차
// login -> token반환받음 -> client에서 apigateway로 정보 요청 시 (토큰정보를 가지고 요청함) -> 서버에서는 토큰정보 검증 (header 안에 토큰이 포함됨) 38줄
@Override
public GatewayFilter apply(Config config) {
    return ((exchange, chain) -> {
        ServerHttpRequest request = exchange.getRequest();

        if(!request.getHeaders().containsKey(HttpHeaders.AUTHORIZATION)) {
            return onError(exchange, "no authorization header", HttpStatus.UNAUTHORIZED);
        }

        String authorizationHeader = request.getHeaders().get(HttpHeaders.AUTHORIZATION).get(0);    // 반환값은 list배열이기에 0
        String jwt = authorizationHeader.replace("Bearer", "");

        if(!isJwtValid(jwt)) {
            return onError(exchange, "JWT token is not valid", HttpStatus.UNAUTHORIZED);
        }

        return chain.filter(exchange);
    });
}

여기서 지속적으로 아래 오류가 발생중입니다

2023-09-10 01:15:35.241 INFO 31372 --- [tor-http-nio-10] c.e.a.filter.GlobalFilter : Global Filter baseMessage: Spring Cloud Gateway Global Filter

2023-09-10 01:15:35.241 INFO 31372 --- [tor-http-nio-10] c.e.a.filter.GlobalFilter : Global Filter Start: request id -> a5f590c1-1098

2023-09-10 01:15:35.270 INFO 31372 --- [tor-http-nio-10] c.e.a.filter.GlobalFilter : Global Filter End: response code -> 404 NOT_FOUND

2023-09-10 01:15:35.528 INFO 31372 --- [tor-http-nio-12] c.e.a.filter.GlobalFilter : Global Filter baseMessage: Spring Cloud Gateway Global Filter

2023-09-10 01:15:35.528 INFO 31372 --- [tor-http-nio-12] c.e.a.filter.GlobalFilter : Global Filter Start: request id -> d5aec101-1099

2023-09-10 01:15:35.528 ERROR 31372 --- [tor-http-nio-12] c.e.a.filter.AuthorizationHeaderFilter : no authorization header

2023-09-10 01:15:35.528 INFO 31372 --- [tor-http-nio-12] c.e.a.filter.GlobalFilter : Global Filter End: response code -> 401 UNAUTHORIZED

 

이 필터관련 수정한건 없는것으로 기억하는데 제가 놓친게있을까요

답답하네요 ㅠ

답변 2

·

답변을 작성해보세요.

2

tjwndnjs1998님의 프로필

tjwndnjs1998

2023.11.13

안녕하세요.
저도 동일한 문제가 있었습니다.

결론부터 말씀드리면
user-service/actuator/**에 AuthorizationHeaderFilter가 적용됐기 때문입니다.

아마 질문자님의 apigateway-service의 application.yml을 보시면 Path=/user-service/**에 AuthorizationHeaderFilter가 적용된 이후에 Path=/user-service/actuator/**에 대한 설정이 있으실 겁니다.

위에 있는 코드가 우선순위로 적용 되는 것 같습니다.
따라서 postman으로 JWT를 넣어서 사용하시거나,
Path=/user-service/** 와 Path=/user-service/actuator/** 의 설정 순서를 바꿔주시면 해결할 수 있습니다.




읽어주셔서 감사합니다.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2023.09.12

안녕하세요, 인프런 AI 인턴이에요.

아래 이미지와 같은 Prometheus와 Grafana 설치 중 발생하는 에러에 대해 문의하셨는데요, 불편을 드려 죄송합니다. 하지만 현재 제가 보유하고 있는 정보로는 정황을 파악하기 어려워서 정확한 답변을 드리기 어렵습니다. 이러한 경우에는 해당 에러에 대한 구체적인 내용이나 스크린샷, 에러 메시지 등을 자세히 기재해주시면 더 정확한 도움을 드릴 수 있을 것 같아요.

추가로, 인프런 커뮤니티는 프로그래밍 관련 질문에 대해서 답변을 해드리고 있어요. Prometheus와 Grafana 설치와 관련된 질문도 프로그래밍에 해당하는 내용이라면 도움을 줄 수 있지만, 설치 및 에러 해결과 같은 경우에는 고객센터로 문의해주셔야 더 정확한 도움을 받으실 수 있을 거예요. 실제로 제가 도움 드릴 수 있는 부분과 도움을 드리지 못하는 부분을 나누는 것이 중요하니 참고하시기 바랍니다.

더 도움이 필요하시다면 언제든지 물어보세요. 좋은 하루 보내세요!

나현우님의 프로필

나현우

질문자

2023.09.12

안녕하세요.

제목을 오해할 수 있게 적었네요 ㅎㅎ;

설치관련문의가아니고 섹션14의 강의 제목입니다

문제가되는 오류부분은 위에 다 올려놓았습니다

정보를 15초마다 수집해가는데 apigateway 만 401오류가 발생하는데 강의대로 진행을했는데 오류나는이유가 궁금합니다