diff --git a/README.russian.md b/README.russian.md index a37fd377..d04e9b5f 100644 --- a/README.russian.md +++ b/README.russian.md @@ -608,13 +608,13 @@ null == undefined // true

-## ![✔] 5.7. Создать "конечную точку обслуживания" +## ![✔] 5.7. Создавайте "конечную точку обслуживания" **TL;DR:** Предоставьте набор информации, связанный с системой, например, использование памяти и REPL, и т.д. в защищенном API. Хотя настоятельно рекомендуется полагаться на стандартные инструменты и инструменты для боевых испытаний, некоторые ценные сведения и операции легче выполнять с помощью кода. **Иначе:** Вы обнаружите, что выполняете много "диагностических развертываний" -- отправка кода в производство только для извлечения некоторой информации в диагностических целях. -🔗 [**Подробнее: Create a ‘maintenance endpoint’**](/sections/production/createmaintenanceendpoint.md) +🔗 [**Подробнее: Создавайте конечную точку обслуживания**](/sections/production/createmaintenanceendpoint.russian.md)

diff --git a/sections/production/createmaintenanceendpoint.russian.md b/sections/production/createmaintenanceendpoint.russian.md new file mode 100644 index 00000000..729dd05a --- /dev/null +++ b/sections/production/createmaintenanceendpoint.russian.md @@ -0,0 +1,45 @@ +# Создавайте конечную точку обслуживания + +

+ +### Объяснение в один абзац + +Конечная точка обслуживания - это высокозащищенный HTTP API, который является частью кода приложения, и его назначение - использовать команду ops/production для мониторинга и предоставления функциональных возможностей обслуживания. Например, он может вернуть дамп кучи (моментальный снимок памяти) процесса, сообщить о наличии утечек памяти и даже разрешить выполнение команд REPL напрямую. Эта конечная точка необходима, когда обычные инструменты DevOps (продукты мониторинга, журналы и т.д.) не в состоянии собрать какой-то конкретный тип информации или вы решили не покупать/устанавливать такие инструменты. Золотое правило заключается в использовании профессиональных и внешних инструментов для мониторинга и обслуживания производства, обычно они более надежны и точны. Тем не менее, могут быть случаи, когда универсальные инструменты не смогут извлечь информацию, относящуюся к Node или вашему приложению - например, если вы захотите сгенерировать снимок памяти в момент завершения цикла GC - несколько библиотек npm буду рады сделать это за вас, но популярные инструменты мониторинга, скорее всего, упустят эту функцию. Важно сохранять эту конечную точку частной и доступной только для администраторов, поскольку она может стать целью атаки DDOS. + +

+ +### Пример кода: создание дампа кучи с помощью кода + +```javascript +const heapdump = require('heapdump'); + +// Check if request is authorized +function isAuthorized(req) { + // ... +} + +router.get('/ops/heapdump', (req, res, next) => { + if (!isAuthorized(req)) { + return res.status(403).send('You are not authorized!'); + } + + logger.info('About to generate heapdump'); + + heapdump.writeSnapshot((err, filename) => { + console.log('heapdump file is ready to be sent to the caller', filename); + fs.readFile(filename, "utf-8", (err, data) => { + res.end(data); + }); + }); +}); +``` + +

+ +### Рекомендуемые ресурсы + +[Подготовка вашего приложения Node.js к производственому запуску (слайды)](http://naugtur.pl/pres3/node2prod) + +▶ [Подготовка вашего приложения Node.js к производственому запуску (видео)](https://www.youtube.com/watch?v=lUsNne-_VIk) + +![Подготовка вашего приложения Node.js к производственому запуску](/assets/images/createmaintenanceendpoint1.png "Подготовка вашего приложения Node.js к производственому запуску")