Computer >> 컴퓨터 >  >> 프로그래밍 >> Ruby

AppSignal을 사용하여 Ruby on Rails 앱 성능을 효율적으로 모니터링하세요

이 기사 시리즈의 첫 번째 부분에서는 간단한 Ruby on Rails 애플리케이션을 DigitalOcean의 앱 플랫폼에 배포했습니다. 또한 Rails 앱을 AppSignal에 연결하여 AppSignal의 오류 대시보드에서 간단한 오류가 어떻게 추적되고 표시되는지 확인했습니다.

시리즈의 이번 부분에서는 AppSignal을 사용하여 Ruby on Rails 애플리케이션에 대해 다음을 설정하는 방법을 자세히 살펴보겠습니다.

  • 성능 모니터링
  • 간단한 API 호출을 모니터링하는 방법을 포함한 Rails 백그라운드 작업 모니터링
  • 로깅
  • 알림 알림

시작해 보겠습니다!

AppSignal을 사용하여 Rails 앱 성능 모니터링

가동 시간 모니터에 앱이 작동 중이라고 표시되면 모든 것이 괜찮다고 생각하고 싶을 수도 있습니다. 그러나 실제로는 느린 프로세스, 최적화되지 않은 데이터베이스 쿼리, 장시간 실행되는 서비스 호출 등의 형태로 내부적으로 문제가 발생할 수 있습니다.

웹 페이지 로딩 속도가 느리고 방문자 전환율이 낮다는 점을 고려할 때 이는 매우 중요한 문제입니다. 간단히 말해서, 느리게 실행되는 프로세스를 확인하지 않고 방치하면 많은 비용이 발생합니다. 하지만 Ruby on Rails 앱에는 움직이는 부분이 너무 많기 때문에 중요한 질문은 다음과 같습니다. 무엇을, 어디서 찾아야 합니까?

AppSignal이 작동하는 곳이 바로 여기입니다. AppSignal을 사용하여 Rails 앱의 성능을 추적하는 방법을 살펴보겠습니다.

응답 시간 추적

기본 대시보드에서 AppSignal은 Rails 앱이 얼마나 느리게(또는 빠르게) 실행되는지에 대한 빠른 개요를 제공할 수 있는 두 개의 그래프, 즉 처리량을 제공합니다. 및 응답 시간 그래프.

AppSignal을 사용하여 Ruby on Rails 앱 성능을 효율적으로 모니터링하세요

  • 처리량 - 이는 기본적으로 앱이 현재 처리하고 있는 초당 요청 수를 측정합니다(앱이 전체적으로 처리할 수 있는 초당 요청 수와 혼동하지 마십시오). 기본 경험 법칙은 초당 요청이 많을수록 좋습니다. 그러나 앱 서버가 초당 너무 많은 요청을 처리하는 경우 이를 처리하기 위해 서버 리소스를 확장해야 할 때일 수 있습니다.
  • 응답 시간 - 브라우저 응답에 걸리는 평균 시간(밀리초)입니다. 응답 시간이 길어질수록 앱 실행 상태가 더 나빠집니다. 여기서 좋은 경험 법칙은 Rails 웹 앱의 응답 시간이 100ms 미만인 경우 빠른 것으로 간주할 수 있는 반면, 300ms 이상의 응답 시간은 느린 것으로 간주할 수 있다는 것입니다.

이제 7일 동안 앱의 응답 시간과 처리량을 추적한다고 가정해 보겠습니다. 아주 쉽습니다. 그래프로 이동하세요. 성능 아래 하위 메뉴 왼쪽 메뉴에 있는 다음 아래와 같이 그래프 상단에 있는 시간 필터 버튼을 사용하세요.

AppSignal을 사용하여 Ruby on Rails 앱 성능을 효율적으로 모니터링하세요

이를 통해 어떤 날에는 다른 날에 비해 앱이 느리게 실행되는지 쉽게 확인할 수 있습니다.

이 보기에서 이벤트 그룹을 확인하는 것도 중요합니다. 응답 시간 아래에 있는 그래프 및 처리량 그래프:

AppSignal을 사용하여 Ruby on Rails 앱 성능을 효율적으로 모니터링하세요

이 그래프는 컨트롤러 계층과 뷰 계층에서 앱이 얼마나 빠르게 또는 느리게 실행되는지에 대한 세부 정보를 제공합니다. 여기에서 응답 시간이 느려지는 원인을 찾아 그에 따라 문제를 해결할 수 있습니다.

이제 AppSignal을 사용하여 데이터베이스 쿼리를 추적하는 방법으로 전환해 보겠습니다.

추적 데이터베이스 쿼리

일반적으로 응답 시간과 처리량을 최적화하여 앱의 속도를 훨씬 더 높일 수 있다는 것은 사실입니다. 그러나 느린 앱 동작의 경우 느리고 최적화되지 않은 데이터베이스 쿼리가 가장 큰 원인이 되는 경우가 많습니다.

