사실 서버 모니터링 처음이다.
정보 공유를 할 입장은 안되지만 최대한 여기저기서 찾아와서 정리해보겠다.
쿠버네티스 기반으로 MSA 서비스를 제작중이다. 각 서비스 역할이 철저히 분리되어 있는 상황이고, 나는 여기서 달리3 API를 이용한 스프링 서비스와 엘라스틱 서치의 벡터디비를 이용한 FAST API서비스를 맡고 있다.
자세한건 프로젝트 다 끝나고 회고하며 적도록 하겠다.
위 내용은 몇번 언급했어서 아마 내 예전 글들을 보면 대충 과정이 나올 것이다. 적은게 꽤 있어서 이걸 하나의 글 폴더로 묶어야하나 고민중이다.
아무튼 서비스 개발이 거의 끝나가는 단계이기에 서버 모니터링과 test code작성만이 남아있다.
그 중에서 서버 모니터링과 관련한 부분에 관해 정리해보고 실습까지 해볼 예정이다.
위의 사진이 현재 내 서비스의 모습과 굉장히 유사해서 가져왔다.
Prometheus를 사용하면 개발 언어나 서버 프레임워크에 구애받지 않고, 여러 서비스의 지표를 모아 볼 수 있다고 한다.
ex) 서버에서 최근 10초간 요청 수라는 metric을 제공하고 프로메테우스가 30초에 한번씩 스크랩핑 한다면 20초에 해당하는 정보가 날라감.
➡️ 누적 요청 수 metric을 제공하는 것이 효과적
위의 인프라 아키텍처를 보면 BigQuery라는 툴이 존재한다.
프로메테우스와 그라파나는 워낙 유명해서 들어봤었지만 빅쿼리는 정말 초면이었다.
--storage.tsdb.retention.time
또는 --storage.tsdb.retention.size
옵션을 통해 특정 범위를 넘어가는 오래도니 데이터를 자동으로 지우게 설정할 수 있음.위와 같은 방법도 존재하긴 한지만, 사실 삭제한다는 것이 좀 조심스러워야 하는 작업이다.
과거의 데이터에서 문제를 찾아야 할수도 있는 노릇이니 말이다.
따라서 이 문제를 해결하기 위해 프로메테우스에서 지원하는 remote storage integration을 이용해서 외부 저장소에 시계열 정보를 저장할 수 있다.
내가 참고한 글에서는 Bigquery를 이용하여 프로메테우스가 수집한 메트릭을 빅쿼리에 적재하도록 설정했다고 한다.
다만 빅쿼리가 정답은 아니다! 프로메테우스는 여러 데이터 플랫폼 연동을 지원하기에 다른 플랫폼과 비교를 해보며 선택하는 것이 좋을 것 같다.
아래는 그 예시이다.
그라파나 사진이 너무 크다..
출처
https://blog.daouidc.com/blog/monitoring-server#:~:text=내릴%20수%20있습니다.-,서버%20모니터링%20시스템의%20종류,기반%20시스템%2C%20그리고%20모바일%20시스템.
https://12bme.tistory.com/116
https://yozm.wishket.com/magazine/detail/2280/