7de9f170c0876d84239c86e2379c706e21542edf7e699a8ea805570032f06aed9fea361820e7b15d97a8e8913d746bc95f207536

7ee5f600b28b1984239986e7429c70653d898ba68488c729ac2ea5b5fe90fcaf0180503d92cc7907fd2c424d6a89dc9bebecf09b



추가한 컨테이너는 총 세 개임
- cadvisor
- prometheus
- node-exporter 

구성은 전부 공식문서들을 참조하엿음


---

7bed8103b7801af423998ee7309c70183a4698bfad8a1705d09272c6ed93da9847047b8f73dd89be40957d6e043db8dc168431ab


prometheus 는 다들 들어본적 잇는 메트릭 모니터링 시스템임

사진은 prometheus 를 정의한 docker-compose 코드임

command 로 밀어넣은 설정들은 공식문서의 node exporter 를 통해 linux host system monitoring 예제에 잇는걸 참고해서 가져왓고, 특이점이 잇다면 retention time 이랑 retention size 임

https://prometheus.io/docs/guides/node-exporter/


나같은 경우 프리티어로 받은 클라우드 컴퓨트 인스턴스의 스토리지가 그렇게 넉넉치가 않아서, 512MB 가 넘으면 / 3일이 넘으면 tsdb (time series db) 에 쌓아놓은 데이터를 비우도록 설정햇음

그리고 prometheus 에서 쌓은 메트릭 데이터들을 저장하기 위해 prometheus 라는 이름의 volume 도 하나 만들어주엇음

7aeaf473c48a6ef523ec82e0359c706b9cbb0c7c13196cd292515e49ecc637f55b29ebd28e0aef6d17c41634abc44f5453eb13dd

이건 prometheus config 파일
어떤 메트릭들을 어떻게 가져올건지 정의하는 부분

나같은 경우 1분 간격으로 
- prometheus
- node-exporter
- cadvisor
를 통해 메트릭을 수집하도록 설정함 

7c9cf503b0866cf023e685e1409c706b15ce61fcc205d6366e1845b907eb2957d8560317f70a97f6272c2502afaaee81b11e4500


이건 node-exporter 를 정의한 docker-compose 코드임


*nix kernel 을 통해 접근할수 잇는 하드웨어/운영체제 메트릭들을 가져오는 구성요소이고, 설정 자체는 위에 링크한 prometheus 공식문서 예제를 그대로 따름

09998605b5f01b87239e8696459c701b8fc3066b883e39e039905144f13a9532289e02a8e64f3e4f6f317708b85fe0763e0ea683



마지막으로 cadvisor 를 정의한 docker-compose 코드임


node-exporter 가 호스트 머신의 메트릭을 가져오는 거라면, cadvisor 는 그 호스트 머신에 구동되고 잇는 컨테이너들의 메트릭을 가져오는 구성요소임

https://prometheus.io/docs/guides/cadvisor/


설정은 위의 글을 보고 참고햇는데, 이미지 버전을 저렇게 특정하게 된 이유가 잇음

일단 내 개발환경은 m1 max 맥북(linux/amd64) 이고, 배포되는 환경은 arm64 아키텍처임

그런데 이전 이미지까지는 arm64, amd64 지원이 제대로 되지 않앗다가, 최근 버전이 되어서야 지원을 제대로 해줌 


이슈의 년도를 보면 꽤 오래 전부터 잇엇던 제안이엇음을 알수잇음

0e99837fb6f06080239b80e7379c70656fb0123a8b6d62a419266b0f52c6bce5ba4b064a551d4a947b6f4798cbcbadd963b2c405

가장 최신버전인 0.47.2 버전의 manifast 를 보면 알수잇듯 이제 다양한 아키텍처들을 잘 지원해줌

7ce88173bd841cf123e8f3934e9c701f4963ca722909bd29b0521e31ea44e33e5cfaaa13857f4c074b70af1dde5e8628d240cb68


그리고 이렇게 구성한 prometheus 의 데이터를 grafana dashboard 에 연동시켜줌

이렇게 컨테이너들을 다시 배포하게 되면, grafana 에 prometheus datasource 가 생김


대시보드는 사람들이 고맙게도 예쁘게 만들어줘서, 거기에 잇는 것들을 가져다사용함


처음에 사용한 건 node exporter 를 위한 대시보드

copy id to clipboard 해서 dashboard import 에 그 id 붙여넣고 prometheus datasource 연동하면 끝



그 다음으로 구성한건 cadvisor 를 위한 대시보드

위에 적은것과 마찬가지로 아주 간단하게 연동가능함


그런데 이런 대시보드들을 찾아보면서 느낀건데... 그냥 빨리 K*s 런타임으로 넘어가야겟다는 생각만 들음

K*s 런타임은 다운로드수도 엄청나고 유지보수도 꾸준히 되는반면, docker 로 구성한 사람들을 위한 대시보드들은 대체적으로 다 유기되엇음

---

공식문서를 보고 따라하는 굉장히 기초적인 과정이다만, 혹여나 누군가에게 도움이 되길 바라며 간단하게 작성해봄