@skbkontur/node-core
v1.4.0-rc.4
Published
Основные компоненты для разработки на Node.js
Downloads
113
Maintainers
Keywords
Readme
Быстрый старт Node.js приложений на инфраструктуре Контура
В библиотеке есть всё что вам надо:
- Логирование
- Метрики и системный мониторинг
- Обработка ошибок
- Инициализация ClusterConfig'а
- Трассировка запросов
- Готовый провайдер для ClusterClient
Библиотека композирует модули и инициализирует компоненты.
Документация:
- Гайд по инфраструктуре: guide.md
- Подробнее о конфигурации Node.core: config.md
- Управление стратегиями клиентов сервисов при помощи провайдеров: providers.md
- О трассировках: tracing.md
Внутри данного модуля реализован набор middleware для веб фреймворка koa2
.
Если вы используете другой фремворк, вам необходимо реализовать middleware для него.
Пример использования с koa2
:
const core = require('@skbkontur/node-core')
const auth = require('./src/middlewares/authentication')
const router = require('./src/middlewares/router')
const config = require('./src/config')
const Koa = require('koa')
const app = new Koa()
core.initClusterConfig(config.zone)
.then((clusterConfig) => core.runApp(config, clusterConfig))
.then(async function createApp(coreApp) {
const { logger } = coreApp
core.useCore(app, coreApp)
app.use(auth)
app.use(router())
app.listen(config.port, () => {
logger.info(`Application started at http://localhost:${config.port}`)
})
})
Компоненты
Ниже приведен список всех компонентов coreApp
.
Апи для их использования можно найти в соответствующих репозиториях:
https://www.npmjs.com/package/@skbkontur/cluster-config-client https://www.npmjs.com/package/@skbkontur/winston-kontur-logstash https://www.npmjs.com/package/@skbkontur/span-aggregator-client https://www.npmjs.com/package/@skbkontur/monitoring-client
const {
logger,
clusterConfig,
config,
monitor,
monitoringClient,
spanAggregator,
options
} = coreApp
Доступ к компонентам внутри koa.context
Если вы используете middleware для koa2
из этого репозитория, то вы имеете доступ к компонентам coreApp из контекста koa
.
Пример:
app.use((ctx) => {
ctx.core.logger.info('hello')
ctx.core.clusterConfig.getSettingsByPrefix('topology/graphite-prod/')
ctx.core.monitoringClient.send('metricName', 5)
})