본문으로 건너뛰기

Monitoring 문제 해결

본 문서는 Monitoring 서비스와 관련된 주요 문제와 해결 방법을 정리한 문서입니다.


모니터링 에이전트 관련 오류

Not found file in path. Please Check path and permission

모니터링 에이전트 설치한 후 sudo journalctl -u kic_monitor_agent -f 명령어로 로그를 확인할 때 아래와 같은 오류가 발생할 수 있습니다.

오류 메시지
Jul 18 09:15:35 host-172-16-2-147 kic_monitor_agent[10046]: 2024-07-18T09:15:35Z W! [inputs.tail] Not found file in path. Please Check path and permission: {작성한 로그 파일}

이 오류는 로그 파일 경로나 권한 문제로 발생하며, 주요 원인은 다음과 같습니다.

원인 1: 로그 파일의 경로나 로그 파일 이름을 잘못 작성한 경우

▶️ 해결 방법: /etc/default/kic_monitor_agent 파일의 KIC_LOG_FILE_PATH에 올바른 파일 경로와 이름을 입력한 후, 모니터링 에이전트를 재시작합니다.

  1. /etc/kic_monitor_agent 파일에서 로그 파일 경로를 수정합니다.

    # 로그 탐색기를 통해 조회 가능한 로그 파일 경로 수정
    KIC_LOG_FILE_PATH=""
  2. 모니터링 에이전트를 재시작합니다.

    sudo systemctl restart kic_monitor_agent
  3. 에이전트가 정상적으로 실행되는지 확인합니다.

    sudo journalctl -u kic_monitor_agent -f

원인 2: 모니터링 에이전트 설치 후, 서비스 사용자를 임의로 변경했을 경우

에이전트 설치 시 기본 사용자(root)를 변경하면 권한 문제로 오류가 발생할 수 있습니다. 두 가지 해결 방법이 있습니다.

▶️ 해결 방법 1: 모니터링 에이전트 서비스 사용자를 root로 변경

/lib/systemd/system/kic_monitor_agent.service 파일 수정
[Service]
EnvironmentFile=-/etc/default/kic_monitor_agent
User=root # root로 변경

▶️ 해결 방법 2: 서비스 사용자가 로그 파일의 read 권한이 없을 경우, read 권한을 부여

# 예시 user, group, other 모두에게 read 권한 부여
sudo chmod 444 {로그 파일}

Collection took longer than expected; not complete after interval of 10s

모니터링 에이전트를 설치한 인스턴스 내에서 다음의 오류가 발생했다면, 짧은 수집 간격으로 인해 에이전트가 데이터를 수집하지 못한 것입니다.

오류 메시지
Apr 01 11:03:20 ${오류가 발생한 인스턴스} kic_monitor_agent[52839]: 2024-04-01T02:03:20Z W! [inputs.disk] Collection took longer than expected; not complete after interval of 10s

▶️ 해결 방법: 수집 간격(interval) 설정을 기본값(10s)보다 큰 값으로 수정합니다.

  1. /etc/kic_monitor_agent/kic_monitor_agent.conf 파일에서 interval 값을 기본값(10s)보다 큰 값으로 수정 후 저장합니다.

    interval 값 수정
    [agent]
    ## Default data collection interval for all inputs
    interval = "30s" # 기존에 설정된 시간(10s)보다 크게 입력
  2. 모니터링 에이전트를 재시작합니다.

    모니터링 에이전트 재시작
    sudo systemctl restart kic_monitor_agent
  3. 모니터링 에이전트가 정상적으로 실행되는지 확인합니다.

    모니터링 에이전트 실행 확인
    sudo journalctl -u kic_monitor_agent -f

Metric Export API 사용 시 발생하는 오류

Default Error Page: 페이지를 찾을 수 없습니다.

Metric Export API를 호출 시 잘못된 접근 환경일 때 발생할 수 있습니다.

오류 응답
<html>
<head>
<meta charset="UTF-8">
<title>
Default Error Page
</title>
</head>
<body>
<div style="text-align:center">
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<h1 className="header">페이지를 찾을 수 없습니다.</h1>
<p>
<span style="color: gray;">
요청한 주소가 변경 또는 삭제되었거나, 잘못된 주소여서 페이지를 찾을 수 없습니다.
</span>
<br/>
<span style="color: gray;">입력한 URL이 올바른지 다시 확인해 주시기 바랍니다.</span>
</p>
</div>
</body>
</html>

원인 1: 클라이언트가 kr-central-2 리전의 Public Virtual Machine이 아님

