🔥스파르타 TIL (MSA) 14

Grafana Alert Manager와 Kakao Open API 나에게 보내기 연동해보기 (feat. 좋지 않은 결과)

문득 이메일, slack, discord 등등 다양하게 Grafana에서 제공해주는 기능들을 보다보니 카카오톡 메시지로 알람을 받으면 좋을 것 같다는 생각을 하게 되었다. (하고 싶은 건 다 해보는 스타일...) 사실 좋은 방법은 아니지만 실제로 카카오톡 메시지를 받으면 신기할 것 같아서 진행해보았다. 우선 Discord, Slack에서 Webhook을 사용하듯이 직접 Grafana에서 사용할 Webhook용 Controller를 만들어야 한다.{ "client": "Grafana", "client_url": "http://grafana.local/alerting", "event_type": "alerting", "incident_key": "some-unique-key", "service_k..

Grafana Alert rules 정하기

이제 어떤 상황이 발생하면 알람을 보낼 수 있게 Alert rule을 정해보자 Grafana로 알람 보내기MSA 환경에서는 각각의 서비스가 독립적으로 배포되고 운영됩니다. ex)유저 서비스, 결제 서비스, 주문 서비스 등.이때 발생할 수 있는 문제점에는 만약 서비스 수가 많아질수록 모니터링이 복잡seungg8361.tistory.comAlert rules에서 New alert rule을 클릭해준다.간단하게 스프링 부트 애플리케이션을 종료되면 알람을 보낼 수 있도록 설정해보겠다. 2. Define query and alert condition 에서 Metrics를 클릭하고 Metrics explorer을 보면 여러가지 설정을 할 수 있다.우선 애플리케이션의 문제 발생 시 알람을 보내기 위해 이전에 설정해 ..

Grafana로 알람 보내기

MSA 환경에서는 각각의 서비스가 독립적으로 배포되고 운영됩니다. ex)유저 서비스, 결제 서비스, 주문 서비스 등.이때 발생할 수 있는 문제점에는 만약 서비스 수가 많아질수록 모니터링이 복잡해지고, 서비스 간 통신 장애, 특정 서비스만 에러 발생 등의 문제가 발생할 수 있다. 이런 문제를 해결하기 위해 Grafana에서는 알림을 보낼 수 있는 기능이 있다. 만약 서비스가 느려지거나 특정 지표(CPU, 메모리, 에러율 등)가 기준치를 넘을 경우 자동으로 감지해서 알림을 보내준다. 이러한 기능으로 로그를 보지 않고도 자동 알림을 통해 문제를 인지할 수 있어 운영 부담이 줄어들고, SLA(Service Level Agreement)를 만족하기 위해 실시간 모니터링과 빠른 대응을 할 수 있다. Grafana..

Grafana에서 Loki로 로그를 모니터링 해보자 (feat. 로그 수집 전략)

Loki는 Grafana Labs에서 개발한 로그 집계 시스템이다. 주로 로그 데이터를 저장하고, 라벨 기반의 메타데이터를 사용하여 로그를 효율적으로 검색할 수 있다는 장점이 있다.Loki를 사용해보기에 앞서서 MSA 환경에서 로그 관리가 왜 중요한지에 대해 먼저 알아보자 우리가 관리하는 서비스들은 점점 늘어나면서 각각의 서비스는 독립적으로 배포되고, 서로 다른 서버 또는 컨테이너에서 실행되게된다.이런 경우에 하나의 요청이 여러 서비스를 거칠 때 로그를 종합적으로 추적하기가 어렵고, 어디에서 문제가 발생했는지 알기가 점점 더 까다로워지기 때문에 시스템 상태를 모니터링하고, 잠재적인 문제를 사전에 발견하는데 필요하다. 로그를 수집하는 전략 중에 Sidecar 패턴, 에이전트 방식, Push 방식에 대해서 ..

Grafana를 사용해보자

Prometheus를 사용해보자Prometheus란 시간에 따라 수집된 시계열 데이터를 기반으로 하는 모니터링 및 경고 시스템으로, 서버, 컨테이너, 애플리케이션, 마이크로서비스 등에서 메트릭을 수집하고, 이를 저장 및 분석하는seungg8361.tistory.com이전에 사용했던 Prometheus를 Grafana를 통해 확인해보자 Grafana는 오픈소스 데이터 시각화 및 모니터링 도구로, 대시보드를 생성하고 데이터를 그래프나 차트 형태로 표현하며, 알림 기능으로 모니터링을 강화할 수 있다. 주요기능대시보드 : 데이터를 시각화할 수 있는 대시보드를 생성할 수 있도록 한다. ex) 그래프, 차트, 게이지 등데이터 소스 지원 : Prometheus, Elasticsearch, MySQL, PostgreS..

Prometheus를 사용해보자

