Google Cloud Platform에서 10분마다 CPU 사용률이 오르는 이유

SeHun.J·2023년 12월 26일
0

10분마다 폭주하는 CPU

저렴한 가격에 잘 쓰고 있는 구글서버가 있는데, 어느날 갑자기 궁금증이 생겼습니다.
10분마다 CPU I/O가 갑자기 증가하다가 내려가는 것이다.

GCP 서버의 CPU 사용률

운영에 큰 지장은 없지만, 개발자라면 이런 것도 분석해보는 것도 좋은 경험이 될 것 같아서 파고 들어가기로 결정! (저렴한 서버라서 간단한 디코봇을 돌리는 용도)

!가장 저렴한 서버이기 때문에 서버 사양이 2코어 1기가 램 수준의 초저사양 입니다. 그래서 코어가 많은 서버는 이러한 현상을 보기 어렵습니다.

원인 찾기

먼저, CPU 사용률이 증가하는 시간에 대기했다가 top 명령어로 어떤 프로세스가 실행되는지 추적했다.
top 명령어
그런데 이게 무슨 일...? Python의 패키지매니저인 pip가 타이밍에 맞춰서 CPU 자원을 쓰고 있는 것을 포착했다. (이때부터 꼬이기 시작한 원인 규명...)

pip는 패키지매니저로 Linux Daemon도 아니고, Process 또한 아닙니다. 결론은 어디선가 다른 친구가 주기적으로 pip를 사용하고 있다는 의미...!

사실 이쯤에서 리눅스를 많이 다뤄본 게 아니어서 어떻게 더 추적할지 질문하고 조사하는 시간이 길었습니다. 제가 시도해본 방법들은 아래와 같습니다.

  • Cron 작업 확인하기 > 매 10분마다 작동하므로 의심
  • 시스템로그(syslog) 확인하기
  • pstree 명령어로 pip를 호출하는 프로세스 확인하기 (*)

결과적으로 첫번째와 두번째는 꽝이었고, pstree로 호출한 부모프로세스를 찾는 방법으로 해결했습니다.

pstree

시간에 맞춰서 pstree를 사용하니 바로 확인이 된 pip!!!
google_osconfig에서 호출한 것이었습니다. 그래서 google_osconfig가 뭔데?

Google VM Manager

VM Manager

구글링 결과, google_osconfig는 Google에서 VM 서버를 관리하기 위해 만든 매니저였습니다. 자세한 문서는 링크에서 확인할 수 있습니다.

문서에서 더 자세히 찾아본 결과, VM Manager는 아래의 도구로 구성되어 있는데,

  • 패치(Patch): 이 서비스를 사용하여 주문형 패치와 예약된 패치를 적용합니다. 또한 환경에서 패치 규정 준수 보고를 위해 패치를 사용할 수 있습니다.
  • OS 인벤토리 관리(OS inventory management): 이 서비스를 사용하여 운영체제 정보를 수집하고 검토합니다.
  • OS 정책(OS policies): 이 서비스를 사용하여 소프트웨어 패키지를 설치, 삭제, 자동 업데이트합니다.

여기서 OS 인벤토리 관리가 정답이었습니다.

OS 인벤토리 관리 작동 방식

OS 인벤토리 관리가 사용 설정되면 OS 구성 에이전트는 인벤토리 검사를 실행하여 데이터를 수집한 다음 이 정보를 메타데이터 서버, OS Config API 및 다양한 로그 스트림으로 전송합니다. 이 검사는 VM에서 10분마다 실행됩니다.

OS 인벤토리 관리를 사용 설정하려면 VM에서 VM Manager를 설정해야 합니다. VM Manager 설정을 참조하세요.

VM Manager를 설정한 후에는 게스트 속성 또는 OS Config API를 쿼리하여 VM에서 실행 중인 운영체제에 대한 정보를 검색할 수 있습니다. 운영체제 세부정보 보기를 참조하세요.

os 인벤토리 관리

결론

그냥 궁금해서 해본 뻘짓이었다. 하지만 이 기회에 리눅스와 관련된 다양한 명령어들과 조금 더 친숙해진 것 같아서 나쁘지 않았다.

profile
취직 준비중인 개발자

0개의 댓글