m-cmp / mc-observability

Apache License 2.0
6 stars 7 forks source link

mc-observability monitoring & logging API usage scenarios #57

Open kyuengmanKim opened 2 months ago

kyuengmanKim commented 2 months ago

mc-observability monitoring & logging API usage scenarios

API Swagger: mc-observability-swagger

mc-observability monitoring

모니터링 관련 시나리오는 다음과 같습니다.

  1. cb-tb를 통해 조회된 vm에 mc-agent 설치 요청 (add new monitoring target)
  2. 모니터링 환경 설정에 필요한 작업들
    1. 모니터링 매트릭 정의(add target monitoring item)
      1. 모니터링 플러그인 조회(get monitoring plug-in list)
      2. 매트릭별 수집 대상 정의(pluginSeq 입력)
      3. 매트릭별 수집 주기 설정
    2. 모니터링 저장소 정의(add target monitoring storage)
  3. vm에 대해 일정 기간 수집된 내역 확인
    1. 매트릭 저장소 조회(get all influxdb list)
    2. 저장된 매트릭과 매트릭별 field, tag 조회(get collected measurement & field list)
    3. 일정 기간 수집된 데이터 조회(get collected metric)
  4. 설치된 mc-agent 삭제 요청(delete monitoring agent & management target)

mc-observability logging

로깅 관련 시나리오는 다음과 같습니다.

  1. cb-tb를 통해 조회된 vm에 mc-agent 설치 요청(모니터링과 동일) (add new monitoring target)
  2. 로깅 환경 설정에 필요한 작업들
    1. 로깅 플러그인 조회(get monitoring plug-in list)
      1. 로깅은 'tail', 'opensearch' 플러그인을 사용합니다.
    2. 로깅 대상 정의(add target monitoring item)
      1. (1) 로그 수집 대상 'tail' 플러그인 추가
      2. (2) 수집 로그 저장소 'opensearch' 플러그인 추가
  3. 로그 저장소 조회
    1. (get all opensearch list)
  4. 일정 기간 수집된 로그 조회(get collected log)

상세 진행 과정은 다음 링크를 참고해주세요. (MCMP-Agent Use)

raccoon-mh commented 2 weeks ago

해당 시나리오 실행중 cb-tb를 통해 조회된 vm에 mc-agent 설치 요청에 문제가 있어 이슈 남깁니다.

요청 curl

curl --location 'http://myhost:18080/api/o11y/monitoring/monprj/monmci02/target/monvm-1' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--data '{
  "name": "monvm-1",
  "alias_name": "monvm-1",
  "description": "monvm-1"
}'

서버로그

****** | ****** ERROR ****** --- [******] o.a.c.c.C.[.[.[/].[dispatcherServlet]    : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is feign.codec.DecodeException: Error while extracting response for type [class ******.TumblebugMCI] and content type [application/json;charset=UTF-8]; nested exception is org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot deserialize value of type `java.lang.String` from Object value (token `JsonToken.START_OBJECT`); nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize value of type `java.lang.String` from Object value (token `JsonToken.START_OBJECT`)
 at [Source: (org.springframework.util.StreamUtils$NonClosingInputStream); line: 1, column: 443] (through reference chain: ******.TumblebugMCI["label"])] with root cause

com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize value of type `java.lang.String` from Object value (token `JsonToken.START_OBJECT`)
 at [Source: (org.springframework.util.StreamUtils$NonClosingInputStream); line: 1, column: 443] (through reference chain: ******.TumblebugMCI["label"])
...

응답

{
    "timestamp": "UTC",
    "status": 500,
    "error": "Internal Server Error",
    "path": "/api/o11y/monitoring/monprj/monmci02/target/monvm-1"
}

원인 분석

TumblebugMCI 모델 클래스의 label 필드가 String으로 정의되어 있지만, JSON 응답에서 해당 필드가 객체(Object)로 반환되고 있습니다. Jackson이 타입 불일치를 처리하지 못해 MismatchedInputException이 발생하고 있습니다.

제안

추가

감사합니다.