M1 환경에서 docker로 cadVisor 구동 시 Failed to create a manager 이슈 발생

기존에 디스코드 봇 서비스르 discord bot 게이트웨이와 nestjs 서버를 따로 pm2를 붙여서 우분투 환경의 개인 서버에서 구동하고 있었는데 개인 서버다 보니 AWS cloudwatch와 같은 모니터링툴이 없었다. 모니터링의 부재로 인해 서버 리소스 모니터링 및 장애 알림의 부재로 매번 직접 ssh로 접근해서 glances를 통해 서버 리소스를 체크해야해서 불편하였다. 그래서 모니터링툴(그라파나, 프로메테우스)을 연동할 겸 dockerize해서 docker-compose로 관리하려는 의도로 dockerize를 진행하였다.

 

그라파나와 프로메테우스를 사용하면서 리소스를 체크하기 위해 시스템 메트릭 수집하는 node-exporter와 Docker 컨테이너 리소스를 체크하는 cadVisor를 docker-compose.yml에 추가해주고, $ docker-compose up을 진행하였는데 기존의 인텔 맥에서는 볼 수 없던 호환성 에러가 발생하였다.

 

호환성 이슈......?

 

cadvisor 컨테이너에서 Cannot detect current cgroup on cgroup v2 에러와 함께 Failed to create a manager: could not detect clock speed from output 이슈가 발생하였다. 에러 메세지만 읽어봐도 M1 칩의 명령어 셋과 cadVisor가 체크할 수 있는 명령어 셋의 차이에서 이슈가 생기는 듯 하였다.

 

해당 이슈는 깃헙에서도 https://github.com/google/cadvisor/issues/2763 해당 이슈의 코멘트를 통해 호환성 이슈가 계속 발생하고 있음을 알 수 있었다. M1칩이 출시된 지 1달이 지난 2020년 12월에 처음 오픈된 이슈가 아직까지 M1 Ultra 칩이 출시된 2022년 5월인 현재까지(!) 오픈되어있고, 이슈가 계속 발생하는걸 보면 로컬 환경에서 모니터링툴이 제대로 연동되었는지 확인할 방법은 없는 것으로 보인다. 나중에 해당 이슈를 해결하면 블로그 글을 업데이트할 예정이다.