✅ Prometheus란?애플리케이션 및 시스템에서 다양한 메트릭을 시계열 데이터로 수집하고 저장하는 일종의 데이터베이스를 말한다. Prometheus는 다음의 특징을 가진다.시계열 데이터 모델로, 각 시계열 데이터는 메트릭의 이름과 키/값 쌍으로 식별됨PromQL이라는 쿼리 언어를 통해 수집된 메트릭 데이터를 필터링하고 분석할 수 있다.분산 스토리지에 의존하지 않으며, 단일 서버 노드가 자율적으로 작동한다.HTTP를 통해 Pull 방식으로 데이터를 수집한다. 즉, 내 어플리케이션의 특정 api 엔드포인트를 통해 데이터를 요청해 받아오는 방식이다.Pull 방식을 기본적으로 사용하지만 단기적인 작업이나 백그라운드 작업 등 Pull이 어려운 경우를 위해 Pushgateway를 통해 Push 모델도 지원한다...
데브코스/실습 & 프로젝트
✅ 개요지금까지 PLG 스택에 대한 전반적인 구성은 완료했다.하지만 어디까지나 개발환경에서 테스트 한 것이고 실제 운영환경에 배포를 해야한다. ✅ Promtail 배포Loki와 Grafana는 Grafana Cloud를 이용하고 있었기 때문에 별도의 배포과정이 필요가 없다.단, 애플리케이션 쪽에서 로그를 수집하는 Promtail은 운영환경에 별도로 배포를 해주어야 한다. 0️⃣ 배포 구조스프링부트 서버에서 발생한 로그를 내부 디렉토리에 저장한다.Docker 볼륨 기능을 통해 스프링 부트 컨테이너 로그 디렉토리와 EC2 내부 로그 디렉토리를 동기화한다.이번엔 EC2 인스턴스와 Promtail 컨테이너의 로그 디렉토리 간에 볼륨을 설정해 로그 파일을 동기화 한다.Promtail은 로그 디렉토리로부터 로그를 ..
✅ 개요Grafana에서는 알림 기능을 제공한다.로그 데이터의 추이에 따라 특정 조건이 만족되면 알림을 보내는 형식인데 이메일, 슬랙, 텔레그램 등 다양한 채널로 알림을 받을 수 있다.이를 통해 애플리케이션 문제 상황에 대한 신속한 대응이 가능하다. ✅ 알람 요구사항나는 이전의 대시보드에서 설정한 항목 중 API 별 오류 발생 수를 체크하는 부분이 있었다.이와 연계해서 특정 발생 횟수가 넘으면 이메일로 알람을 받을 수 있도록 설정해보겠다. ✅ Alert Rule 만들기1️⃣ 쿼리 정의하기sum by(Path) (count_over_time({job="logs", log_level=~"warn|error"} | logfmt | Path != `` [1h]))1시간 이내에 들어온 예외 로그들 중 API Pa..
✅ 개요일반적인 로그 데이터는 단순한 텍스트 형식으로 이루어져있다. MySQL, Oracle과 같은 RDBMS에서는 테이블의 컬럼이 존재해 그 컬럼을 기준으로 쿼리를 할 수 있지만 단순한 텍스트 형식에서는 이것이 불가능하다. Grafana Loki의 쿼리 언어인 LogQL에서는 이를 가능하게 하기 위해 로그 메시지 안에서 필드를 구분시키는 방법을 제공한다.그 방법은 크게 두 가지이다.첫 번째는 logfmt라는 별도의 로그포멧팅 방식을 이용하는 것이고두 번째는 Promtail을 통한 전처리로 로그 수집 과정 중, 메시지에 라벨을 붙이는 것이다.지금부터 각각에 대해 알아보고 성능 비교까지 한번 해보도록 하겠다. ✅ logfmt💡 logfmt는 간단하고 사람이 읽기 쉬운 로그 포맷으로 키-값 쌍으로 데이터를..