Prometheus란 시간에 따라 수집된 시계열 데이터를 기반으로 하는 모니터링 및 경고 시스템으로, 서버, 컨테이너, 애플리케이션, 마이크로서비스 등에서 메트릭을 수집하고, 이를 저장 및 분석하는 도구이다. 구성 요서Prometheus 서버 : 메트릭 데이터를 수집하고 저장하는 핵심 컴포넌트로, 각 애플리케이션 또는 엔드 포인트로부터 데이터를 주기적으로 스크랩하여 시계열 데이터 베이스에 저장한다.시계열 데이터베이스 : 시간에 따라 변화하는 데이터를 효율적으로 저장하고 조회할 수 있도록 최적화된 데이터베이스Exporters : 특정 애플리케이션이나 시스템의 메트릭 데이터를 Prometheus가 이해할 수 있는 형식으로 변환해주는 도구 ex) micrometer-registry-prometheus 의존성 ..

Spring Cloud 란? (5) - Event-Driven Architecture

애플리케이션 내에서 특정 이벤트가 발생했을 때, 이를 감지하고 적절한 핸들러(리스너)가 동작하는 방식으로 설계하는 것이벤트 : 시스템 내 또는 외부에서 발생하는 상태 변화나 특정 동작을 의미한다 ex) 사용자가 버튼을 클릭, 주문이 생성 등.발생자(Producer) : 이벤트를 생성하고, 이벤트 버스에 전달하는 컴포넌트 ex) 프론트엔드, 사물인터넷 센서 등.소비자(Consumer) : 이벤트를 수신하고 이를 처리하는 컴포넌트  ex) 주문 처리 서비스, 알림 시스템 등.버스 : 발생자와 소비자를 연결하는 중개 시스템으로, 이벤트의 전달과 라우팅을 담당한다. ex) 메시지 브로커 시스템 EDA의 장점으로는 유연성 : 컴포넌트 간의 느슨한 결합으로 시스템 확장 및 변경이 용이하다.스케일링 : 비동기 처리로..

Spring Cloud 란? (5) - 분산 추적

Spring Cloud 란? (4) - API Gateway클라이언트의 요청을 받아 백엔드 서비스로 라우팅하고, 다양한 부가 기능을 제공하는 중간 서버 역할.클라이언트 요청을 적절한 서비스로 전달하는 라우팅 기능요청의 인증 및 권한을 검증여seungg8361.tistory.com Spring Cloud에서 분산 추적은 분산 시스템에서 발생하는 요청의 흐름을 추적하고 모니터링하는 중요한 기술로, 여러 서비스가 서로 독립적으로 실행되면서도 서로 의존하고 상호작용하는 시스템이다. MSA에서 각 서비스는 독립적으로 실행되며, 클라이언트의 요청을 처리하기 위해 서로 다른 서비스에 요청을 보내는데, 분산 추적은 이러한 여러 서비스 간의 요청 흐름을 추적하여 문제 해결, 성능 최적화, 서비스 상태 모니터링 등을 할 ..

Spring Cloud 란? (3) - 서킷 브레이커

마이크로서비스 간의 호출 실패를 감지하고 시스템의 전체적인 안정성을 유지하는 패턴으로외부 서비스 호출 실패 시 빠른 실패를 통해 장애를 격리하고, 시스템의 다른 부분에 영향을 주지 않도록 한다.  Spring Cloud 란? (1)마이크로서비스 개발을 위해 다양한 도구와 서비스를 제공하는 스프링 프레임워크의 확장이며, 마이크로서비스 아키텍처를 쉽게 구현하고 운영할 수 있도록 도와준다. 주요 기능 ▼서비스 등seungg8361.tistory.com   Resilience4j 주요 특징 ▼서킷 브레이커의 상태인 클로즈드, 오픈, 하프-오픈 상태를 통해 호출 실패를 관리한다.클로즈드 (Closed) : 기본 상태, 모든 요청을 통과시킨다. 호출이 실패하면 실패 카운터가 증가하고, 실패율이 설정된 임계값을 초과..

Eureka 서버 사용해보기

Spring Cloud 란? (1)마이크로서비스 개발을 위해 다양한 도구와 서비스를 제공하는 스프링 프레임워크의 확장이며, 마이크로서비스 아키텍처를 쉽게 구현하고 운영할 수 있도록 도와준다. 주요 기능 ▼서비스 등seungg8361.tistory.comMSA에서는 여러 개의 독립적인 서비스들이 존재하며, 이 서비스들이 동적으로 변할 수 있기 때문에, 서로의 위치(IP, 포트 등)를 알기 어렵다.Eureka 서버는 각 서비스의 정보를 관리하고 제공하여, 서비스 간의 통신을 원활하게 만들어 줄 수 있다.  만약 마이크로서비스 간 통신이 필요한 상황이 온다면, Eureka 서버에서 해당 서비스의 위치(IP, 포트)를 조회해서 클라이언트가 원하는 요청을 Eureka 서버를 통해 대상 서비스의 위치를 동적으로 가..