본문 바로가기

Mornitoring/Grafana

Grafana Mornitoring - 1. Intro

Grafana를 통해 모니터링 하기 위해 세가지 요소를 사용합니다. 

1. Grafana (모니터링 시각화 오픈소스)

2. Prometheus (시계열 DB)

3. NodeExporter (메트릭 수집 Agent)

 

Grafana, Prometheus, NodeExporter의 구성을 보면 다음과 같습니다.

 

 

기본적으로 NodeExporter는 각 인스턴스에 설치되어 9100 Port로 메트릭을 뿌리게 됩니다.

그리고 Prometheus는 자신의 yaml파일에 설정된 IP들의 NodeExporter에서 메트릭을 수집하게되고

그라파나는 9090포트로 열려있는 프로메테우스에 수집된 Metric들을 가져와서 대시보드를 구성하게 됩니다.

 

그러나 만약 서버에 컨테이너 기반으로 돌아가고, 컨테이너에 대한 Metric을 수집해야 할 경우 CAdvisor를 통해 수집하게 됩니다.

Kubernetes의 경우에는 경량 CAdvisor가 내장 되어있으므로 쉽게 수집할 수 있으나,

ECS의 경우에는 각 클러스터에 CAdvisor 및 NodeExporter를 설치 및 세팅해주어야 합니다.

 

따라서 저는 EC2 및 ECS에서는 Prometheus 및 Grafana 서버를 두고 테스트 할 예정 입니다.

Prometheus 서버에 AWS의 스토리지 서비스를 통해 거의 무제한 확장하는 형태를 마운트 시켜놓고 사용하여

Storage limit에 대한 제약은 고민하지 않을 수 있지만 서버가 죽게 되면,

그 동안의 메트릭이 수집되지 않는 다는 점이 문제가 될 수 있습니다.

 

Prometheus나 Grafana를 쿠버네티스 처럼 컨테이너로 운영하여 좀 더 효율적으로 할 수 도 있겠으나

역시 Prometheus 파드가 죽었을 경우 동안의 메트릭 소실이 일어날 수 밖에 없습니다.

따라서 Prometheus 서버에 대한 스토리지를 따로 마운트하고,

Cluster 형태로 구성하여 메트릭을 수집하는 Thanos를 사용하시는게 가장 좋은 방법으로 보여집니다.

Thanos에 대한 글은 조대협님의 블로그에 정리가 잘 되어있습니다.

 

다음 게시글에 EC2에 설치하여 간단하게 수집하는 방법들을 작성해보도록 하겠습니다.