▶️ 문제 해결: Metric Export API를 호출하는 클라이언트가 kr-central-2의 퍼블릭 IP를 갖는 VM이거나 인터넷 게이트웨이 연결이 있는 kr-central-2의 VPC에 생성된 VM인지 확인합니다.

원인 2: 프로젝트에 존재하지 않는 사용자

▶️ 문제 해결: 사용자를 Metric Export API를 호출하는 클라이언트의 프로젝트 내에 프로젝트 구성원으로 초대합니다.

원인 3: 사용자 액세스 키 오류 혹은 만료

▶️ 문제 해결: 사용자 액세스 키 ID와 보안 액세스 키가 정확히 입력되었는지 확인하며, 정확히 입력했다면 키가 만료되지는 않았는지 확인합니다.

사용자 액세스 키는 카카오클라우드 콘솔 우측 상단에 위치한 프로필의 액세스 키에서 확인 및 발급받을 수 있습니다. 자세한 설명은 액세스 키 발급 가이드를 참고해 주세요.


not supported kakaocloud service-type header.

Metric Export API 사용 시, 아래와 같은 응답을 받을 수 있습니다. 이러한 응답은 service-type을 잘못 입력했을 경우 발생합니다.

오류 응답
{"status":"error","errorType":"bad_data","error":"not supported kakaocloud service-type header. current header value is {잘못 작성한 service-type}"}

▶️ 문제 해결: 정해진 service-type 헤더를 정확히 작성했는지 확인합니다.

올바른 요청 예시
curl -X GET 'https://monitoring.kr-central-2.kakaocloud.com/metric-export/grafana/{PROJECT_ID}/prometheus/api/' \
-H "Content-Type: application/x-www-form-urlencoded" \
-H "Credential-ID: {ACCESS_KEY_ID}" \
-H "Credential-Secret: {ACCESS_KEY_SECRET}" \
-H "service-type: server" # 확인해야 할 헤더

카카오클라우드에서 조회 가능한 service-type은 아래와 같습니다.

  • Virtual Machine, GPU, Bare metal Server (입력값: server)
  • Mysql (입력값: mysql)
  • MemStore (입력값: memstore)
  • Load Balancing (입력값: lb)

result에 어떠한 값도 없음 (데이터 확인 불가)

Metric Export API 사용 시, 아래와 같이 응답을 받을 수 있습니다. 이러한 응답은 service-type과 맞지 않는 메트릭 요청 시 발생할 수 있습니다.

응답 오류
{"status":"success","data":{"resultType":"vector","result":[]}}

원인 1: service-type에 해당하는 메트릭을 조회하지 않았을 경우

다음과 같이 잘못된 요청의 경우, 데이터가 없는 응답을 받을 수 있습니다.

잘못된 요청 예시
curl -vvv -X POST 'https://monitoring.kr-central-2.kakaocloud.com/metric-export/grafana/{PROJECT_ID}/prometheus/api/v1/query' \
-H "Content-Type: application/x-www-form-urlencoded" \
-H "Credential-ID: {ACCESS_KEY_ID}" \
-H "Credential-Secret: {ACCESS_KEY_SECRET}" \
-H "service-type: server" \ # service-type이 server인데,
-d "query=lb_bytes_in_persec" # Load Balancer에 해당하는 메트릭일 때

▶️ 문제 해결: service-type에 해당하는 메트릭을 요청합니다. 서비스별로 제공되는 메트릭은 모니터링 메트릭 문서를 참고해 주세요.

올바른 요청 예시
curl -vvv -X POST 'https://monitoring.kr-central-2.kakaocloud.com/metric-export/grafana/{PROJECT_ID}/prometheus/api/v1/query' \
-H "Content-Type: application/x-www-form-urlencoded" \
-H "Credential-ID: {ACCESS_KEY_ID}" \
-H "Credential-Secret: {ACCESS_KEY_SECRET}" \
-H "service-type: server" \
-d "query=cpu_usage" # 변경

원인 2: 해당 인스턴스에 모니터링 에이전트가 설치되어 있지 않았을 경우

Grafana에서 특정 인스턴스의 메트릭을 조회할 수 없다면, 모니터링 에이전트가 해당 인스턴스에 설치되지 않아 메트릭을 확인할 수 없는 것일 수 있습니다.

▶️ 문제 해결: 모니터링 에이전트 설치 가이드를 참고하여 모니터링 에이전트를 설치한 후, 메트릭을 확인합니다.

안내

Load Balancing, MySQL, MemStore 메트릭의 경우, 모니터링 에이전트를 설치하지 않아도 메트릭을 확인할 수 있습니다.