2014-10-10 21 views
5

Chúng tôi đang sử dụng Amazon Kinesis (dịch vụ xếp hàng) và có người đọc hàng đợi được viết bằng Java. Về cơ bản, họ đọc từ hàng đợi và chèn dữ liệu vào kho dữ liệu của chúng tôi. Tôi đã tự hỏi liệu có ai đã thành công trong việc sử dụng Relic mới để giám sát công nhân xếp hàng nền không?Di tích mới cho nhân viên Amazon Kinesis theo dõi

Một số phân tích Tôi quan tâm đến:

  1. Có bao nhiêu công nhân xếp hàng đang chạy ngay bây giờ? (quy mô lên xuống dựa trên tải)
  2. Mỗi nhân viên xếp hàng xử lý bao nhiêu thư/giây? Cái này trông như thế nào qua thời gian?
  3. Có bao nhiêu thư/giây là toàn bộ đội ngũ nhân viên xử lý?
  4. Công nhân đưa ra yêu cầu cho cả MySQL và Cassandra. Phần nào của thời gian của họ là chi tiêu làm điều này?
  5. Chúng tôi đang đăng nhập bằng log4j. Nếu công nhân đã tạo ra lỗi/dấu vết, chúng là gì? Tỷ lệ lỗi theo thời gian là bao nhiêu?

Cảm ơn,

Advait

Trả lời

2

New Relic không có bất kỳ rắc rối theo dõi công việc hàng loạt như trái ngược với các giao dịch web, do đó sẽ không là một vấn đề.

Giả sử bạn đang bắt đầu với một ứng dụng Java mà bạn có sẵn mã nguồn, đường dẫn tốt nhất là sử dụng API đại lý: https://docs.newrelic.com/docs/agents/java-agent/custom-instrumentation/java-agent-api. Điều này khiến bạn ở một nơi tốt để báo cáo bất kỳ số liệu nào bạn thích ngay cả khi chúng tôi không ghi lại chúng tự động. Tôi sẽ trả lời các câu hỏi của bạn 1 theo 1:

1) Chúng tôi có một vài cách để cắt chiếc bánh này, nhưng cách dễ nhất tôi có thể nghĩ là tạo một NewRelic.recordMetric ("Custom/Queue_worker/alive", 1) gọi. Tôi chỉ có một bộ đếm thời gian chạy để thực hiện cuộc gọi đó một lần một phút (vì đó là chu trình thu thập số liệu của chúng tôi) trên mỗi công nhân. Sau đó, trong bảng điều khiển tùy chỉnh (https://docs.newrelic.com/docs/apm/dashboards-menu/custom-dashboards), bạn có thể bỏ qua các giá trị chỉ số (sẽ được tính trung bình - vì vậy trừ khi bạn có tổng thể "biết" giá trị và chỉ có thể báo cáo thường xuyên như bạn muốn, bạn sẽ không nhận được giá trị mong muốn có hiệu lực bằng cách báo cáo 1 + 1 + 1 ... = 1). Bạn sẽ vẽ đồ thị trường call_count để xem có bao nhiêu công nhân đã chạy phút đó.

2) Trong trường hợp này, bạn sẽ muốn sử dụng nhiều mẫu giống như trên, ngoại trừ việc tạo chỉ số tùy chỉnh khác nhau cho mỗi công nhân. May mắn là các bảng điều khiển tùy chỉnh giúp nâng cấp ở đây - làm một cái gì đó như NewRelic.recordMetric ("Custom/Queue_worker/y/number_of_messages", x) cho x = số lượng tin nhắn được xử lý, y = một số định danh duy nhất (GUID? Giá trị ngẫu nhiên?) cho mỗi công nhân ... trong một phút - và sau đó bạn chỉ có thể vẽ biểu đồ Custom/Queue_worker/*/number_of_messages để đưa tất cả chúng vào cùng một biểu đồ.

3) yêu cầu mỗi công nhân gửi cùng một chỉ số tùy chỉnh, Custom/queue_worker/message_sent và số lượng cuộc gọi biểu đồ trên chỉ số đó. Một lần nữa, bạn không thể chỉ báo giá trị cho mỗi nhân viên vì dữ liệu số liệu tiếp theo sẽ được tính trung bình cùng nhau, nhưng chúng tôi sẽ giữ số cuộc gọi tốt cho bạn.

4) bạn sẽ nhận được thời gian MySQL miễn phí (miễn là bạn đang sử dụng kết nối mysql hoặc JDBC được liệt kê ở đây: https://docs.newrelic.com/docs/agents/java-agent/getting-started/new-relic-java#h2-compatibility) - nó sẽ hiển thị dưới dạng 'cơ sở dữ liệu' trong biểu đồ và dấu vết giao dịch của bạn. Đối với Cassandra, chúng tôi không có công cụ cụ thể nhưng bạn có thể sử dụng API đại lý một lần nữa (NewRelic.recordResponseTimeMetric() được khuyến nghị) để ít nhất ghi lại điều này và vẽ biểu đồ riêng biệt.

5) Bạn nhận được tỷ lệ lỗi miễn phí, miễn là lỗi của bạn bao gồm ngoại lệ chưa được xử lý - hoặc bạn có thể thực hiện cuộc gọi API bất cứ khi nào bạn xử lý ngoại lệ (hoặc bất kỳ điều kiện lỗi nào bạn muốn gắn thẻ) với NewRelic. noticeError(). Hơn nữa, nếu các lỗi xuất hiện dưới dạng các ngoại lệ chưa được xử lý (lừa gọn gàng: xử lý ngoại lệ của bạn trong mã của bạn, sau đó làm lại nó để đại lý của chúng tôi nhìn thấy nó theo ngữ cảnh), bạn sẽ nhận được một dấu vết ngăn xếp và bất kỳ siêu dữ liệu nào về giao dịch mà bạn đã được ghi lại với NewRelic.addCustomParameter(). Chúng tôi không thực hiện xử lý tệp nhật ký, mặc dù bạn có thể viết một chương trình rất nhỏ để xử lý và nhập các chỉ số bằng các phương pháp trên và vì chúng tôi cấp phép cho mỗi máy chủ lưu trữ, không phải trên mỗi tác nhân, bạn có thể chạy trên một giấy phép đã được cấp phép công nhân không phải trả thêm chi phí. Có nhiều cách dễ dàng hơn để thực hiện việc này bằng Insights (https://docs.newrelic.com/docs/insights/new-relic-insights) - ví dụ: bạn có thể truy cập danh sách các tác nhân đang chạy mà không cần thêm bất kỳ công việc nào và bạn có thể báo cáo số sẽ không được tính trung bình. làm toán và vẽ đồ thị chúng. Nhưng đó là một sản phẩm riêng biệt và tôi không cố gắng làm nổi bật bạn :)

lưu ý: Tôi làm việc cho Di tích Mới.

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