Computer >> Máy Tính >  >> Lập trình >> Ruby

Cách dễ nhất để theo dõi Ruby:Thiết bị đo tự động

Thiết lập một tổng quan giám sát thích hợp về hiệu suất ứng dụng của bạn là một nhiệm vụ phức tạp. Thông thường, trước tiên bạn cần phải tìm ra những gì bạn cần theo dõi, sau đó ghi cụ thể mã của bạn và cuối cùng là hiểu tất cả dữ liệu đã được phát ra.

Tuy nhiên, với một số thứ đã được thiết lập sẵn và một APM hỗ trợ Ruby, việc thực hiện bước này trở nên dễ dàng hơn bao giờ hết. Trong bài đăng này, chúng tôi sẽ chỉ cho bạn cách bạn cũng có thể làm điều đó.

Thiết bị đo đạc tự động - Thiết lập APM Rảnh tay

Để khám phá những đoạn mã nào đang gây ra các vấn đề về hiệu suất, bạn sẽ cần thêm thiết bị đo vào đó. Bằng cách đó, bạn có thể chia nhỏ tất cả các hành động và đo lường tác vụ nào là chậm nhất.

Với thiết bị đo đạc tự động của AppSignal, chúng tôi loại bỏ nhiều công việc thủ công nhất có thể. Chỉ cần chạy một vài lệnh thông qua CLI và bạn sẽ được thiết lập.

Đại lý giám sát của chúng tôi phát hiện các phần khác nhau của cơ sở hạ tầng của bạn và tự động đo lường nó. Điều này cho phép ứng dụng AppSignal thông báo, xử lý, giám sát và hiển thị cho bạn các biểu đồ và trang tổng quan mà bạn cần nhất.

Điều đó có nghĩa là ví dụ đối với đá quý graphql cho Ruby, AppSignal sẽ đo lường mọi yêu cầu GraphQL đến, có nghĩa là nó sẽ cung cấp bảng phân tích tất cả các sự kiện trong yêu cầu.

Thiết bị đo đạc bên ngoài

Chúng tôi đã lập danh sách tất cả các công cụ mà AppSignal hỗ trợ. Nó khá rộng rãi:

Loại Công cụ
Khuôn khổ Đường ray
Các tính năng của Rails Trình gửi thư hành động
Các tính năng của Rails Cáp hành động
Các tính năng của Rails Bản ghi hoạt động
Các tính năng của Rails Công việc đang hoạt động
Các tính năng của Rails Bộ nhớ đệm
Được hỗ trợ thông qua ActiveRecord PostgreSQL, MySQL, SQLite, v.v.
Tích hợp Heroku Heroku PostgreSQL
Khuôn khổ Padrino
Khuôn khổ Sinatra
Đá quý Giá đỡ
Đá quý WebMachine
Máy chủ web Puma
Máy chủ web Kỳ lân
ORM DataMapper
ORM Phần tiếp theo
ORM MongoDB
API Nho
API GraphQL
Thư viện chuẩn Mạng ::HTTP
Cơ sở công việc Que
Thông tin cơ bản Sidekiq
Thông tin cơ bản Công việc bị trì hoãn
Thông tin cơ bản Yêu cầu lại
Thông tin cơ bản Shoryuken
Đá quý Cào

Như tôi đã nói, danh sách khá dài, đó là lý do tại sao chúng tôi sẽ không đi sâu vào từng công cụ trong bài đăng này.

Khung web và API

AppSignal hỗ trợ thiết bị đo các yêu cầu web trong Ruby on Rails, Padrino và Sinatra out-of-the-box. Các API sử dụng Grape hoặc đá quý GraphQL cũng được hỗ trợ.

Ruby on Rails

Tích hợp AppSignal cho Rails hoạt động bằng cách theo dõi các ngoại lệ và hiệu suất trong các yêu cầu. Khi một lỗi xảy ra trong bộ điều khiển trong một yêu cầu, AppSignal sẽ báo cáo lỗi đó. Các vấn đề về hiệu suất sẽ dựa trên thời lượng của một yêu cầu và tạo ra một dòng thời gian của các sự kiện nêu chi tiết phần nào của ứng dụng mất nhiều thời gian nhất.

Thậm chí, có thể theo dõi thời gian để các yêu cầu HTTP đến ứng dụng Rails thông qua bộ cân bằng tải của máy chủ web. Nếu nó không được bật theo mặc định, hãy thiết lập tiêu đề theo dõi thời gian hàng đợi yêu cầu và AppSignal sẽ tự động vẽ biểu đồ thời gian hàng đợi.

GraphQL

AppSignal hỗ trợ đá quý graphql cho Ruby. Nó sẽ đo lường mọi yêu cầu GraphQL đến và cung cấp bảng phân tích tất cả các sự kiện trong yêu cầu. Bạn sẽ có thể xem mất bao lâu để phân tích cú pháp, xác thực và thực thi các trình phân giải của mình. Tất nhiên, các sự kiện từ khuôn khổ web của ứng dụng và lệnh gọi cơ sở dữ liệu được bao gồm trong bảng phân tích này.

Điều này rất tốt cho những ai muốn gỡ lỗi các truy vấn GraphQL có vẻ mất nhiều thời gian và bạn không chắc chắn nơi có thể xảy ra hiện tượng chậm. Đừng quên về các trình kích hoạt bất thường của chúng tôi ở đây - những trình kích hoạt này có thể rất hữu ích để cảnh báo khi thời gian truy vấn đạt đến một ngưỡng nhất định.

