2012-03-14 14 views
7

Ứng dụng đường ray cỡ trung bình của chúng tôi chạy (trong sản xuất) trên ba máy chủ. Chúng tôi vừa hoàn thành giai đoạn dùng thử, sử dụng New Relic làm đá quý. Trong thời gian dùng thử, chúng tôi đã theo dõi tất cả ba máy chủ, nhưng để tiếp tục đăng ký, chúng tôi chỉ cần (và chỉ có ngân sách) để theo dõi app1.Nhắm mục tiêu Di tích Mới để chỉ chạy trên 1 (trong số 3) máy chủ ứng dụng

Vì vậy, chúng tôi cần phải vô hiệu hóa di tích mới trên app2 và app3. Trong giao tiếp với dịch vụ khách hàng của tôi, tôi đã nói điều này là có thể và đã được chuyển đến mục nhập cuối cùng trên this page nhưng tôi không thể tìm ra cách điều này giúp tôi vô hiệu hóa theo dõi di tích mới trên hai máy chủ khác, đặc biệt bởi vì không có newrelic_rpm được đề cập trong environment.rb - đó là một gem, sau cùng, và do đó chỉ được đề cập trong Gemfile.

Có tùy chọn boolean agent_enabled trong newrelic.yml mà tôi nghĩ chúng tôi có thể đặt trên cơ sở mỗi máy chủ, nhưng tôi không biết cách thực hiện việc này. Có cách nào để tìm ra máy chủ chúng ta đang ở trong đường ray, tương tự như biến RAILS_ENV?

+0

Bạn đang sử dụng những gì để triển khai? capistrano? – iltempo

+0

Đúng, qua đá quý capper. Chúng tôi có một màn hình trong capfile của chúng tôi để thông báo di tích mới khi chúng tôi triển khai, nếu không mọi thứ được cấu hình thông qua đá quý và newrelic.yml – omnikron

Trả lời

11

Tệp newrelic.yml được hiển thị bằng ERB trước khi tác nhân đọc giá trị cấu hình. Vì vậy, bạn có thể thực hiện việc này:

monitor_mode: <%= 'app1' == Socket.gethostname ? 'true' : 'false' %> 

Điều đó sẽ cho phép tác nhân báo cáo cho Di tích mới chỉ cho một máy chủ đó.

+0

Điều này sẽ tuyệt vời nếu nó hoạt động nhưng nó đã vô hiệu hóa theo dõi trên tất cả các máy chủ, bao gồm cả app1. Làm thế nào/ở đâu chính xác là ERB rendering diễn ra? – omnikron

+0

Có thẻ mở ERB sai. Đã sửa lỗi!/facepalm – rkb

+0

Tôi cũng nên để ý rằng ... HAML ngu ngốc khiến tôi quên đi mọi thứ! – omnikron

1

Tôi khuyên bạn chỉ nên liên kết newrelic.yml trên máy chủ khi cần. Để thực hiện điều này, hãy xóa hoàn toàn config/newrelic.yml khỏi kho lưu trữ của bạn và đặt vào thư mục shared trong máy chủ của bạn.

Sau đó, liên kết tệp này chỉ với một vai trò nhất định trong capistrano một lần nữa vào config/newrelic.yml. Bạn có thể giới thiệu một vai trò mới chỉ chứa máy chủ app1 của bạn.

Đá quý relic mới được xây dựng không an toàn. Vì vậy, nó chỉ bị vô hiệu hóa trong trường hợp đó.

+0

Loại bỏ config/newrelic.yml hoàn toàn làm cho newrelic_rpm ném một lỗi mỗi khi nó được tải, được khá mệt mỏi trong phát triển. Nếu không thì đây sẽ là một giải pháp tuyệt vời. Kế hoạch hiện tại của chúng tôi là có hai tệp bổ sung, newrelic_disabled/_enabled.yml và để ghi đè newrelic.yml bằng các tệp này khi triển khai. – omnikron

+0

Bạn có nghĩa là cảnh báo phải không? Nếu bạn bỏ qua tập tin đó thông qua git một đặt trên đó trong bản sao phát triển của bạn, bạn cũng sẽ nhận được xung quanh cảnh báo. – iltempo

+0

Đúng, cảnh báo, không phải lỗi, xin lỗi. Đó là một thủ thuật tuyệt vời! Tôi chắc chắn sẽ nhớ nó trong tương lai, tôi luôn luôn ngạc nhiên khi nhớ rằng các tập tin có thể tồn tại _outside_ của repo git :) Trong trường hợp này, chúng ta sẽ gắn bó với phương thức triển khai của chúng ta để tránh phải chuyển các tập tin giữa nhóm nghiên cứu theo cách cũ, nó có thể trở thành một nhức đầu sau đó. Cảm ơn rất nhiều về sự giúp đỡ của bạn! – omnikron

Các vấn đề liên quan