2014-11-17 24 views
6

Làm thế nào để bạn nhận được New Relic để ghi lại các lỗi làm hỏng quá trình sử dụng tính năng theo dõi ứng dụng mới của họ? Những điều quan trọng tôi đang cố gắng hoàn thành là có lỗi gặp sự cố khi ghi nhật ký và một số cách để lọc các lỗi này trên trang tổng quan.Phát hiện quy trình gặp sự cố với Relic mới trong NodeJS

Đây là hiểu biết của tôi cho đến nay:

  1. New Relic truyền dữ liệu đám mây của mình mỗi phút. Trong trường hợp xảy ra uncaughtException, điều này sẽ dẫn đến tất cả dữ liệu hiện đang chờ truyền đi bị mất.

  2. Có một số newrelic.noticeError() được cho là tham số thứ hai cho phép bạn chuyển các thông số tùy chỉnh có lỗi. Di tích mới bị lỗi, nhưng không nhận được thông số tùy chỉnh.

Ví dụ đơn giản:

var newrelic = require("newrelic"); 
var express = require("express"); 
var app = express(); 

app.get("/softFail/", function(req, res) { 
    res.send(500, "softFail"); 
}); 

app.get("/hardFail/", function(req, res) { 
    setImmediate(function() { 
     throw new Error("I failed"); 
    }); 
}); 

app.listen(80); 

process.on("uncaughtException", function(err) { 
    console.error("Uncaught Exception"); 
    console.error(err.stack); 
    newrelic.addCustomParameter("crash", "true"); 
    newrelic.noticeError(err); 
    console.log("sending errors to New Relic"); 
    newrelic.agent.harvest(function() { 
     console.log("send complete, crashing process"); 
     process.exit(1); 
    }); 
}); 

Sử dụng rằng khối mã nếu tôi gọi/hardFail/Tôi có thể có được New Relic để ít nhất log lỗi. Nếu không có trình xử lý uncaughtException tôi không nhận được bất kỳ thứ gì để di tích mới. Vấn đề ở đây là tôi không thể phân biệt được giữa các lỗi làm hỏng quy trình và các lỗi HTTP 500 thông thường.

Dưới đây là một cái gì đó điều tôi đã cố gắng:

  1. Nếu tôi cố gắng để thêm { crash : true } đến noticeError gọi nó dường như không có bất kỳ ảnh hưởng.

  2. Tôi đã cố gắng làm domain thay vì process.on, điều đó không thay đổi tình huống.

  3. Nếu tôi cố gắng sửa đổi lỗi name của lỗi, chẳng hạn như err.name = "CrashError" thì lỗi sẽ không được truyền đi chút nào.

  4. Nếu tôi tạo loại lỗi tùy chỉnh, sau đó mới và sao chép dấu vết ngăn xếp vào nó, nó vẫn báo cáo dưới dạng Error thay vì loại prototype.name loại lỗi mới của tôi.

+0

Cảm ơn! Tôi đã bỏ lỡ cuộc gọi để 'thu hoạch', bạn đã giúp tôi rất nhiều! – Pedro

+0

Có giải pháp nào không? Làm thế nào bạn có được nó để làm việc? – kfiroo

+0

Thật không may là chúng tôi không bao giờ có thể tìm ra giải pháp cho nó. Chúng tôi đã thực sự ngừng sử dụng giám sát ứng dụng của Newrelic để ủng hộ Loggly. Nó được thực hiện đăng nhập lỗi và quá trình đăng nhập dễ dàng hơn rất nhiều. – Nucleon

Trả lời

-12

Dường như bạn đã tạo một vé với Hỗ trợ Relic mới, vì vậy chúng tôi sẽ theo đuổi câu hỏi này thông qua vé.

+4

Sẽ là tuyệt vời nếu bạn có thể chia sẻ giải pháp ở đây để những người dùng khác của di tích mới có thể triển khai nó. Tôi đang gặp khó khăn tương tự ... – Eugene

+1

vết sưng, vui lòng chia sẻ giải pháp – talkol

+0

Vui lòng chia sẻ giải pháp ở đây! – Holf

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