저렴한 가격에 잘 쓰고 있는 구글서버가 있는데, 어느날 갑자기 궁금증이 생겼습니다.
10분마다 CPU I/O가 갑자기 증가하다가 내려가는 것이다.
운영에 큰 지장은 없지만, 개발자라면 이런 것도 분석해보는 것도 좋은 경험이 될 것 같아서 파고 들어가기로 결정! (저렴한 서버라서 간단한 디코봇을 돌리는 용도)
!가장 저렴한 서버이기 때문에 서버 사양이 2코어 1기가 램 수준의 초저사양 입니다. 그래서 코어가 많은 서버는 이러한 현상을 보기 어렵습니다.
먼저, CPU 사용률이 증가하는 시간에 대기했다가 top
명령어로 어떤 프로세스가 실행되는지 추적했다.
그런데 이게 무슨 일...? Python의 패키지매니저인 pip가 타이밍에 맞춰서 CPU 자원을 쓰고 있는 것을 포착했다. (이때부터 꼬이기 시작한 원인 규명...)
pip
는 패키지매니저로 Linux Daemon
도 아니고, Process
또한 아닙니다. 결론은 어디선가 다른 친구가 주기적으로 pip를 사용하고 있다는 의미...!
사실 이쯤에서 리눅스를 많이 다뤄본 게 아니어서 어떻게 더 추적할지 질문하고 조사하는 시간이 길었습니다. 제가 시도해본 방법들은 아래와 같습니다.
pstree
명령어로 pip를 호출하는 프로세스 확인하기 (*)결과적으로 첫번째와 두번째는 꽝이었고, pstree
로 호출한 부모프로세스를 찾는 방법으로 해결했습니다.
시간에 맞춰서 pstree
를 사용하니 바로 확인이 된 pip!!!
google_osconfig
에서 호출한 것이었습니다. 그래서 google_osconfig
가 뭔데?
구글링 결과, google_osconfig
는 Google에서 VM 서버를 관리하기 위해 만든 매니저였습니다. 자세한 문서는 링크에서 확인할 수 있습니다.
문서에서 더 자세히 찾아본 결과, VM Manager는 아래의 도구로 구성되어 있는데,
여기서 OS 인벤토리 관리
가 정답이었습니다.
OS 인벤토리 관리 작동 방식
OS 인벤토리 관리가 사용 설정되면 OS 구성 에이전트는 인벤토리 검사를 실행하여 데이터를 수집한 다음 이 정보를 메타데이터 서버, OS Config API 및 다양한 로그 스트림으로 전송합니다. 이 검사는 VM에서 10분마다 실행됩니다.
OS 인벤토리 관리를 사용 설정하려면 VM에서 VM Manager를 설정해야 합니다. VM Manager 설정을 참조하세요.
VM Manager를 설정한 후에는 게스트 속성 또는 OS Config API를 쿼리하여 VM에서 실행 중인 운영체제에 대한 정보를 검색할 수 있습니다. 운영체제 세부정보 보기를 참조하세요.
그냥 궁금해서 해본 뻘짓이었다. 하지만 이 기회에 리눅스와 관련된 다양한 명령어들과 조금 더 친숙해진 것 같아서 나쁘지 않았다.