악명 높은 N+1 쿼리의 예를 들어 보겠습니다. 1부에서 소개한 비용 추적기 앱에서 비용 컨트롤러의 인덱스 메서드는 다음과 같습니다.

 

무해해 보일 수도 있지만 문제를 살펴보면 AppSignal 대시보드 목록에 흥미로운 내용이 표시됩니다.

AppSignal을 사용하여 Ruby on Rails 앱 성능을 효율적으로 모니터링하세요

비용 관리자의 색인 방식에서 N+1 쿼리가 강조되었습니다.

문제 링크를 클릭하여 더 자세히 살펴보면 문제 세부정보를 확인할 수 있습니다. 화면은 다음과 같습니다:

AppSignal을 사용하여 Ruby on Rails 앱 성능을 효율적으로 모니터링하세요

AppSignal이 문제 해결 방법을 보여주는 더 자세한 블로그 게시물 링크를 포함하여 문제에 대한 설명을 어떻게 제공하는지 확인하세요.

계속해서 AppSignal이 백그라운드 작업에 어떻게 도움이 되는지 알아보세요.

AppSignal을 사용하여 Rails 백그라운드 작업 추적

백그라운드 작업은 다양한 작업 대기열 처리 gem 및 라이브러리 중에서 선택할 수 있는 많은 프로덕션 Ruby on Rails 애플리케이션의 공통 기능입니다.

AppSignal은 Sidekiq, Que, Delayed Job, Resque 등을 포함한 다양한 백그라운드 작업 처리 라이브러리 추적 및 모니터링을 지원합니다.

사용자가 대시보드에서 일일 환율을 확인할 수 있는 기능을 원한다고 가정해 보겠습니다.

이것이 작동하려면 그러한 환율을 제공하는 서비스에 대한 API 호출이 필요합니다(우리는 환율을 가져오기 위해 이와 같이 많은 사전 구성이나 지불이 필요하지 않은 서비스를 사용할 것입니다). 또한 정기적으로 이 서비스에 대한 호출을 대기열에 추가하려면 백그라운드 작업이 필요합니다.

비용 추적기 앱에서 사용할 백그라운드 처리 젬은 GoodJob이지만 자신에게 맞는 것을 자유롭게 사용할 수 있습니다.

요금을 가져오는 백그라운드 작업을 만들어 보겠습니다.

 

그런 다음 GoodJob이 이 작업에 대해 몇 분마다(또는 적절하다고 판단되는 방식으로) 크론을 실행하도록 설정합니다. AppSignal은 백그라운드 서비스의 존재를 자동으로 감지하고 멋진 필터를 포함하므로 이를 기본 웹 대시보드와 분리할 수 있습니다.

AppSignal을 사용하여 Ruby on Rails 앱 성능을 효율적으로 모니터링하세요

사전에 많은 도구를 사용할 필요 없이 AppSignal은 API 호출을 감지하고 모든 문제를 추적합니다.

AppSignal을 사용하여 Ruby on Rails 앱 성능을 효율적으로 모니터링하세요

AppSignal을 사용하여 Rails 백그라운드 작업을 모니터링하는 방법에 대해 더 자세히 알고 싶다면 설명서를 확인하는 것이 좋습니다. 지금은 가동시간 모니터링에 대해 살펴보겠습니다.

가동시간 모니터링

많은 Rails 개발자가 우려하는 또 다른 문제는 최종 사용자가 애플리케이션을 지속적으로 사용할 수 있다는 것입니다. 가동 중지 시간은 수익 손실을 의미할 수 있으며 기타 부정적인 결과를 초래할 수도 있습니다.

그렇더라도 앱의 가동 시간 상태를 수동으로 폴링하고 싶지는 않을 것입니다. AppSignal을 사용하여 가동시간 모니터링을 설정할 수 있습니다.

설정하는 것은 매우 쉽습니다. 가동시간 모니터링을 클릭하여 시작하세요. 링크를 클릭하세요.

그런 다음 가동시간 모니터 만들기를 클릭하면 버튼을 클릭하면 아래와 유사한 대화상자가 표시됩니다:

AppSignal을 사용하여 Ruby on Rails 앱 성능을 효율적으로 모니터링하세요

AppSignal을 사용하여 Ruby on Rails 앱 성능을 효율적으로 모니터링하세요

가장 중요한 설정을 추가하여 가동 시간 모니터를 완성하세요:

  • 이름 - 가동시간 모니터에 적절한 이름을 지정하세요.
  • URL - 가동시간 경로의 전체 URL을 제공하세요. Rails 7.1부터 기본 가동 시간 경로는 https://your-app-domain/up입니다. .
  • 지역 - 가동 시간을 확인하려는 지역을 선택하세요.
  • 알림 - 알림을 받을 알림 채널을 선택하세요.

