카테고리 없음

Prometheus(2)

BTC_오사원 2022. 6. 27. 23:49

안녕하세요:) 임오군란과 민씨의 오입니다.

이번 주제는 오픈 소스 기반의 모니터링 시스템인 Prometheus의 주요기능과 그라파나와 연동에 대해 알아보도록 하겠습니다.

 

Prometheus의 주요기능

데이터 수집 부분

  • 데이터 수집을 PULLING 모델을 사용. 모니터링 대상이 되는 자원이 지표 정보를 Prometheus가 주기적으로 모니터링 대상에서 지표를 읽어오는 모델을 사용.
  • 모니터링 대상이 Prometheus의 데이터포맷을 지원할 경우 바로 읽어올 수 있고, 만약에 지원하지 않는다면 별도의 에이전트를 설치해서 지표를 읽어올 수 있는데, 이를 exporter라고 함. exporter는 mysql,nginx,redis와 같은 패키지는 미리 개발된 export가 있어서 다양한 서비스의 지표까지 쉽게 읽어올 수 있음. 이런 패키지 애플리케이션이 아니라, java나 node.js와 같은 사용자 애플리케이션의 경우에는 Exporter를 사용하는 방법 말고도, Prometheus 클라이언트 라이브러리를 사용하게 되면, 바로 지표를 Prometheus 서버로 보낼 수 있다.
  • Push gateway를 사용하는 방법이 있는데, 배치나 스케줄 작업 같은 서비스의 경우에는 항상 서비스가 떠있는 것이 아니라, 필요한 경우에만 떠있다가 작업이 끝나면 사라지는 경우가 있음. 서비스를 Pulling으로 지표를 얻어오기가 어려울 수 있는데, 보완하기 위해서, 서비스들이 Push 방식으로 Push gateway에 지표를 쏴주면, Push gateway가 지표를 보관하고 있다가 Prometheus 서버가 Pulling을 하면, 저장된 지표 정보를 리턴하도록 함.

 

서비스 디스커버리

  • 모니터링 대상 목록을 유지하고 있고, 대상에 대한 IP나 기타 접속 정보를 설정 파일에 주면, 그 정보를 기반으로 Prometheus 서버가 모니터링 정보를 읽어옴. 그러나 오토스케일링을 많이 사용하는 클라우드 환경이나 쿠버네티스와 같은 컨테이너 환경에서는 모니터링 대상의 IP가 동적으로 변경되는 경우가 많기 때문에 일일이 설정파일에 넣는데 한계가 있음. 문제를 해결 하기 위해서 Prometheus는 서비스 디스커버리를 사용하는데, 모니터링 대상이 등록되어 있는 저장소에서 목록을 받아서 그 대상을 모니터링하는 형태임. Prometheus는 DNS나 Consul, etcd와 같은 다양한 서비스 디스커버리 서비스와 연동을 통해서 자동으로 모니터링 대상의 목록을 가지고 올 수 있음.

 

저장 및 시각화

  • 수집된 지표 정보들은 프로메테우스 내부의 시계열 데이타베이스에 저장이 되고, Prometheus 웹 콘솔을 이용하여 시각화 되거나 또는 API를 외부에 제공해서 Grafana와 같은 시각화 툴을 통해서 지표를 시작화 해서 볼 수 있음.

 

알림 서비스

  • alerting 컴포넌트는, 지표에 대한 규칙을 걸어놓고 그 규칙을 위반할 경우에는 알림을 보낼 수 있는 기능을 가지고 있음. 알림을 보내는 대상은 이메일이나 pagerduty와 같은 notification 서비스 등과 연동이 가능함.

Prometheus와 그라파나 연동하기

1.Prometheus 데이터 소스 만들기

1-1. 사이드바에서 “톱니 바퀴”를 클릭하여 구성메뉴를 엽니다.

1-2. “데이터 소스”를 클릭합니다.

1-3. “데이터 소스 추가”를 클릭합니다.

1-4. 유형을 “Prometheus”를 선택합니다.

1-5. 적절한 Prometheus 서버 URL을 설정합니다.(예: http://localhost:9090/)

1-6. 원하는 대로 다른 데이터 소스 설정을 조정합니다.(예: 올바른 액세스 방법 선택)

1-7. "저장 및 테스트"를 클릭하여 새 데이터 소스를 저장합니다.

Prometheus 데이터 소스

 

2. Prometheus 그래프 만들기

2-1. 그래프 제목을 클릭한 다음 "편집"을 클릭합니다.

2-2. "메트릭" 탭에서 Prometheus 데이터 소스(오른쪽 하단)를 선택합니다.

2-3. Prometheus 표현식을 "쿼리" 필드에 입력하고 "메트릭" 필드를 사용하여 자동 완성을 통해 메트릭을 조회합니다.

2-4. 시계열의 범례 이름 형식을 지정하려면 "범례 형식" 입력을 사용하십시오. 예를 들어 반환된 쿼리 결과의 method및 status레이블만 대시로 구분하여 표시하려면 범례 형식 문자열을 사용할 수 있습니다. {{method}} - {{status}}

2-5. 그래프가 작동할 때까지 다른 그래프 설정을 조정합니다.

Prometheus 그래프

 

 

다음 시간에는 더 유익한 오픈 소스를 소개해보도록 하겠습니다.