Что такое Appmetrics?
Appmetrics — это легковесная библиотека для мониторинга производительности приложений на TypeScript и JavaScript. Она предоставляет разработчикам готовые метрики: время отклика, загрузку CPU, использование памяти, количество активных запросов и скорость работы базы данных. Библиотека не требует сложной инфраструктуры и может быть внедрена как в Express, так и в Nest.js или чистый Node.js.
Зачем нужен мониторинг TypeScript-приложений?
TypeScript-приложения часто работают на серверной стороне (Node.js) или в сложных фронтенд-системах. Без мониторинга вы рискуете пропустить утечку памяти, медленные эндпоинты или внезапное падение производительности. Appmetrics помогает:
- Отслеживать реальное время выполнения запросов
- Обнаруживать узкие места в коде
- Автоматически логировать метрики в Prometheus или Grafana
- Получать оповещения при аномалиях
Установка
Установите библиотеку через npm или yarn:
npm install @appmetrics/typescript-metricsДля интеграции с Express дополнительно установите:
npm install @appmetrics/express-middlewareОсновные функции
- Сбор метрик CPU и памяти — автоматический сбор в реальном времени.
- Метрики HTTP-запросов — время ответа, статус коды, количество запросов.
- Интеграция с популярными системами — Prometheus, Grafana, Datadog.
- Кастомные метрики — возможность добавить свои счётчики и гистограммы.
- Типизация — полная поддержка TypeScript с автодополнением.
Пример кода на TypeScript
import { MetricsCollector } from '@appmetrics/typescript-metrics';
import express from 'express';
const app = express();
const metrics = new MetricsCollector({ appName: 'my-app' });
// Middleware для сбора метрик запросов
app.use((req, res, next) => {
const end = metrics.startTimer('http_request');
res.on('finish', () => {
end({ method: req.method, status: res.statusCode });
metrics.incrementCounter('http_requests_total');
});
next();
});
app.get('/api/users', (req, res) => {
res.json({ users: [] });
});
// Эндпоинт для экспорта метрик в формате Prometheus
app.get('/metrics', async (req, res) => {
const data = await metrics.exportPrometheus();
res.set('Content-Type', 'text/plain');
res.send(data);
});
app.listen(3000, () => console.log('Server started'));Когда использовать Appmetrics?
- Продакшн-серверы — для постоянного контроля здоровья приложения.
- Микросервисная архитектура — для мониторинга каждого сервиса отдельно.
- Нагрузочное тестирование — для сбора метрик во время стресс-тестов.
- Отладка — для поиска утечек памяти или медленных функций.
Библиотека подходит как для небольших проектов, так и для enterprise-систем с тысячами запросов в секунду.