pm2 - Как я могу получить / получить доступ к статусу процесса программно? - PullRequest
0 голосов
/ 11 апреля 2019

Я пытаюсь написать простой сервер, который может сообщать о состоянии процессов. Я понимаю, как я могу использовать пакет pm2 и отправить эти данные в ответ. По сути, я пытаюсь создать простой веб-интерфейс для мониторинга удаленного процесса.

Проблема, с которой я столкнулся:

  • Когда я вызываю pm2.list() или pm2.jlist(), методы выполняются нормально, и я вижу вывод в моем файле журнала pm2, но сервер не отправляет данные обратно
  • Когда вышеперечисленное сработает, pm2 также перезапускает приложение, и я вижу, как увеличивается счетчик перезапусков.

Возможно ли это?

Вот код моего приложения:

const express = require('express');
const pm2 = require('pm2')

const app = express();
const { PORT = 3000 } = process.env;

app.get('/', (req, res) => {
  console.log('foo');
  pm2.describe((process, err) => {
    res.send(process)
  })
});


app.listen(PORT, () => {
  console.log(`Listening on port ${PORT}`);
});

pm2 json file

{
  "name": "testPm2app",
  "script": "1.js",
  "watch": true,
  "ignore_watch": "node_modules"
}

1 Ответ

1 голос
/ 11 апреля 2019

Вы используете pm2.describe неверно. Первый параметр должен быть именем процесса или идентификатором процесса. Вы можете прикрепить функцию обратного вызова ко второму параметру, который будет выполняться с данными процесса. Посмотрите на приведенный ниже код.

const express = require('express');
const pm2 = require('pm2')

const app = express();
const { PORT = 3000 } = process.env;

app.get('/', (req, res) => {
  console.log('foo');
  pm2.describe('testPm2app', (err, data) => {
    if(err) {
        res.status(500).end();
    }
    res.send(data);
  })
});


app.listen(PORT, () => {
  console.log(`Listening on port ${PORT}`);
});

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...