2015-09-23 3 views
4

У меня есть сценарий node.js, который запускается один раз в день на экземпляре ubuntu EC2. Этот скрипт вытаскивает данные из нескольких тысяч удаленных API-интерфейсов и сохраняет их в нашей локальной базе данных. Есть ли способ контролировать этот скрипт node.js на удаленном сервере? Было несколько случаев, когда скрипт разбился по какой-то причине, и мы не смогли разобраться с ним без SSHing и проверить журналы. Тем не менее, я создал небольшую систему после первых нескольких сбоев, которые отправляют нам электронное письмо при сбое сценария из-за некоторого неперехваченного исключения, а также когда скрипт завершает выполнение.Мониторинг сценариев node.js, работающих на экземпляре ubuntu

Однако нам необходимо разработать лучшую систему, в которой мы можем отслеживать ход выполнения скрипта через веб-интерфейс нашего приложения-администратора, который развертывается поверх какого-либо другого экземпляра, а также запускает запуск/остановку скрипта через этот интерфейс. Каковы возможные варианты для достижения этого?

+0

Попробуйте использовать регистраторы, я использую 'morgan' для записи в файл, а затем я разбираю этот файл, показывающий журналы на веб-странице. Он имеет разные флажки, обозначающие тип журнала как обычный, предупреждение, ошибку и т. Д. Таким образом, вы можете просто показывать журналы ошибок. В вашем случае 'Winston' будет работать лучше для вас, как наилучшего для' remote-calls'. –

ответ

2

Если Вы хотели бы остановиться в Node.js, то есть несколько инструментов мониторинга процесса:

PM2 поставляется с большим количеством других функций, кроме мониторинга процессов. Вы можете контролировать свои процессы через CLI или их официальный веб-интерфейс: https://keymetrics.io/. Быстрый поиск по НПМ также дает кучу приятных неофициальных инструментов графического интерфейса: https://www.npmjs.com/search?q=pm2+web

Forever не столь богатым, как функция PM2, но будет делать основной процесс операции и пара графического интерфейса также доступны в npm.

+0

Благодарим вас за ответ. Я использую PM2 с прошлого года и полгода для запуска и мониторинга сервера узлов, но он не подходит для текущего сценария, который мне нужно контролировать. Я бы предпочел написать собственное собственное решение для мониторинга внутри скрипта. – Raeesaa

+0

Да, он только контролирует использование процессора/памяти. Для контроля других матриц вам понадобится настраиваемый модуль. – hassansin

1

Есть две проблемы, которые вы пытаетесь решить:

  1. Планирование работы предстоит сделать
  2. Мониторинг процесса для отказа

На простом уровне, это легко: запланировать задание cron и перезапустить неудачные вещи, чтобы они продолжали пытаться.

Однако, когда все идет не так гладко, это помогает иметь гораздо более подробную информацию о том, что вы планируете и как оно выполняется. Это также обеспечит вам видимость каждой маленькой работы.

Добавление немного больше сложности, вы можете в конечном итоге с чем-то вроде этого:

  1. Schedule скрипт, который запускает все (через хрон, если это удобно)
  2. Этот сценарий создает несколько рабочих мест, которые должны выполняться в очереди
  3. рабочий процесс (или п рабочих процессов) потребляют эту очередь и выполнить запланированные задания
  4. Вы можете контролировать и ход выполнения заданий, а также состояние еа ch worker (количество сбоев, сбоев, завершенных заданий и т. д.). Другие инструменты, упомянутые выше, являются хорошими кандидатами для этого (навсегда, pm2 и т. Д.)

Когда рабочие места не работают, другие работники могут забрать небольшую часть выполняемой работы и перезапустить ее. Это намного эффективнее, чем перезапуск всего процесса, а также позволяет распараллеливать работу с n работников на основе того, как вы можете разделить рабочие нагрузки.

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

Вы также можете стать более интеллектуальными с различными типами сбоев. Ошибка сети? Повторите попытку 5 раз. Ограниченный лимит? Постепенное отступление. Сбой? Не повторите попытку и не сообщите по электронной почте. etc

0

Я пробовал это с pm2, вы можете получить информацию о задаче, затем вытащить или захватить файлы журнала. Или вы можете иметь сервер протоколирования, см. Также: https://github.com/papertrail/remote_syslog2

Смежные вопросы