본문으로 건너뛰기

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) 모니터링 에이전트 설치 후, 서비스 사용자를 임의로 변경했을 경우

최초 모니터링 에이전트 설치 시, 서비스 사용자(user)의 기본 값은 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가 적용된 Virtual Machine 또는 인터넷 게이트웨이가 연동된 kr-central-2의 VPC에 생성된 Virtual Machine인지 확인합니다.

원인 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에 해당하는 메트릭을 조회했는지 확인합니다. 아래 요청과 같이 server 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 메트릭의 경우, 모니터링 에이전트를 설치하지 않아도 메트릭을 확인할 수 있습니다.