전체 글
-
Prometheus Query (1) PromQL 기본24년 11월 이전/Metric 2021. 4. 20. 22:24
개요 Prometheus에 저장된 데이터를 쿼리하는 방법은 크게 다음의 2가지가 있다. PromQL HTTP API 이 장에서는 일반적으로 쿼리하는데 사용되는 PromQL의 "기본"이라 할 수 있는 Scalar, Selector, Matcher, Instant Vector, Range Vector, Time Duration, offset 등에 대해 살펴본다. 이 장에서는 쉽고 빠르게 데이터를 수집하도록 node-exporter와 Prometheus를 연동할 것이다. node-exporter와 Prometheus 연동 및 모니터링 시 필요한 내용들에 대해서는 "2부 모니터링 편"에서 깊이 다룰 예정이다. 여기서는, 실행하는 방법만 살펴보도록 하자. 코드는 다음 URL에서 얻을 수 있다. 5장 코드 : ht..
-
prometheus.yml 환경 변수 이용해서 동적으로 설정하기24년 11월 이전/Metric 2021. 4. 17. 21:39
개요 최근 회사에서 모니터링 시스템을 구축 관련 IaC 작업을 하다가 생긴 일이다. 내가 직면했던 문제 상황은 다음과 같다. 현재 시스템 내에서 메트릭 수집은 Prometheus가 담당하고 있고 Consul 서비스 디스커버리 연동 기능을 통해서 시스템 내의 다른 서버 인스턴스들의 메트릭을 수집하고 있다. Terraform으로 AWS 리소스들을 자주 생성/삭제를 하게 된다. 따라서 EC2 인스턴스의 할당된 public IP도 고정되지 않고 자주 바뀐다. 따라서 Prometheus는 동적으로 변경되는 Consul의 Control Plane Node 서버의 IP를 참조하여 설정되어야 한다. 따라서 prometheus.yml이 동적으로 변경되는 IP를 참조할 수 있는 방법을 찾아보게 되었다. 해결 방법의 종류 ..
-
Prometheus Label24년 11월 이전/Metric 2021. 4. 16. 22:01
개요 Label은 Prometheus의 아주 강력한 기능 중 하나이다. Label은 키-값 쌍으로 이루어져 있으며, Prometheus가 시계열 데이터를 식별하는데 "메트릭 이름"과 더불어서 사용한다. 예를 들어보자. 모니터링 세계에서 HTTP 요청에 대한 상태 코드는 주로 다음과 같이 수집한다. 2xx (응답 성공) 3xx (응답 성공 - 리다이렉션) 4xx (응답 실패 - 사용자 오류) 5xx (응답 실패 - 서버 오류) 어떻게 메트릭 이름을 지을 것인가? 아주 간단하게 다음과 같이 지을 수 있을 것이다. http_request_status_code_2xx http_request_status_code_3xx http_request_status_code_4xx http_request_status_cod..
-
Prometheus Metric Type24년 11월 이전/Metric 2021. 4. 9. 22:42
개요 Prometheus에서 메트릭을 수집하는 방법은 대표적으로 크게 2가지가 있다. 참고! 메트릭이란? 메트릭이란 수집하는 시계열 데이터를 일컫는 말이라고 보시면 됩니다. Client Library를 통한 메트릭 수집 Exporter를 통한 메트릭 수집 위 2가지 방법 모두, Prometheus에서 지원하는 다음의 4가지 메트릭 타입으로 각 메트릭을 정의하여 저장한다. Counter Gauge Summary Histogram 보통 모니터링 상황에서는 Exporter를 이용해서, 각 메트릭을 수집하는 것이 일반적이지만, 이번 장에서는 Prometheus의 메트릭 타입을 살펴보기 위해서, Golang 기반의 Client Library를 이용하여, 메트릭을 수집해 볼 것이다. 코드는 다음에서 확인할 수 있다..
-
Terraform으로 AWS VPC 관리하기24년 11월 이전/Terraform 2021. 4. 3. 15:38
AWS VPC이란 무엇인가? Amazon Virtual Private Cloud(이하 Amazon VPC 혹은 VPC)는 AWS 사용자가 정의한 "가상 네트워크"로써 cidr 블록 방식으로 IP 대역을 설정한다. VPC의 대표적인 구성 요소는 다음과 같다. Subnet subnet은 vpc 대역 안의 IP 주소 범위를 cidr 블록 방식으로 지정한다. 보통은 하나의 availability zone을 외부에서 통신할 수 있는 public subnet과 외부에서 통신이 불가능한 private subnet으로 나눈다. 또한 HA 구성을 위해 vpc 내부에 public-pirvate subnet 구조가 두 쌍이 되도록 만든다. Internet Gateway(IGW) vpc 내부의 public subnet 상의 ..
-
Packer 용어 정리24년 11월 이전/Packer 2021. 3. 26. 22:21
이번 장에서는 Packer 관련 용어들을 정리한다. Packer 관련 전반적으로 사용하는 용어들이니까 한 번쯤은 정리해볼 필요가 있다. 하지만 매우 간단하니까 쭉 훑는 느낌으로 공부해보자. 이 장을 진행하더라도 알쏭달쏭한 용어들이 있을 것이다. 하지만 추후 진행되는 장에서 Packer를 함께 사용하고 익혀나가다 보면 자연스럽게 용어들이 익혀질 것이니 걱정하지 말라. Artifact Artifact는 단일 Build의 결과물이며, 보통 머신 이미지를 나타내는 ID 혹은 File 세트이다. 모든 Builder들은 한 개의 Artifact를 생성한다. 예를 들어 Amazon EC2 Builder의 경우, 결과물인 Artifact는 "AMI ID(리전 당 1개) 세트"이다. VMware Builder의 경우엔,..
-
Cortex란 무엇인가24년 11월 이전/Metric 2021. 3. 23. 22:24
개요 이번 장에서는 Cortex가 무엇인지 공부한다. "갑자기 생뚱맞게 Prometheus 공부하다가 무슨 Cortex야?" 라는 의문이 생길 수도 있다. Prometheus는 뛰어난 성능과, 쉬운 접근성을 바탕으로 최근 나온 모니터링 기술 중 InfluxDB와 함께 업계 표준으로 자리 잡았다. 하지만 다음과 같은 문제점이 존재한다. Prometheus는 scale-out 구조를 고려하지 않고 설계되었다. Prometheus에서 긴 시간 범위를 지닌 데이터를 쿼리할 때 성능이 매우 저하되었다. Prometheus가 저장하는 데이터 특성 상 오랜 시간 저장하는 것이 쉽지 않다. 위 문제점들을 해결하기 위한 대표적인 솔루션이 바로 Cortex이다. 단점이라면 백엔드 구성을 S3, GCS 등으로 구성해야 하기..
-
프로세스 포트 모니터링하기 (1) blackbox-exporter24년 11월 이전/Metric 2021. 3. 19. 22:29
프로세스 포트 모니터링이란? 프로세스 포트 모니터링이란 명칭은 필자의 회사에서 사용하고 있는 모니터링 시스템의 기능 중 하나이다. 다른 곳도 동일하게 부르는지는 모르겠다. 간단하게 설명해서 특정 IP:PORT로 TCP 통신이 가능한 지 헬스 체크하는 것이다. 보통은 Zabbix, PRTG 등의 기술로 실행 중인 프로세스에 매핑된 포트를 모니터링을 한다. 우리는 이번 장에서 이를 Prometheus와 blackbox-exporter를 이용해서 구축한다. Blackbox Monitoring과 blackbox-exporter 먼저 용어 설명이 필요할것 같다. Blackbox Monitoring이란 무엇일까? 모니터링은 어떤 방법을 체택하는지에 따라 크게 다음과 같이 분류할 수 있다. Whitebox Monit..