Наш ассоциированный член www.Bikinika.com.ua

@ newrelic / бета-агент

  1. Зміст
  2. Оновлення npm
  3. Безпека
  4. Налаштування модуля
  5. Час роботи браузера (RUM / Real User Monitoring)
  6. Основи
  7. Імена транзакцій і запитів
  8. Фон
  9. Самоаналіз маршрутизатора
  10. Запитувати іменування за допомогою модуля API
  11. newrelic.setTransactionName (назва)
  12. newrelic.setControllerName (назва, [дія])
  13. Правила іменування та ігнорування запитів
  14. rules.name
  15. шаблон (обов'язково)
  16. ім'я (обов'язково)
  17. rules.precedence (необов'язково)
  18. rules.terminate_chain (необов'язково)
  19. rules.replace_all (необов'язково)
  20. Тестування
  21. Приклади
  22. rules.ignore
  23. API для додавання імен і ігнорування правил
  24. newrelic.addIgnoringRule (шаблон)
  25. Інші виклики API
  26. newrelic.addCustomParameters (params)
  27. newrelic.setIgnoreTransaction (ігнорується)
  28. newrelic.noticeError (помилка, параметри користувача)
  29. newrelic.shutdown ([варіанти], зворотний виклик)
  30. Користувальницькі інструменти
  31. newrelic.createWebTransaction (url, ручка)
  32. newrelic.createBackgroundTransaction (назва, [група], ручка)
  33. newrelic.endTransaction ()
  34. newrelic.createTracer (назва, ручка)
  35. newrelic.recordMetric (назва, значення)
  36. newrelic.incrementMetric (назва [, сума])
  37. Дрібний шрифт
  38. Внески
  39. Останні зміни
  40. Відомі проблеми:

Це бета-програмне забезпечення

Це бета-програмне забезпечення. Для критичних систем слід використовувати стабільний новий пакет Relic . Агент бета-версії бета-версії потребує бета-токен. Отримання символу легко!

  1. Погодьтеся з кліком Бета-угода .
  2. Як тільки ваш обліковий запис буде схвалено, ми надішлемо вам електронний маркер бета-версії, як правило, протягом одного робочого дня.
  3. Додайте маркер бета до вашого налаштування (докладніше див. нижче) .

Будь ласка, приєднуйтесь до нас Форум агентів вузлів розповісти нам про те, як бета-функції в Node Agent працюють для вас, що ви хотіли б бачити і як ми можемо покращити його. Ми готові почути ваш відгук!

Порушення змін може бути зроблене до того, як це буде випущено. Дивіться наш новий Документація API Докладніше про використання нових функцій у цій бета-версії.

Цей пакет інструментів вашого застосування для моніторингу продуктивності з Нова реліквія .

Переконайтеся, що у вас є Новий обліковий запис Relic перед запуском. Щоб побачити всі функції, такі як повільні сліди транзакцій, вам знадобиться a Новий Relic Pro передплати (або еквівалент).

Як і у випадку з будь-яким інструментом, будь ласка, перевірте перед використанням у виробництві.

Зміст

Починаємо

  1. Встановіть вузол . Агент працює на v0.10 і вище. Робота над розробкою цього модуля виконується за допомогою останнього нерозвиваючого виходу Node.
  2. Переконайтеся, що ваша версія вузла надійшла з новою достатньою версією npm, використовуючи npm -v. Ми вимагаємо версії 1.4.28 або новішої версії та рекомендуємо використовувати останню версію. Детальніше про це оновлення npm тут .
  3. Встановіть цей модуль через npm install @ newrelic / beta-agent для програми, яку ви хочете контролювати.
  4. Скопіюйте newrelic.js з node_modules / @ newrelic / beta-agent у кореневий каталог програми.
  5. Відредагуйте newrelic.js і змініть значення license_key ліцензійним ключем для вашого облікового запису. Також замінити значення beta_token на бета-маркер, який ви надіслали вам.
  6. Add require ('@ newrelic / beta-agent'); як перший рядок основного модуля програми.

Якщо ви хочете зберегти конфігурацію модуля окремо від вашої програми, модуль шукатиме newrelic.js у каталозі, на який посилається змінна середовища NEW_RELIC_HOME, якщо вона встановлена.

Коли ви запускаєте програму, New Relic повинна запускатися з нею і починати подання даних, які відображатимуться в межах Новий інтерфейс Relic через кілька хвилин. Оскільки агент мінімізує кількість споживаної пропускної спроможності, він повідомляє дані лише раз на хвилину, тому, якщо вам потрібен модуль у тестах, які займуть менше хвилини, не вдасться повідомити дані в New Relic. Модуль запише свій журнал у файл newrelic_agent.log у каталозі програми. Якщо New Relic не надсилає дані або не припиняє роботу вашої програми, журнал допоможе New Relic визначити, що сталося не так, тому не забудьте надіслати його разом з будь-якими повідомленнями про помилки або запитами на підтримку.

Оновлення npm

Якщо ви використовуєте версію npm до 1.4.28 або бажаєте перейти до останньої версії, виконайте наведені нижче дії.

  1. Запустіть npm -v, щоб переконатися, що встановлено та працює npm.
  2. Якщо ви знаходитесь на linux / smartos / osx / * nix run ls -l $ (який npm) і перевірте, чи є файл належить "root" або "admin". Якщо так, префікс наступної команди з sudo.
  3. Запустіть npm install -g npm @ latest для оновлення самого npm.

Попередження : існуюча установка npm може зламатися, якщо вона використовується для оновлення без привілеїв root, тоді як виконуваний файл npm належить root.

Безпека

Ми вважаємо, що безпека (і захист конфіденційності ваших та ваших користувачів) дуже серйозна. Подивитися SECURITY.md детальніше, але коротка версія полягає в тому, що якщо ви вважаєте, що знайшли проблему безпеки, зв’яжіться з нами за адресою [email protected] .

Налаштування модуля

Модуль може бути пристосований до вимог вашої програми, як з сервера, так і через файл конфігурації newrelic.js, який ви створили. Докладні відомості про те, що можна налаштувати, див lib / config.default.js , яка документує наявні змінні та їх значення за замовчуванням.

Крім того, для тих, хто працює в середовищі PaaS, наприклад Heroku або Microsoft Azure, всі змінні конфігурації в newrelic.js мають аналогів, які можна встановити через змінні оточення. Ви можете вільно змішувати та змінювати змінні у файлі конфігурації та змінних середовища; змінні середовища мають перевагу.

Ось список найбільш важливих змінних та їх значень:

  • NEW_RELIC_BETA_TOKEN: Ваш новий реліковий агент Beta token. Це необхідна установка для бета-агента без значення за замовчуванням.
  • NEW_RELIC_LICENSE_KEY: Ваш новий ліцензійний ключ Relic. Це необхідне налаштування без значення за замовчуванням.
  • NEW_RELIC_APP_NAME: назва цієї програми для звітів на сервери New Relic. Це значення може бути також списком імен, розділених комами. Це необхідне налаштування без значення за замовчуванням. (ПРИМІТКА: для зручності для користувачів Azure модуль використовуватиме APP_POOL_ID як ім'я програми, якщо він встановлений, тому ви можете використовувати ім'я, вибране для веб-сервера Azure, не встановлюючи його двічі.)
  • NEW_RELIC_NO_CONFIG_FILE: Припиняє завантаження файлу конфігурації. Використовуйте обережно. Це припускає, що всі важливі конфігурації будуть доступні через змінні середовища, а деякі повідомлення журналу припускають, що існує конфігураційний файл.
  • NEW_RELIC_HOME: шлях до каталогу, в якому ви розмістили newrelic.js.
  • NEW_RELIC_USE_SSL: Використовуйте SSL для зв'язку з серверами New Relic. За умовчанням увімкнено.
  • NEW_RELIC_LOG: повний шлях до журналу агента New Relic, включаючи ім'я файлу. Агент закриє процес, якщо він не може створити цей файл, і створює файл журналу з тією ж самою задачею процесу. Встановлення цього параметра на stdout запише весь журнал до stdout, і stderr запише весь журнал до stderr.
  • NEW_RELIC_LOG_LEVEL: пріоритет журналювання для нового агента Relic. Може бути помилкою, попередженням, інформацією, налагодженням або трасуванням. налагодження і трасування досить балакучі; якщо ви не допомагаєте New Relic з'ясувати невідповідності з модулем, ви, ймовірно, краще використовувати інформацію або вище.

Для повноти можна ознайомитися з рештою списку:

  • NEW_RELIC_ENABLED: Чи повинен запускатися агент. Добре для тимчасового вимкнення агента під час налагодження інших проблем з кодом. Це не заважає модулю завантажувати свою апаратуру або налаштовувати всі її частини, це лише запобігає запуску або підключенню до серверів New Relic. За промовчанням значення true.
  • NEW_RELIC_ERROR_COLLECTOR_ENABLED: чи слід відслідковувати помилки у вашій програмі. Значення є істинними або помилковими. За промовчанням значення true.
  • NEW_RELIC_ERROR_COLLECTOR_IGNORE_ERROR_CODES: Список коду статусу HTTP, відокремлений комами, для ігнорування. Можливо, вам все одно, якщо плата потрібна? Ігнорування коду статусу означає, що транзакція не перейменована, щоб відповідати коду, і запит не розглядається як помилка збирачем помилок. За замовчуванням ігнорується 404.
  • NEW_RELIC_IGNORE_SERVER_CONFIGURATION: Чи слід ігнорувати конфігурацію на сервері для цієї програми. За замовчуванням - false.
  • NEW_RELIC_TRACER_ENABLED: чи збирати і передавати повільні транзакційні сліди до New Relic. Значення є істинними або помилковими. За промовчанням значення true.
  • NEW_RELIC_TRACER_THRESHOLD: Поріг часу відповіді веб-транзакцій (у секундах), на якому слід провести транзакцію як повільний та надісланий до New Relic. Також може бути встановлено apdex_f, після чого вона встановить поріг трасування до 4-кратного поточного ApdexT. За замовчуванням - apdex_f.
  • NEW_RELIC_APDEX: Встановіть початкове допустиме / граничне значення Apdex в секундах. Це найчастіше не встановлюється з сервера. За замовчуванням 0.100.
  • NEW_RELIC_CAPTURE_PARAMS: чи слід захоплювати параметри запиту на повільній транзакції або слідах помилок. За замовчуванням - false.
  • NEW_RELIC_IGNORED_PARAMS: Деякі параметри можуть містити чутливі значення, які ви не хочете надсилати з вашої програми. Цей параметр є списком імен параметрів, розділених комами, для ігнорування. За замовчуванням порожні.
  • NEW_RELIC_NAMING_RULES: список об'єктних літералів JSON, розділених комами: NEW_RELIC_NAMING_RULES = '{"pattern": "^ t", "name": "u"}, {"pattern": "^ u", "name": "t "}" Див. Розділ про запит і іменування транзакцій для деталей. За замовчуванням порожні.
  • NEW_RELIC_IGNORING_RULES: список шаблонів, розділених комами: NEW_RELIC_IGNORING_RULES = '^ / socket In /.*/ xhr-polling, ignore_me' Зверніть увагу, що в даний час не існує способу уникнути комів у шаблонах. За замовчуванням порожні.
  • NEW_RELIC_TRACER_TOP_N: Збільште це число, щоб збільшити різноманітність повільних транзакційних слідів, надісланих до New Relic. За замовчуванням - 1. Див. Опис у lib / config.default.js, оскільки цю функцію дуже складно підсумувати.
  • NEW_RELIC_HOST: ім'я хоста для нового колектора Relic. Не потрібно змінювати це.
  • NEW_RELIC_PORT: Номер порту, на який збирається колектор New Relic. Вам також не потрібно змінювати це.
  • NEW_RELIC_PROXY_URL: Повна URL-адреса до проксі-сервера http / https. URL-адреса проксі-сервера може містити базову автентифікацію. Використання NEW_RELIC_PROXY_URL замінює інші налаштування проксі-сервера.
  • NEW_RELIC_PROXY_HOST: ім'я хоста проксі
  • NEW_RELIC_PROXY_PORT: Порт проксі.
  • NEW_RELIC_PROXY_USER: ім'я користувача проксі-сервера (лише для основного авторизації).
  • NEW_RELIC_PROXY_PASS: Пароль проксі-сервера.
  • NEW_RELIC_DEBUG_METRICS: збирати внутрішні метрики підтримки для агента. Не зв'язуйтеся з цим, якщо New Relic не попросить вас.
  • NEW_RELIC_DEBUG_TRACER: Чи слід скидати сліди внутрішньої операції транзакції транзакції. Навряд чи він є інформативним, якщо ви не є інженером New Relic Node.js і він має значну вартість продуктивності, тому використовуйте його з обережністю.
  • NEW_RELIC_BROWSER_MONITOR_ENABLE: генерувати заголовки синхронізації веб-переглядача (RUM) чи ні.
  • NEW_RELIC_LABELS: Встановлює назви міток та значення, які можна асоціювати з програмою. Список являє собою список з роздільниками, розділеними двокрапкою імен і пар значень

Час роботи браузера (RUM / Real User Monitoring)

Інструментальне обладнання нового Relic може виходити за межі вашого застосування в браузер клієнта. Модуль newrelic може генерувати <script> заголовки, які, коли вставляються у ваші шаблони HTML, захоплюють час завантаження сторінок на стороні клієнта.

Заголовки потрібно вводити вручну, але для увімкнення синхронізації браузера не потрібно додаткової конфігурації.

Основи

  • Вставте результат newrelic.getBrowserTimingHeader () у вашу html-сторінку.
  • Заголовки синхронізації браузера повинні бути розміщені на початку тега <head>.
    • Як виняток із вищесказаного, для максимальної сумісності з IE, результати getBrowserTimingHeader () повинні бути розміщені після будь-яких мета-тегів X-UA-COMPATIBLE HTTP-EQUIV.
  • Не кешувати заголовок, викликати його один раз для кожного запиту.

Приклад

Нижче наведено приклад використання експресу та нефриту; Express - популярний фреймворк веб-додатків, а jade - популярний модуль шаблонів. Незважаючи на те, що конкретні особливості для інших рамок, загальний підхід, описаний нижче, повинен працювати в більшості випадків.

Найпростіший спосіб вставити заголовки синхронізації браузера - передати модуль newrelic у ваш шаблон і викликати newrelic.getBrowserTimingHeader () з шаблону.

app.js:


var newrelic =;
var app =;

місцеві користувачі app newrelic = newrelic;

app

;
app;

layout.jade:


doctype html
html
керівник
! = newrelic.getBrowserTimingHeader ()
title = title
посилання (rel = 'stylesheet', href = '/ stylesheets / style.css')
тіла
блокувати вміст

За замовчуванням виклики newrelic.getBrowserTimingHeader () повинні повертати дійсні заголовки. Ви можете вимкнути генерацію заголовка, не видаляючи код шаблону. У файлі newrelic.js додайте наступне, щоб вимкнути генерацію заголовка.


export config =

browser_monitoring:
enable: false

;

Також можна встановити змінну середовища NEW_RELIC_BROWSER_MONITOR_ENABLE = false.

Це безпечно залишати код генератора заголовка, навіть якщо ви його не використовуєте. Якщо синхронізацію браузера вимкнено, або виникла помилка, що робочі заголовки не можуть бути згенеровані, модуль newrelic генерує нешкідливий коментар HTML. Якщо модуль newrelic вимкнено повністю, не буде створено вміст.

Імена транзакцій і запитів

Для того, щоб отримати найбільшу цінність від New Relic для Node.js, можливо, вам доведеться трохи попрацювати, щоб допомогти нам з'ясувати, як структурована ваша програма. Новий Relic працює на припущенні, що він може групувати запити до вашої програми в транзакції, які визначаються шляхом надання одного або більше шляхів запиту до імені. Ці імена використовуються для візуалізації місця, в якому ваша програма витрачає час (у зривах транзакцій), для виявлення повільних запитів і для групування показників охоплення. Наприклад, це може ідентифікувати повільні запити до баз даних, показуючи, які запити витрачають довгий час на очікування в базі даних.

Якщо ви використовуєте Express, Restify або Hapi зі своїми маршрутизаторами за замовчуванням і задоволені тим, що ваша програма представлена ​​цими маршрутними комбінаціями, можливо, вам не потрібно нічого робити. Однак, якщо ви хочете отримати більш конкретні назви, ніж надані вашим фреймворком, ви можете використовувати один або більше інструментів, описаних далі.

Найпростіший спосіб визначити, що вам потрібно прочитати далі в цьому документі, - це якщо ви вважаєте, що надто багато ваших запитів об'єднуються разом під ім'ям catch-all / *. Всі запити, які не інакше названі модулем, будуть згруповані в / /.

Фон

Якщо ви працювали з Node деякий час, ви, мабуть, звикли думати про запити вашої програми в термінах необроблених URL-адрес. Одна з великих речей у Node полягає в тому, що він робить його таким легким і простим у роботі з HTTP, і це поширюється на такі речі, як розбір URL-адрес і створення власних стратегій для іменування та маршрутизації запитів на служби, такі як RESTful API. Це є викликом для New Relic, тому що нам потрібно зберегти кількість імен, які ми відстежуємо, настільки, що ми можемо зберегти швидкість роботи користувача New Relic, а також, щоб ми не переповнювали вас такою кількістю даних, що це важко щоб побачити проблемні місця у своїх програмах. URL-адреси не підходять для того, як New Relic бачить продуктивність.

Ще однією великою перевагою Node є те, що він надає багато інструментів, які будуються поверх модуля http для спрощення написання веб-служб. На жаль, ця різноманітність значно ускладнює для нас, з нашими обмеженими ресурсами, і тому ми пропонуємо кілька різних інструментів, які допоможуть нам надати нам інформацію, необхідну для надання корисних показників про вашу програму:

  • ми можемо читати назви маршрутів з маршрутизаторів Express, Restify і Hapi, якщо ви використовуєте їх (і, як сказано вище, для багатьох з вас це може бути все, що вам потрібно)
  • ми пропонуємо API для іменування поточного запиту, або з простими іменами, або, якщо хочете, групувати в контролери з діями
  • і ми підтримуємо правила, збережені в конфігурації вашого модуля, які можуть позначати запити, які можна перейменовувати або ігнорувати, на основі регулярних виразів, відповідних неочищеним URL-адресам запиту (також доступним як виклики API)

Запити перетворюються на назви транзакцій за допомогою детермінованого процесу:

  1. На вхідний запит модуль створює транзакцію New Relic, що включає в себе метод запиту HTTP та інші метадані. В якості резервного коду (для використання в трасуванні помилок) кожна транзакція має ім'я своєї сирої URL-адреси запиту.
  2. Коли використовується фреймворк, що використовує підтримуваний маршрутизатор, агент копіює назву транзакції, шлях шляху і метод запиту на транзакцію як назву транзакції.
  3. У межах обробників ви можете зателефонувати до API модуля, щоб явно встановити ім'я маршруту до того, що хочете, або позначити маршрут, який буде проігноровано (або явно не ігнорувати, див. Нижче обговорення правил). Як зазначено нижче, останній виклик API виграє, якщо їх більше.
  4. Після завершення транзакції (тобто відповідь повністю передається клієнту) застосовуються будь-які правила іменування або ігнорування, які ви вказали у вашій конфігурації. ПРИМІТКА: Старіші версії модуля застосовували ці правила, лише якщо ніщо інше не називало транзакцію, що зробило з використанням правил з автоматичним найменуванням маршрутизатора неможливим. Ви повинні використовувати останню версію New Relic для об'єднання імен і ігнорування правил з іменами, встановленими приладами маршрутизатора.
  5. Нарешті, New Relic може мати свої власні правила, які він застосовує до імені транзакції, або тому, що запит на щось, що New Relic згортається за замовчуванням (тобто статичні активи, такі як зображення або файли CSS), або тому, що New Relic застосовує правила для виправлення питання метричного групування.
  6. Якщо після кроків 1-5 ніщо не називає транзакцію, транзакція називається / *, що ставить цей запит у недиференційований, за замовчуванням пакет запитів. Як правило, це трапляється лише в тих випадках, коли ваша програма не використовує жодного фреймворку або фреймворк з маршрутизатором, який в даний час не підтримується New Relic.

Давайте переходимо по іменах один за одним.

Самоаналіз маршрутизатора

Express є найпопулярнішим веб-фреймворком, який використовується у спільноті Node, і ряд важливих служб також використовують команду Restify. Обидві рамки відображають маршрути обробникам, і обидва використовують подібну схему для цього: вони відповідають одному або декільком методам HTTP (наприклад, GET або все популярні OPTIONS - давайте почуємо це для CORS), а також потенційно параметризований шлях (наприклад, користувач) /: id) або регулярний вираз (наприклад, / ^ / user / ([- 0-9a-f] +) $ /). New Relic захопить обидві ці відомості в імені запиту. Якщо у вас є підтримка повільних слідів транзакцій і включені параметри capture_params, трасування транзакції також буде мати параметри запиту та їх значення, приєднані до нього. Аналогічно, параметри запиту та їх значення будуть прикріплені до будь-яких помилок, записаних агентом.

Єдине важливе, що потрібно знати про підтримку новим реліквієм Express, Restify або Hapi полягає в тому, що якщо ви не задоволені іменами, які ви можете знайти, ви можете скористатися викликами API, описаними нижче, щоб отримати більш описові імена. Крім того, якщо ви використовуєте інший веб-фреймворк або маршрутизатор, і хотіли б, щоб його підтримка була додана, повідомте нам про це.

Запитувати іменування за допомогою модуля API

API - це те, що передається з require ('@ newrelic / beta-agent'), тому


var newrelic =;

це все, що вам потрібно. Зверніть увагу, що вам все одно потрібно переконатися, що завантаження модуля New Relic - це перше, що робить ваша програма, оскільки воно потребує самостійного завантаження перед іншими завантаженнями додатків, але ви можете спокійно вимагати модуль з декількох модулів у вашій програмі - він буде ініціалізуватися один раз.

newrelic.setTransactionName (назва)

Назвіть поточний запит. Ви можете викликати цю функцію в будь-якому місці в контексті обробника запиту HTTP, в будь-який час після того, як обробка запиту розпочалася, але до того, як запит закінчився. Гарне правило полягає в тому, що якщо об'єкти запиту та відповіді знаходяться в області, ви можете встановити ім'я.

Явно виклик newrelic.setTransactionName () перевизначає будь-які імена, встановлені маршрутами Express, Restify або Hapi. Виклики newrelic.setTransactionName () і newrelic.setControllerName () перезаписуть один одного. Останній виклик, зроблений до закінчення запиту, виграє.

ДУЖЕ ВАЖЛИВО: Не вказуйте високозмінну інформацію, наприклад GUID, числові ідентифікатори або мітки часу у створених іменами запитів. Якщо ваш запит достатньо повільний для створення трасування транзакцій, цей слід буде містити оригінальний URL. Якщо ввімкнути параметр захоплення, параметри також будуть прикріплені до трасування. Імена запитів використовуються для групування запитів для багатьох діаграм і таблиць New Relic, і значення цих візуалізацій падає, коли кількість різних імен запитів збільшується. Якщо у вас є 50 або більше різних назв транзакцій, ви, ймовірно, штовхаєте його. Якщо у вас більше двох сотень, потрібно переосмислити стратегію імен.

newrelic.setControllerName (назва, [дія])

Назвіть поточний запит за допомогою шаблону стилю контролера, необов'язково включаючи дію поточного контролера. Якщо дія буде опущено, New Relic буде включати метод HTTP (наприклад GET, POST) як дію. Правила, коли ви можете викликати newrelic.setControllerName (), такі ж, як і для newrelic.setTransactionName ().

Явний виклик newrelic.setControllerName () перевизначає будь-які імена, встановлені маршрутами Express, Restify або Hapi. Виклики newrelic.setTransactionName () і newrelic.setControllerName () перезаписуть один одного. Останній, який запускається до закінчення запиту, перемагає.

Див. Вищезгадану примітку щодо newrelic.setTransactionName (), яка також застосовується до цієї функції.

Правила іменування та ігнорування запитів

Якщо ви не хочете ставити виклики до модуля New Relic безпосередньо в код програми, ви можете використовувати правила на основі шаблонів, щоб назвати запити. Існує два набори правил: один для перейменування запитів і один для позначення запитів, які ігноруються New Relic.

Якщо ви використовуєте socket.io, у вас буде випадок використання для ігнорування правил прямо з вікна. Можливо, потрібно додати правило, подібне до наведеного нижче:


export config =

правила:
ігнорувати:



;

Це дозволить довгому опитуванню socket.io переважати метрики часу відгуку і викидати показники apdex для вашої програми.

rules.name

Список правил, які використовуються для встановлення імені транзакції для імені, коли URL відповідає шаблону.

Можна також встановити за допомогою змінної середовища NEW_RELIC_NAMING_RULES, причому декілька правил передаються як список об'єктів JSON, лімітів об'єктів комами: NEW_RELIC_NAMING_RULES = '{"pattern": "^ t", "name": "u"}, {" pattern ":" ^ u "," name ":" t "} '

Кожне правило визначається у такому форматі:

{// необхідний шаблон: "pattern", ім'я: "name", // необов'язковий пріоритет: 1, terminate_chain: true, replace_all: false}

Додаткові атрибути ігноруються.

Примітка: ці правила мають пріоритет над автоматичним найменуванням з приладів маршрутизатора і застосовуються до шляху URL, а не до назви, поверненої інструментами маршрутизатора.

шаблон (обов'язково)

Шаблон, який використовується для відповідності URL-адресі. Вона може бути встановлена ​​або як рядок, або як літерал регулярних виразів JavaScript. Наприклад, "^ / abc / 123 $" еквівалентно / ^ \ _ abc 123 $ /.

Шаблон може бути записаний, щоб відповідати повній URL-адресі або просто його частиною.

ім'я (обов'язково)

Значення, яке використовується для заміни URL (або його частини), що відповідає шаблону. Також можна використовувати посилання на групи регулярних виразів. Див. Приклади нижче.

rules.precedence (необов'язково)

За замовчуванням правила оцінюються в зворотному порядку (від останнього до першого). Якщо ви вважаєте, що така поведінка є протиінтуїтивною, порядок виконання може бути скасований, встановивши прапорець функції reverse_naming_rules на false. Крім того, якщо ви бажаєте мати повний контроль над замовленням, кожному правилу може бути наданий атрибут пріоритету. Пріоритет - це ціле число, і правила оцінюються у порядку зростання. Якщо пріоритет не визначено явно, він буде встановлений за умовчанням до 500.

rules.terminate_chain (необов'язково)

Якщо встановлено значення true, ніякі подальші правила не будуть оцінюватися, якщо це правило є відповідним. Типовим є значення true.

Встановлення цього значення у false є корисним, коли потрібно використовувати кілька правил. Наприклад, одне правило може замінити загальний шаблон багатьма різними URL-адресами, тоді як наступні правила будуть більш конкретними.

rules.replace_all (необов'язково)

Якщо встановлено значення true, всі збіги шаблону будуть замінені. В іншому випадку буде замінено тільки перший матч. Значення за замовчуванням - false. Використання прапора g з літералом регулярних виразів матиме той самий ефект. Наприклад:

Шаблон: '[0-9] +', 'замінити': true

матиме такий самий ефект, як

зразок: / [0-9] + / g

Тестування

Агент поставляється з інструментом командного рядка для тестування правил іменування. Для отримання додаткової інформації виконайте наступну команду у вікні терміналу у каталозі, де встановлено ваше додаток.

вузол node_modules / .bin / newrelic-імена-правила

Приклади

Повна URL-адреса:

шаблон: "^ / items / [0-9] + $", name: "/ items /: id"

Замінити перший матч на будь-яку URL-адресу:

шаблон: "[0-9] +", ім'я: ": id"

призведе до:

/ orders / 123 => / orders /: id

/ items / 123 => / items /: id

/ orders / 123 / items / 123 => / orders /: id / items / 123

Замінити всі відповідності на будь-яку URL-адресу:

pattern: "[0-9] +", ім'я: ": id", replace_all: true

призведе до:

/ orders / 123 / items / 123 => / orders /: id / items /: id

Використання посилань на групи регулярних виразів:

шаблон: '^ / (елементи | порядки) / [0-9] + $', ім'я: '/ / \ t

призведе до:

/ orders / 123 => / orders /: id

/ items / 123 => / items /: id

rules.ignore

Список шаблонів для узгодження вхідних URL-адрес запиту буде проігноровано. Використовуючи правила ігнорування з інструментальними маршрутизаторами, відповідні параметри все ще виконуються по шляхах URL, а не з іменем, який повертає прилад маршрутизатора. Шаблони можуть бути рядками або регулярними виразами.

Можна також встановити за допомогою змінної середовища NEW_RELIC_IGNORING_RULES, причому декілька правил передано як список шаблонів, розділених комами: NEW_RELIC_IGNORING_RULES = '^ / socket \ _ \ _ \ _ / xhr-polling, ignore_me \ t щоб уникнути коми у шаблонах.

API для додавання імен і ігнорування правил

newrelic.addNamingRule (шаблон, назва)

Програмна версія rules.name вище. Правила іменування не можуть бути видалені до перезапуску процесу Node. Вони також можуть бути додані через конфігурацію модуля. Обидва параметри є обов'язковими.

newrelic.addIgnoringRule (шаблон)

Програмна версія правил. Правила ігнорування не можуть бути видалені до перезапуску процесу Node. Вони також можуть бути додані через конфігурацію модуля. Шаблон є обов'язковим.

Інші виклики API

newrelic.addCustomParameter (ім'я, значення)

Встановіть значення параметра користувача, яке буде додано до трасування транзакції та / або помилки в інтерфейсі нового Relic. Це потрібно викликати в контексті транзакції, тому в ньому є місце для встановлення власних параметрів.

newrelic.addCustomParameters (params)

Встановіть декілька значень власних параметрів, які будуть прикріплені до трасування транзакції та / або помилки в інтерфейсі New Relic. Це потрібно викликати в контексті транзакції, тому в ньому є місце для встановлення власних параметрів.

Приклад налаштування декількох користувацьких параметрів одночасно:


newrelic;

newrelic.setIgnoreTransaction (ігнорується)

Скажіть модулю явно, чи слід ігнорувати цей запит. Дозволяє явно відфільтрувати довгі опитування маршрутів або запитів ви знаєте, буде багато часу в нецікавий спосіб, а також дозволяє збирати метрики для запитів, які в іншому випадку буде ігноруватися. Зверніть увагу, що для запобігання ігнорування транзакції з цією функцією, ви повинні передати false як параметр - у цьому випадку null або undefined буде проігноровано.

newrelic.noticeError (помилка, параметри користувача)

Якщо ваша програма виконує власну обробку помилок за допомогою доменів або пунктів try / catch, але ви хочете, щоб вся інформація про те, скільки помилок виходить з програми для централізованого керування, використовуйте цей виклик. На відміну від більшості викликів, ця функція може використовуватися поза обробників маршрутів, але матиме додатковий контекст, якщо викликатиметься з області обсягу транзакції. Якщо користувальницькі параметри передаються в об'єктному літералі, вони будуть передані до нового Relic для відображення.

newrelic.shutdown ([варіанти], зворотний виклик)

Використовуйте цей метод для витонченого вимкнення агента. При виклику з options.collectPendingData встановлено значення true, агент буде надсилати всі очікувані дані на нові сервери Relic перед завершенням роботи. Це корисно, коли ви хочете вимкнути процес Node і переконатися, що всі транзакції та / або помилки захоплені New Relic.

Приклад збору даних, що очікують на розгляд, до завершення процесу:


newrelic

Користувальницькі інструменти

Спеціальна транзакція повинна використовуватися для інструментування socket.io або інших різновидів серверів сокетів, а також фонових завдань. Це речі, які агент не може автоматично перевірити, тому що без вашого відома додаток агент не може сказати, коли вони повинні починатися і закінчуватися.

Докладніше на: https://docs.newrelic.com/docs/agents/nodejs-agent/supported-features/nodejs-custom-instrumentation

newrelic.createWebTransaction (url, ручка)

url - це назва веб-транзакції. Вона повинна бути досить статичною, не включаючи нічого подібного до ідентифікаторів користувача або будь-яких інших даних, які дуже специфічні для запиту. handle - це функція, яку потрібно обернути в веб-транзакції. Як звичайні, так і автоматичні прилади будуть захоплені як частина угоди.

Якщо він викликається в активній веб-транзакції, він буде діяти як вкладений трасувальник. Якщо буде викликано в рамках активної фонової транзакції, вона створить нову незалежну транзакцію, і будь-які виклики всередині ручки будуть пов'язані з новою веб-транзакцією.

Спеціальні транзакції повинні бути завершені вручну, викликаючи endTransaction (). Вибір часу для користувацької транзакції починається з виклику повернутої перенесеної функції до виклику endTransaction ().

newrelic.createBackgroundTransaction (назва, [група], ручка)

name - назва завдання. Вона повинна бути досить статичною, і не включати ідентифікатори роботи або що-небудь дуже специфічне для цього виконання завдання. Група є необов'язковою і дозволяє групувати типи робіт разом. Це має слідувати таким же правилам, як і назва. handle - це функція, яка охоплює фонове завдання. Як звичайні, так і автоматичні прилади будуть захоплені як частина угоди.

Якщо він викликається в межах активної фонової транзакції, він буде діяти як вкладений трасувальник. Якщо він викликається в активній веб-транзакції, він створить нову транзакцію, і будь-які виклики всередині ручки будуть пов'язані з новою незалежною фоновою транзакцією.

Спеціальні транзакції повинні бути завершені вручну, викликаючи endTransaction (). Вибір часу для користувацької транзакції починається з виклику повернутої перенесеної функції до виклику endTransaction ().

newrelic.endTransaction ()

Це не приймає аргументів і повинно бути викликано для завершення будь-якої користувацької транзакції. Він визначить, яка транзакція була активною і завершила її.

newrelic.createTracer (назва, ручка)

ім'я це ім'я трассера. Він відображатиметься як сегмент у вашій трасі транзакцій і створюватиме власний показник. ручка - це функція, яка повинна бути пов'язана з трассером.

Вибір часу відбувається після того, як createTracer викликається, доки не буде виконано обробку. Це потрібно викликати всередині транзакції, щоб отримати дані. Якщо вона викликається поза транзакції, вона просто пройде.

newrelic.recordMetric (назва, значення)

name - це назва метрики для запису, вона повинна бути рядком, який починається з Custom / зазвичай слідують за сегментами для категорії та мітки. (наприклад, Custom / my_category / my_label). Значення - це або числове значення, зв'язане з зразком метрики, або об'єкт, що представляє кілька зразків для метрики. Якщо значення є об'єктом, воно повинно включати ключі для count, total, min, max та sumOfSquares.

newrelic.incrementMetric (назва [, сума])

name - це назва метрики, яку слід записати, вона повинна бути рядком, який має значення Custom / зазвичай слідують за сегментами для категорії та мітки. (наприклад, Custom / my_category / my_label). сума є необов'язковою, але має бути цілим числом, якщо надано. кількість - це кількість разів для збільшення кількості метрик, за замовчуванням - 1.

Дрібний шрифт

Це специфічна для сайту версія документації API іменування транзакцій New Relic. API призначення імен існує, щоб допомогти нам розібратися з цілком реальною проблемою, що спроба обробляти занадто багато показників зробить New Relic повільним для всіх, а не тільки для облікового запису з занадто великою кількістю показників. Якщо, в розмові з Новою Релігійною Підтримкою, ви бачите дискусію про "метричний вибух", це те, про що вони говорять.

Хоча ми маємо різноманітні стратегії для вирішення цих питань, найважчим є просто заборонити застосування чорних списків. Основною причиною, за якою ви повинні бути обережними у використанні наших інструментів іменування запитів, є запобігання тому, щоб це сталося з вашими програмами. Ми зробимо все, що в наших силах, щоб у вас був хороший досвід роботи з New Relic, навіть якщо ваша програма викликає у нас проблеми, але іноді це вимагатиме ручного втручання з боку нашої команди, і це може зайняти деякий час.

Внески

Ми зобов'язані всім бета-тестерам та користувачам, які надають нам відгуки, а в деяких випадках і значні частини коду. (Якщо ви бажаєте внести свій внесок, див. CONTRIBUTING.md у цьому каталозі.) Зокрема, ми зобов'язані цим людям:

  • Ернан Сільберман, за свою роботу над memcached приладами.
  • Джефф Хоуелл < [email protected] >, для того, щоб придумати набагато простіший шлях до нативного інструментального вузла-mongodb, а також вказати на проблему з приладами Connect.

Останні зміни

Інформація про зміни в модулі NEWS.md .

Відомі проблеми:

  • Новий Relic для Node підтримується лише для Node.js 0.8 і новіших. Деякі функції можуть по-різному поводитися між 0,8, 0,10 і 0,11 / 0,12. Агент оптимізований для нових версій Node.
  • Є нерівності навколо захоплення і відображення трасування транзакцій. Якщо ви помітили відсутність або неправильну інформацію з трасування транзакцій, повідомте нам про це.
  • Існує понад 20 000 30 000 40 000 МОП модулів на npm. Ми можемо лише інструментувати незначну їх кількість. Навіть для модулів, які ми підтримуємо, існує дуже багато способів їх використання. Якщо ви бачите дані, які ви не очікуєте на New Relic і є час для створення скороченої версії коду, який виробляє дивні дані, він буде використаний для поліпшення модуля, і ви отримаєте подяку команди Node.
  • Накладні витрати процесора та пам'яті, спричинені New Relic для вузла, відносно незначні (~ 1-10%, залежно від того, скільки інструментів використовують ваші програми). Активність GC значно збільшується, коли агент активний, через велику кількість ефемерних об'єктів, створених методом збору метрик.
  • При використанні включеної підтримки кластерів Node кожен робочий процес відкриє своє власне підключення до серверів New Relic і буде нести власні накладні витрати.

Нові функції Relic доступні для інших платформ, які ще немає в Node.js

  • спеціальні показники
  • пояснити плани
  • прилад для збирання сміття
  • профілювання ниток
  • Рентгенівські транзакції (залежить від профілювання потоку)
  • планування потужності

ЛІЦЕНЗІЯ

Новий Relic для Node є вільним для використання, власним програмним забезпеченням. Перегляньте повну ліцензію (знайдено в ЛІЦЕНЗІЯ у цьому розподілі) для деталей його ліцензії та ліцензій на її залежності.

Можливо, вам все одно, якщо плата потрібна?

Новости