다 마쳤으면 모니터를 만들어 보세요!

AppSignal 가동 시간 모니터에서 주목해야 할 점은 거의 매분마다 폴링이 수행되므로 계획의 한계에 도달하기가 매우 쉽다는 것입니다. 하지만 이에 대한 매우 좋은 해결 방법이 있으며 해당 문서에서 자세한 내용을 읽을 수 있습니다.

AppSignal이 로깅에 어떻게 도움을 줄 수 있는지 알아보기 전에 가동 시간 모니터링 계층을 완성하는 또 다른 중요한 기능인 무료 공개 상태 페이지가 있습니다.

공개 상태 만들기를 클릭하세요. 페이지 링크는 아래와 같습니다:

AppSignal을 사용하여 Ruby on Rails 앱 성능을 효율적으로 모니터링하세요

그런 다음 새 상태 페이지를 클릭하세요. 버튼을 누르면 다음 페이지로 이동됩니다:

AppSignal을 사용하여 Ruby on Rails 앱 성능을 효율적으로 모니터링하세요

AppSignal을 사용하여 Ruby on Rails 앱 성능을 효율적으로 모니터링하세요

계속해서 필수 정보를 모두 입력하세요. 사용자 정의 도메인을 사용하는 경우 cname.appsignal-status.com를 가리키는 CNAME 지시어를 추가해야 합니다. 사용자 정의 도메인의 DNS 설정에서.

AppSignal로 로깅

로깅은 AppSignal의 비교적 새로운 기능이지만 시기적절하고 환영받는 기능입니다. AppSignal을 사용하면 애플리케이션 모니터링과 로깅을 별도의 서비스로 실행할 필요가 없습니다.

로깅을 시작하려면 최신 버전의 AppSignal gem을 실행하고 있는지 확인하세요. 이전 버전의 gem이 있는 경우 다음을 사용하여 업데이트하세요.

 

그런 다음 새 초기화 프로그램을 만들고 다음과 같이 편집하세요:

 

이제 다음과 같이 앱 로그에 액세스할 수 있습니다:

AppSignal을 사용하여 Ruby on Rails 앱 성능을 효율적으로 모니터링하세요

심각도에 따라 로그 기록을 필터링하고 실시간 로그에 액세스할 수 있는 멋진 필터도 제공됩니다.

여기에서 AppSignal의 Ruby 문서 로깅을 살펴볼 수 있습니다.

기타 주목할만한 기능

AppSignal에서 사용할 수 있는 몇 가지 주목할만한 기능, 즉 이상 탐지 및 사용자 정의 지표가 있습니다.

이상 탐지

앱의 메모리 부족이 걱정된다고 가정해 보겠습니다. 앱의 사용 가능한 메모리가 눈에 띄게 감소하는 경우 이메일 알림을 보내는 트리거를 쉽게 설정할 수 있습니다.

이상 탐지로 이동하세요. 연결하고 새 트리거를 만든 다음 구성하세요.

AppSignal을 사용하여 Ruby on Rails 앱 성능을 효율적으로 모니터링하세요

  • 측정항목 - 제 경우에는 메모리 사용량에 관심이 있지만 사용 사례에 맞는 다른 측정항목을 선택할 수도 있습니다.
  • 트리거 세부정보 - 여기에서는 트리거와 관련된 세부 정보를 구성합니다. 제 경우에는 호스트 메모리가 200MB 미만으로 떨어지면 트리거가 실행됩니다.

맞춤 측정항목

AppSignal은 또한 사용자 정의 지표를 캡처하고 시각화하는 도구를 제공합니다. 이 기능만으로도 전체 기사를 보증할 수 있습니다. AppSignal을 사용하여 사용자 정의 지표를 모니터링하는 방법에서 이에 대한 모든 내용을 읽을 수 있고 AppSignal의 문서도 확인하실 수 있습니다.

마무리

이 기사 시리즈의 1부에서는 DigitalOcean에 호스팅된 Rails 앱을 설정하고 AppSignal을 사용하여 오류를 모니터링했습니다.

두 번째이자 마지막 부분에서는 성능 모니터링, 가동 시간 모니터링, 로깅 등을 포함하여 Rails 앱을 위한 AppSignal의 뛰어난 기능 중 일부를 살펴보았습니다.

AppSignal에는 이 기사 시리즈에서 효과적으로 다룰 수 있는 것보다 훨씬 더 많은 내용이 있습니다. Rails 앱에서 이 기능을 확인해 보시기를 적극 권장합니다.

즐거운 코딩 되세요!

추신 Ruby Magic 게시물이 보도되는 즉시 읽으려면 Ruby Magic 뉴스레터를 구독하고 단 하나의 게시물도 놓치지 마세요!