Sinatra, Padrino và Grape

Sinatra, Padrino và Grape là các khuôn khổ web và API cho Ruby có thể là một phần của ứng dụng theo những cách khác nhau. Chúng là một ứng dụng độc lập hoặc được gắn trên một ứng dụng Rails lớn hơn. Tùy thuộc vào cách ứng dụng được gắn trên máy chủ web, một số bước cài đặt khác nhau là cần thiết cho Sinatra, Padrino và Grape.

Sau khi cài đặt các yêu cầu Sinatra, Padrino, Grape đều được xử lý:các lỗi và phép đo hiệu suất được báo cáo khi lưu lượng truy cập vào API. Mỗi điểm cuối (API) là hành động của riêng nó trong AppSignal để dễ dàng tìm thấy điểm cuối nào gặp lỗi nào. Giống như với các ứng dụng Rails, bảng phân tích hiệu suất cung cấp thông tin chi tiết về các truy vấn cơ sở dữ liệu hoặc các phần khác hoặc ứng dụng chậm hơn các ứng dụng khác.

Cơ sở dữ liệu

Bản ghi Hoạt động và các ORM khác

Để xem một yêu cầu mất bao lâu để truy vấn cơ sở dữ liệu, hãy mở trang chi tiết sự cố. Trên đầu trang, các loại sự kiện được ghi trong yêu cầu được chia nhỏ theo từng nhóm. Tại đây, bạn có thể xem tổng thời gian đã dành cho loại hoạt động nào.

Nếu chúng tôi phóng to hơn nữa về hiệu suất của mẫu này, bạn sẽ tìm thấy dòng thời gian của tất cả các sự kiện trong yêu cầu theo thứ tự chúng xảy ra. Điều này cung cấp cho bạn cái nhìn tổng quan về từng truy vấn đã được thực thi và truy vấn nào mất nhiều thời gian nhất.

Việc tích hợp hiển thị cho bạn khả năng truy tìm các lệnh gọi cơ sở dữ liệu, vì vậy bạn có thể xem truy vấn nào là gốc rễ của tội ác (hoặc thiên tài) của bạn 😉

N + 1 truy vấn

Bạn lo lắng có thể có N + 1 truy vấn xảy ra trong yêu cầu và đó là điều đang làm chậm nó? Nếu chúng tôi phát hiện N + 1 truy vấn, một cảnh báo sẽ xuất hiện trong dòng thời gian sự kiện cho những sự kiện đã được phát hiện.

Redis

Với tích hợp Redis, bạn sẽ thấy các cuộc gọi của mình tới Redis xuất hiện trong Dòng thời gian sự kiện:

Bạn cũng sẽ có thể thấy tên của lệnh được gửi đến Redis và địa chỉ của phiên bản Redis mà truy vấn được thực hiện tới:

Đây là một tin tuyệt vời cho những ai muốn gỡ lỗi các cuộc gọi chạy dài đến bộ nhớ cache của Redis. Bạn thậm chí có thể đặt một trình kích hoạt bất thường để gửi cảnh báo về các yêu cầu chạy trong thời gian rất dài!

Công việc cơ bản

Bất cứ khi nào một công việc nền được xếp hàng đợi với Sidekiq, Delayed ::Job, Resque, Shoryuken và Que AppSignal sẽ tự động báo cáo lỗi và các phép đo hiệu suất. Tất cả các bộ điều hợp Công việc đang hoạt động cũng được hỗ trợ và một số thư viện công việc nền như Sidekiq và Delayed ::Báo cáo công việc thậm chí còn có nhiều siêu dữ liệu hơn từ chính các thư viện.

Gửi email bằng Action Mailer

Nếu những người gửi thư Rails sử dụng Action Mailer được thiết lập thành deliver_later chúng cũng sẽ được định tuyến thông qua Active Job và có thể dựa trên cùng một cấp độ thiết bị.

Websockets

Sử dụng Action Cable trong ứng dụng Rails của bạn? AppSignal tự động báo cáo lỗi và đo lường hiệu suất cho tin nhắn và đăng ký. Mỗi tin nhắn đều được thiết kế riêng biệt nên ngay cả các kênh đang hoạt động dài cũng sẽ báo cáo tất cả các hoạt động. Chúng được nhóm theo từng hành động để có cái nhìn tổng quan rõ ràng về cách từng hành động riêng lẻ đang hoạt động.

👋 Nếu bạn thích điều này, hãy xem các bài viết khác về hiệu suất của Ruby (trên Rails) trong danh sách kiểm tra giám sát hiệu suất Ruby của chúng tôi.

Dùng thử AppSignal:Giám sát Dễ dàng và Ngọt ngào 🍪

Trong 7 năm qua, chúng tôi đã giúp hàng nghìn nhà phát triển tự động ghi chép mã của họ và chúng tôi cũng rất muốn bạn dùng thử chúng tôi. Khi bạn làm vậy, vui lòng liên hệ với chúng tôi, chúng tôi cũng sẽ gửi cho bạn một hộp bánh xe đẩy miễn phí.

Tái bút. Nếu bạn đang giúp thế giới với một dự án OSS tuyệt vời, chúng tôi sẽ giúp bạn trở lại bằng tài khoản AppSignal miễn phí. Hãy quảng cáo cho những người bảo trì mà bạn đánh giá cao!