mirror of
				https://github.com/goldbergyoni/nodebestpractices.git
				synced 2025-10-31 09:38:39 +08:00 
			
		
		
		
	createmaintenanceendpoint
Signed-off-by: Alexander Ivanov <oshli.a.er@gmail.com>
This commit is contained in:
		| @ -608,13 +608,13 @@ null == undefined   // true | |||||||
|  |  | ||||||
| <br/><br/> | <br/><br/> | ||||||
|  |  | ||||||
| ## ![✔] 5.7. Создать "конечную точку обслуживания" | ## ![✔] 5.7. Создавайте "конечную точку обслуживания" | ||||||
|  |  | ||||||
| **TL;DR:** Предоставьте набор информации, связанный с системой, например, использование памяти и REPL, и т.д. в защищенном API. Хотя настоятельно рекомендуется полагаться на стандартные инструменты и инструменты для боевых испытаний, некоторые ценные сведения и операции легче выполнять с помощью кода. | **TL;DR:** Предоставьте набор информации, связанный с системой, например, использование памяти и REPL, и т.д. в защищенном API. Хотя настоятельно рекомендуется полагаться на стандартные инструменты и инструменты для боевых испытаний, некоторые ценные сведения и операции легче выполнять с помощью кода. | ||||||
|  |  | ||||||
| **Иначе:** Вы обнаружите, что выполняете много "диагностических развертываний" -- отправка кода в производство только для извлечения некоторой информации в диагностических целях. | **Иначе:** Вы обнаружите, что выполняете много "диагностических развертываний" -- отправка кода в производство только для извлечения некоторой информации в диагностических целях. | ||||||
|  |  | ||||||
| 🔗 [**Подробнее: Create a ‘maintenance endpoint’**](/sections/production/createmaintenanceendpoint.md) | 🔗 [**Подробнее: Создавайте конечную точку обслуживания**](/sections/production/createmaintenanceendpoint.russian.md) | ||||||
|  |  | ||||||
| <br/><br/> | <br/><br/> | ||||||
|  |  | ||||||
|  | |||||||
							
								
								
									
										45
									
								
								sections/production/createmaintenanceendpoint.russian.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								sections/production/createmaintenanceendpoint.russian.md
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,45 @@ | |||||||
|  | # Создавайте конечную точку обслуживания | ||||||
|  |  | ||||||
|  | <br/><br/> | ||||||
|  |  | ||||||
|  | ### Объяснение в один абзац | ||||||
|  |  | ||||||
|  | Конечная точка обслуживания - это высокозащищенный HTTP API, который является частью кода приложения, и его назначение - использовать команду ops/production для мониторинга и предоставления функциональных возможностей обслуживания. Например, он может вернуть дамп кучи (моментальный снимок памяти) процесса, сообщить о наличии утечек памяти и даже разрешить выполнение команд REPL напрямую. Эта конечная точка необходима, когда обычные инструменты DevOps (продукты мониторинга, журналы и т.д.) не в состоянии собрать какой-то конкретный тип информации или вы решили не покупать/устанавливать такие инструменты. Золотое правило заключается в использовании профессиональных и внешних инструментов для мониторинга и обслуживания производства, обычно они более надежны и точны. Тем не менее, могут быть случаи, когда универсальные инструменты не смогут извлечь информацию, относящуюся к Node или вашему приложению - например, если вы захотите сгенерировать снимок памяти в момент завершения цикла GC - несколько библиотек npm буду рады сделать это за вас, но популярные инструменты мониторинга, скорее всего, упустят эту функцию. Важно сохранять эту конечную точку частной и доступной только для администраторов, поскольку она может стать целью атаки DDOS. | ||||||
|  |  | ||||||
|  | <br/><br/> | ||||||
|  |  | ||||||
|  | ### Пример кода: создание дампа кучи с помощью кода | ||||||
|  |  | ||||||
|  | ```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); | ||||||
|  |         }); | ||||||
|  |     }); | ||||||
|  | }); | ||||||
|  | ``` | ||||||
|  |  | ||||||
|  | <br/><br/> | ||||||
|  |  | ||||||
|  | ### Рекомендуемые ресурсы | ||||||
|  |  | ||||||
|  | [Подготовка вашего приложения Node.js к производственому запуску (слайды)](http://naugtur.pl/pres3/node2prod) | ||||||
|  |  | ||||||
|  | ▶ [Подготовка вашего приложения Node.js к производственому запуску (видео)](https://www.youtube.com/watch?v=lUsNne-_VIk) | ||||||
|  |  | ||||||
|  |  | ||||||
		Reference in New Issue
	
	Block a user
	 Alexander Ivanov
					Alexander Ivanov