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
에 모니터링 로그를 전송할 파일 이름과 경로를 정확하게 작성한 후, 모니터링 에이전트를 다시 시작합니다.
-
/etc/kic_monitor_agent
파일의 로그 파일 경로를 수정합니다.# 전송할 로그 파일 경로 수정
KIC_LOG_FILE_PATH="" -
다음 명령어를 사용하여 에이전트를 다시 시작합니다.
sudo systemctl restart kic_monitor_agent
-
다음 명령어를 사용하여 에이전트가 정상적으로 실행되는지 확인합니다.
sudo journalctl -u kic_monitor_agent -f
원인 2) 모니터링 에이전트 설치 후, 서비스 사용자를 임 의로 변경했을 경우
최초 모니터링 에이전트 설치 시, 서비스 사용자(user)의 기본 값은 root
이므로 권한 문제가 발생하지 않습니다.
하지만 임의로 모니터링 에이전트의 서비스 사용자를 변경했을 경우, 권한 문제가 발생할 수 있습니다.
이 경우, 아래의 두 가지 방 법으로 해결할 수 있습니다.
해결 방법 1. 모니터링 에이전트 서비스 사용자를 root
로 변경
[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
)보다 큰 값으로 수정하면 해결됩니다.
-
/etc/kic_monitor_agent/kic_monitor_agent.conf
파일 내interval
값을 기본값(10s
)보다 큰 값으로 수정 후 저장합니다.interval 값 수정[agent]
## Default data collection interval for all inputs
interval = "30s" # 기존에 설정된 시간(10s)보다 크게 입력 -
모니터링 에이전트를 재시작합니다.
모니터링 에이전트 재시작sudo systemctl restart kic_monitor_agent
-
모니터링 에이전트가 정상적으로 실행되는지 확인합니다.
모니터링 에이전트 실행 확인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 메트릭의 경우, 모니터링 에이전트를 설치하지 않아도 메트릭을 확인할 수 있습니다.