Khi chạy và bảo trì một ứng dụng trong môi trường sản xuất, chúng tôi muốn cảm thấy tự tin về hoạt động của ứng dụng và biết khi nào nó không hoạt động như mong đợi. Ít nhất, chúng tôi muốn theo dõi lỗi, giám sát hiệu suất và thu thập các số liệu cụ thể trong suốt ứng dụng.
Bởi vì chúng tôi là nhà phát triển và yêu thích các giải pháp có thể bảo trì (phải không?), Chúng tôi sẽ không muốn kết thúc trong một mớ hỗn độn của các công cụ, tích hợp và phụ thuộc khiến chúng tôi khó theo dõi mọi thứ hơn.
Trong bài đăng này, chúng tôi sẽ thêm AppSignal vào ứng dụng Ruby on Rails để giúp cung cấp thông tin chi tiết rõ ràng về hành vi ứng dụng.
Điều kiện tiên quyết nếu bạn muốn tuân theo mã:
- Một tài khoản trên www.appsignal.com
- Docker đã được cài đặt và đang chạy (để sử dụng
docker-compose
). * chỉ bắt buộc nếu sử dụng ứng dụng mẫu trong bài đăng này
Thiết lập AppSignal
Lưu ý : Bạn có thể bỏ qua phần này nếu bạn đang thêm AppSignal vào ứng dụng Rails của riêng mình. Trong trường hợp đó, bạn cũng có thể bỏ qua các hướng dẫn liên quan đến Docker hoặc cách khởi động lại máy chủ Rails của bạn trong suốt bài đăng - thay vào đó bạn khởi động lại / triển khai lại ứng dụng của mình như thường lệ.
Chúng tôi sẽ sử dụng một ứng dụng mẫu để bắt đầu và chạy nó trên máy của chúng tôi bằng Docker.
Chạy các lệnh sau để sao chép kho lưu trữ, cài đặt các phần phụ thuộc và chạy ứng dụng:
$ git clone --branch appsignal-setup/start-docker --single-branch https://github.com/choncou/sample_rails_app appsignal-setup
$ cd appsignal-setup
$ yarn start:compose
Khi bạn chạy điều này lần đầu tiên, có thể mất một lúc để tạo hình ảnh docker và tải xuống tất cả các phần phụ thuộc. Sau khi hoàn tất, nó sẽ khởi động cơ sở dữ liệu Railsserver, PostgreSQL và Redis. Bạn sẽ thấy các yêu cầu trong nhật ký và xem ứng dụng đang chạy onhttps:// localhost:3000 /.
Giới thiệu về Đơn đăng ký Mẫu của Chúng tôi
Ứng dụng chúng tôi đang làm việc rất tối thiểu, vì vậy chỉ có một số điều cần lưu ý.
Chúng tôi có một Post
mô hình, PostsController
và tất cả các hành động CRUD được hiển thị qua /posts
tuyến đường.
Chúng tôi cũng có một trang chủ được hiển thị bởi PagesController
, xếp hàng đợi công việc nền tảng CreateRandomPostsJob
để tạo các bài đăng ngẫu nhiên không đồng bộ.
Cuối cùng, chúng tôi đang sử dụng Sidekiq để xử lý công việc nền.
Nền tảng blog nhỏ của chúng tôi cũng đã có một số người dùng tích cực. Có ascript (./bin/traffic
) chạy ở chế độ nền cùng với máy chủ, thường xuyên đưa ra một số yêu cầu bắt chước lưu lượng truy cập trên các ứng dụng.
Đó là nó. Chúng tôi vừa phát hành một sản phẩm và mọi thứ hoạt động hoàn hảo ...
Hoặc, ít nhất đó là những gì chúng tôi nghĩ cho đến khi chúng tôi bắt đầu thấy báo cáo của người dùng về hiệu suất của ứng dụng và người dùng gặp lỗi.
Vì vậy, làm thế nào để chúng ta tìm ra những gì đang xảy ra? Khi chúng ta làm việc trong một môi trường phát triển, việc phát hiện ra các lỗi sẽ dễ dàng hơn. Nhưng khi ứng dụng của chúng tôi đang chạy trong quá trình sản xuất, điều này trở nên khó khăn hơn. Phải có một cách tốt hơn để tìm errorsthan để tìm kiếm trong các nhật ký máy chủ đó.
AppSignal để giải cứu!
Bắt đầu với AppSignal
Hãy bắt đầu hành trình giám sát của chúng tôi bằng cách thêm AppSignal vào ứng dụng của chúng tôi. Bạn sẽ cần đăng nhập vào tài khoản của mình tạiwww.appsignal.com.
Nếu bạn là người dùng AppSignal mới, bạn sẽ thấy trang bên dưới để thêm tương tự (trong khi người dùng hiện tại cần nhấp vào 'Thêm ứng dụng').
Chọn "Cài đặt cho Ruby", sau đó sẽ cung cấp cho chúng tôi một vài bước đơn giản để làm theo:
-
Thêm đá quý vào
Gemfile
của bạn# Gemfile gem 'appsignal'
-
Cài đặt đá quý bằng cách chạy
bundle install
bên trong hộp chứa docker, mà bạn có thể truy cập bằngyarn compose:sh
$ yarn compose:sh # We are now in a bash console within a docker container $ bundle install # Stay in this console for the next command
-
Cài đặt AppSignal
Trong khi cài đặt, bạn cần phải trả lời hai lời nhắc:
-
Do you want to change how this is displayed in AppSignal? (y/n): n
-
How do you want to configure AppSignal?
:Nhập1
bởi vì chúng tôi sẽ sử dụng tệp cấu hình thay vì chỉ các biến môi trường
Sử dụng khóa API hiển thị trên trang thiết lập AppSignal:
$ bundle exec appsignal install <your-api-key> ... ... ##################################### ## AppSignal installation complete ## ##################################### Sending example data to AppSignal... Example data sent! It may take about a minute for the data to appear on https://appsignal.com/accounts Please return to your browser and follow the instructions.
-
Sau khi chạy tập lệnh cài đặt, bạn sẽ thấy khi quá trình thiết lậpAppSignal hoàn tất trong trình duyệt của mình. Sau đó, bạn có thể 'Đi tới ứng dụng' để xem AppSignaldashboard của bạn cho môi trường phát triển của bạn:
Lệnh cài đặt tạo một config/appsignal.yml
cho phép bạn định cấu hình cài đặt AppSignal cho các môi trường khác nhau. Bạn có thể tìm hiểu thêm trong tài liệu cấu hìnhAppSignal Ruby.
Trong config/appsignal.yml
là khóa API đẩy của bạn. Bạn thường xóa nó khỏi tệp này và thay vào đó sử dụng một biến môi trường. Bài đăng này, điều đó không cần thiết.
Chúng tôi cần khởi động lại ứng dụng để đảm bảo rằng các thay đổi của chúng tôi có hiệu lực vì chúng tôi đã cài đặt một viên ngọc mới. Cách đơn giản nhất là dừng các bộ chứa trình khóa bằng ctrl-c
bên trong cửa sổ đầu cuối đang chạy máy chủ và bắt đầu lại docker-soạn với:
$ yarn start:compose
Quá trình này có thể mất một lúc vì nó xây dựng lại hình ảnh docker khi các phần phụ thuộc thay đổi.
Trang tổng quan chính của AppSignal
Bây giờ chúng ta đã cài đặt ứng dụng đang chạy với AppSignal, chúng ta có thể xem bảng điều khiển. Để xem tất cả các ứng dụng và môi trường bạn đang chạy trênAppSignal, bạn có thể truy cập vàoappsignal.com/accounts:
Nhấp vào tên ứng dụng và bạn có thể khám phá AppSignal giám sát cái gì.
Trong vòng vài phút, một số dữ liệu sẽ được thu thập nhờ tập lệnh tạo lưu lượng truy cập của bạn.
Từ trang tổng quan chính, bạn có thể có được cái nhìn tổng quan tốt ở cấp độ cao về một số chỉ số ứng dụng cần thiết. Bây giờ chúng ta sẽ đi sâu vào một số khu vực cụ thể hơn trong AppSignal.
Bảng điều khiển lỗi trong AppSignal
Trên trang lỗi, bạn tìm thấy danh sách tất cả các lỗi được ứng dụng của bạn báo cáo. Khi chúng tôi chạy tập lệnh cài đặt, một lỗi kiểm tra đã được gửi đếnAppSignal. Bạn có thể thấy rằng chúng tôi cũng có một lỗi dường như xảy ra thường xuyên. Nhấp vào lỗi sẽ mở ra một trang với nhiều chi tiết hơn, có thể hữu ích để gỡ lỗi vấn đề.
Trong trường hợp này, chúng ta có thể thấy từ phần backtrace trên trang chủ của ứng dụng (/
) có lỗi xác thực xảy ra trên app/controllers/pages_controller.rb:7 home
.
Trang tổng quan AppSignal khác
Trong 'Trang tổng quan' trong thanh bên, bạn có thể thấy rằng AppSignal đã cung cấp cho chúng ta một vài trang tổng quan khác nhau.
Trang tổng quan 'Tổng quan' có sẵn cho mọi ứng dụng và cung cấp:
- Tỷ lệ lỗi ứng dụng của bạn
- Thông lượng
- Thời gian phản hồi
- Hoạt động gần đây khác mà bạn có thể tìm hiểu để biết thêm chi tiết
Bạn cũng có hai bảng điều khiển ma thuật - một cho Active Job và một cho Sidekiq. AppSignal có tích hợp sẵn cho nhiều máy tính và đá quý phổ biến hoạt động tự động với ứng dụng Rails của bạn.
Khi xem các trang tổng quan này, bạn nhận thấy thông tin liên quan đến hoạt động của tích hợp đó. Trong Active Jobdashboard, bạn sẽ thấy các biểu đồ cho số lượng công việc trong mỗi hàng đợi, độ bão hòa được ghi lại của từng công việc và hơn thế nữa. Hãy cho nó một cái nhìn!
Hiệu suất ứng dụng của bạn
Bên trong Hiệu suất → Danh sách vấn đề , bạn có thể xem danh sách các hành động màAppSignal đo lường. Những phép đo này có thể cung cấp một số thông tin chi tiết có giá trị về những phần nào trong ứng dụng của bạn tiêu tốn nhiều hiệu suất.
Ví dụ:bằng cách nhấp vào vấn đề cho hành động PostsController#index
, chúng tôi có thể tìm hiểu sâu hơn về hiệu suất của bộ điều khiển. Bạn có thể nhanh chóng thấy bảng phân tích về nơi dành nhiều thời gian nhất hoặc phân bổ đối tượng nhiều nhất xảy ra.
Thắng nhanh và Đá quý ẩn từ AppSignal:Sử dụng Puma
Có một vài viên ngọc ẩn (không phải loại Ruby) mà bạn có thể nhận được từ AppSignal mà không cần nỗ lực nhiều. Hãy xem chúng ta có thể thiết lập và chạy chúng dễ dàng như thế nào với một ví dụ.
Bên trong của config/puma.rb
, thêm dòng sau:
# config/puma.rb
plugin :appsignal
Trước khi chúng tôi khởi động lại ứng dụng, hãy thêm biến môi trường sau vào dòng sau 12 trong docker-compose.yml
:
# docker-compose.yml
APP_REVISION: "latest_version_tag"
Bởi vì chúng tôi đã cập nhật cấu hình máy chủ Puma và cấu hình docker-soạn của chúng tôi, chúng tôi sẽ cần khởi động lại các vùng chứa docker bằng ctrl-c
và bắt đầu-cập nhật-soạn lại với yarn start:compose
.
Theo dõi thông tin chi tiết mới của bạn
Sau khi máy chủ khởi động lại, hãy cho phép nó chạy trong khoảng một phút, sau đó quay lại bảng điều khiển AppSignal và làm mới trang. Hiện có hai lĩnh vực chính với thông tin mới:
Đầu tiên là bảng điều khiển ma thuật số liệu Puma được tạo tự động mới. Do tích hợp sẵn của AppSignal với Puma, chúng tôi hiện có thông tin về hoạt động của máy chủ ứng dụng. Chỉ định plugin
trong tệp cấu hình đã kích hoạt một báo cáo minutesprobethat các chỉ số về máy chủ Puma.
Cuối cùng, trên toàn bộ bảng điều khiển AppSignal, hiện đã có các dấu triển khai. Bạn có thể đặt APP_REVISION
biến môi trường thành bất kỳ giá trị nào giúp bạn xác định phiên bản hiện tại của ứng dụng của mình, chẳng hạn như SHA cam kết git.
Bạn cũng có thể xem lịch sử triển khai của mình bằng cách xem phần 'Triển khai' trong trang tổng quan AppSignal và lọc thông tin chi tiết (chẳng hạn như danh sách vấn đề Lỗi / Hiệu suất) bằng cách triển khai. Hiệu suất hoặc độ tin cậy của chế độ xem đã thay đổi giữa các lần triển khai, khiến việc tìm hiểu những thay đổi nào có thể tạo ra một lỗi mới trở nên dễ dàng hơn.
Tiếp theo:Công cụ tùy chỉnh và giám sát cho ứng dụng Ruby
Bài đăng này đã chỉ ra cách bạn có thể thiết lập và sử dụng AppSignal trong các ứng dụng của mình để giúp tăng khả năng hiển thị mã của bạn trong môi trường hoang dã.
Chúng tôi đã chứng minh cách AppSignal tự động tích hợp vào Rails và một số phụ thuộc của ứng dụng, chẳng hạn như Sidekiq và Puma. AppSignal hoạt động với nhiều khuôn khổ Ruby và đá quý khác. Bạn có thể tìm thấy danh sách đầy đủ các tích hợp Ruby của AppSignal tại đây.
Phần 2 của loạt bài này sẽ trình bày cách thêm thiết bị đo đạc và giám sát tùy chỉnh vào ứng dụng Ruby on Rails của bạn để có những hiểu biết sâu sắc hơn.
Cho đến lần sau!
Tái bút. Nếu bạn muốn đọc các bài đăng của Ruby Magic ngay khi chúng xuất hiện trên báo chí, hãy đăng ký bản tin Ruby Magic của chúng tôi và không bao giờ bỏ lỡ một bài đăng nào!