Собственные метрики Node.js в Application Insights

Я установил пакет applicationinsights-native-metrics, упомянутый здесь: https://learn.microsoft.com/en-us/azure/azure-monitor/app/nodejs

Я предполагаю, что мое приложение генерирует метрики, упомянутые в статье, но я не могу понять, как просмотреть их в Application Insights. Любые указатели будут с благодарностью оценены.

Мне было предложено увидеть новое пространство имен в Обозревателе метрик в Application Insights под названием «Расширенные метрики Node.js», но я этого не вижу.

В документации сказано, что вам просто нужно установить пакет. После того, как это не сработало, я попробовал явно потребовать это в приложении. Ни то, ни другое не сработало.

Вы можете проверить статистику приложения в разделе «Поиск транзакций».Изображение

Harshitha 17.06.2024 19:12

@Matt Brown Даже я не нашел в коде этого пространства имен расширенных метрик Node.js после установки пакета applicationinsights-native-metrics.

Aslesha Kantamsetti 18.06.2024 10:03

@Aslesha Kantamsetti Интересно - спасибо за ответ. Если это так, то я не знаю, как добраться до показателей, которые предположительно собирает этот пакет.

Matt Brown 18.06.2024 15:02

@Matt Brown Вы ищете это?

Aslesha Kantamsetti 18.06.2024 15:24

@AsleshaKantamsetti, возможно, это так. Каково там полное имя пространства имен и как вам удалось его реализовать?

Matt Brown 18.06.2024 17:37

@Matt Brown Полное имя пространства имен — azure.appinsights, я получил его с кодом и собственным пакетом метрик.

Aslesha Kantamsetti 18.06.2024 18:04
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
6
153
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Используя приведенный ниже код и пакет applicationinsights-native-metrics, я сгенерировал метрики, как указано в этом документе.

Я выполнил приведенные ниже команды для установки пакетов.

npm install applicationinsights
npm install applicationinsights-native-metrics

сервер.js:

 let appInsights = require("applicationinsights");
 let http = require("http");
 const connectionString = '<ConnectionString>';
 appInsights.setup(connectionString).start(); 
 const port = process.env.PORT || 3000;
 let client = appInsights.defaultClient;
 client.trackEvent({ name: "my custom event", properties: { customProperty: "custom property value" } });
 client.trackException({ exception: new Error("handled exceptions can be logged with this method") });
 client.trackMetric({ name: "custom metric", value: 3 });
 client.trackTrace({ message: "trace message" });
 client.trackDependency({
   target: "http://dbname",
   name: "select customers proc",
   data: "SELECT * FROM Customers",
   duration: 231,
   resultCode: 0,
   success: true,
   dependencyTypeName: "ZSQL"
 });
 client.trackRequest({
   name: "GET /customers",
   url: "http://myserver/customers",
   duration: 309,
   resultCode: 200,
   success: true
 });
 http.createServer((req, res) => {
   client.trackNodeHttpRequest({ request: req, response: res });
   if (req.url === '/customers') {
     res.writeHead(200, { 'Content-Type': 'application/json' });
     res.end(JSON.stringify({ message: "Customers endpoint" }));
   } else {
     res.writeHead(404, { 'Content-Type': 'text/plain' });
     res.end("Not Found");
   }
 }).listen(port, () => {
   console.info('Server is running on port '+port);
 });

пакет.json:

{
  "name": "nodeappinsights",
  "version": "1.0.0",
  "description": "",
  "main": "server.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": {
    "@azure/monitor-opentelemetry-exporter": "^1.0.0-beta.24",
    "@azure/opentelemetry-instrumentation-azure-sdk": "^1.0.0-beta.5",
    "@opentelemetry/auto-instrumentations-node": "^0.47.1",
    "@opentelemetry/instrumentation": "^0.52.0",
    "@opentelemetry/sdk-node": "^0.52.0",
    "@opentelemetry/sdk-trace-node": "^1.25.0",
    "applicationinsights": "^2.9.5",
    "applicationinsights-native-metrics": "^0.0.10",
    "express": "^4.19.2"
  }
}

После выполнения команды ниже:

node server.js

Я мог бы просмотреть журналы в поиске транзакций Application Insights на портале Azure, как показано ниже:

В Application Insights перейдите в раздел «Мониторинг», выберите «Метрики», в пространстве имен метрик в разделе «Пользовательские» выберите azure.applicationinsights, как показано ниже.

После обновления вышеуказанного пространства имен метрик вы сможете увидеть приведенные ниже метрики.

Спасибо за ответ. Вот что я вижу для этого пространства имен: [ссылка]imgur.com/a/CpgYBR6 Я постараюсь покопаться в этом позже сегодня.

Matt Brown 19.06.2024 16:36

@MattBrown Вы пробовали мой код? Убедитесь, что вы правильно установили applicationinsights-native-metrics, так как у меня он работает нормально.

Aslesha Kantamsetti 20.06.2024 11:43

Да. Изолированное приложение, установило 2 пакета, точно использовало ваш код (подключив строку подключения). При вызове start() я получаю ряд предупреждений/ошибок: Модуль @azure/core-tracing был загружен раньше… инициализируйте его, прежде чем требовать @azure/core-tracing. Ошибка: @opentelemetry/api: регистрация версии v1.9.0. для трассировки не соответствует ранее зарегистрированному API v1.8.0 «Не удалось добавить SpanProcessors в TracerProvider». Метрики выглядят так же, как те, которые я опубликовал вчера. Я попробую минимизировать код и разобраться в некоторых из этих ошибок.

Matt Brown 20.06.2024 17:50

@MattBrown Я добавил Package.json в решение, проверьте его один раз.

Aslesha Kantamsetti 20.06.2024 18:57

Согласование версий пакетов помогло. Большое спасибо за подробные ответы.

Matt Brown 20.06.2024 20:47

@MattBrown Я рад слышать, что проблема решена.

Aslesha Kantamsetti 21.06.2024 04:54

Для меня работала только версия applicationinsights 2.9.5, и мне не пришлось добавлять другие зависимости. Однако я получил ту же ошибку, используя последнюю версию.

Другие вопросы по теме