Необхідний: простий спосіб віддаленого моніторингу процесу на моєму сервері

У мене є хмарний сервер, на якому запущено процес Java (сервер POP/SMTP, який називається davmail, деталі не мають значення).

Який найпростіший спосіб віддалено контролювати стан цього процесу Java? Мені потрібно знати, якщо і коли вона знижується. Я міг би просто залишити сеанс ssh відкритим і зафіксувати журнал, але чи є щось більш елегантне?

Можливо, мені потрібно встановити веб-сервер і запустити деяке програмне забезпечення для моніторингу на одному сервері. Або, можливо, є клієнтська програма, яку я можу запустити на моєму локальному комп'ютері (Mac), який може бути попереджений деяким завданням cron на сервері, коли процес Java зупиняється?

6
просто якщо і коли вона знижується?
додано Автор strugee, джерело
Я зробив просту програму, яка зробила щось подібне: вона контролює, чи процес виконується, перевіряючи файл pid, і якщо це не так, знову перезапустіть. Він прокидається кожні 10 хвилин, щоб зробити це перевірка і запустити програму, якщо це необхідно. Якщо ви зацікавлені, я можу опублікувати його зараз.
додано Автор Nick, джерело

5 Відповіді

Ну, ви завжди можете мати cronjob робити

echo "100 logout" | nc yourserver.fqdn 143 || \
   {
      echo "The server is down" |\
      mailx -s "Red alert! Red alert! This is not a drill!" [email protected];
   }

Залежить від того, що ви називаєте простим і які інші функції ви хочете.

  • 100 logout is nothing but a very trivial IMAP command that, if you haven't logged in before, will make the server terminate the connection.
  • nc is a tool that opens TCP connections and attaches STDIN and STDOUT to the socket.

Ця комбінація призводить до встановлення з'єднання з сервером IMAP і повідомляє йому, що ми завершили роботу. Якщо ваш IMAP-сервер запущений і працює, він повторно використовує команду і закриває з'єднання TCP, роблячи нормальний вихід nc .

Якщо щось піде не так, наприклад, з'єднання TCP ніколи не встановлюється, або вимкнеться, оскільки сервер не обробляє команду IMAP, ваш сервер IMAP не доступний. У цьому випадку потрібно сповістити, і в такому випадку nc завжди припинить аномалію.

|| means that if nc terminates abnormaly, everyting in the { ... } is executed. The example command i provided here sends an email using mailx to [email protected] with the subject "Red alert! Red alert! This is not a drill" and the content "The server is down".

Зауважте, однак, що mailx не є частиною кожної інсталяції Linux і що існують різні версії, які ведуть себе по-різному.

Можна, звичайно, розгорнути деяке програмне забезпечення для моніторингу, наприклад, Shinken , яке має фантастичний веб-інтерфейс. відстежувати те, що вони контролювали і можуть відправляти електронні листи.

3
додано
OMG, тільки помітив, IMAP не те, що у вас є. Я обіцяю оновити відповідь для SMTP і pop. Його просто інші повідомлення "ми зробили"
додано Автор PyRulez, джерело

Це все залежить від того, що ви розумієте під "знижується", деталі того, що ви працюєте, і робити , як правило, мають значення при моніторингу.

Найбільш ретельна форма моніторингу для вашої "служби" полягає в тому, щоб мати зовнішню автоматизовану систему робити те, що роблять ваші клієнти і повідомляти вам, коли відбувається щось несподіване .

З короткого опису служби електронної пошти мій перший тест завершується:

  • Надіслати електронний лист #id через SMTP до місцевого облікового запису monitor
  • Зачекайте максимальну кількість секунд, які потрібно зробити.
  • Перевірте для електронної пошти #id @ монітор на сервері POP.

Це одна перевірка від зовнішнього монітора хост збирає близько 99% проблем, які можуть виникнути в простій системі електронної пошти.

Ці служби моніторингу служб або транзакцій, як правило, є спеціальними сценаріями, написаними на зразок ruby , Python або Perl які мають модулі для легкої реалізації таких речей, як SMTP або POP програмно. Сценарії, як правило, підключаються до моніторингового рішення, але навіть запуск простої електронної пошти або SMS через шлюз із завдання cron вистачить, якщо ви хочете щось просте. Якщо ви платите за моніторингове рішення, ви зазвичай отримуватимете спроби дизайнера графічного інтерфейсу для одного типу монітора.

Звичайно, в реальному світі це швидко ускладнюється. Можна запропонувати безпечні порти для протоколів POP і SMTP, які потребують іншої перевірки. Можливо, IMAP додається з трохи Carddav і Caldav, ви можете мати послуги на декількох хостах.

Що таке загальна перевірка сервісу, як зазначено вище, вам не легко сказати: де проблема полягає в тому, що існує проблема десь .

Моніторинг нижнього рівня

Здійснюючи моніторинг окремих компонентів сервісу, ви, в основному, полегшуєте виявлення (або передбачення) того, де проблема полягає в моніторингу, перш ніж виконувати будь-яку роботу. Цей тип моніторингу компонентів - це такі системи, як Nagios , Zabbix або великі, такі як Tivoli Monitoring добре.

Це може бути постійно розширюється дерево речей, залежно від того, наскільки детально ви зробите це і знову, наскільки складною є система, яка підтримує вашу "службу"

"Ваша поштова служба" залежить від

Services:     POP:110 SMTP:25
Application:  devmail
OS:           linux Z
Host:         server Y 
  Components:   diskA diskB cpu1 cpu2  memory          
Ntwork:      ethernetA, Switch B, Router C, Firewall X

Кожен компонент має показники або стан, про який можна повідомити.

Зовні

Service: 
  POP service   - Are we accepting connections on 110,995
  SMTP service  - Are we accepting connections on 25,587

Локально

Application: 
  devmail process(es) (is it running, memory, cpu, handles, io)
  JMX parameters of the java process (memory, threads, performance, garbage collection)
OS: 
  Disk, Memory, Cpu, IO

etc...

Що робити, якщо хост моніторингу знизиться? Або це просто мережа між службою та монітором.

It's generally good to run the service checks from two (or more) external hosts which are as close to where the clients are coming from (without impacting your monitoring). Then also run the checks Локально on the host or at least from local network. This way you get a better idea of most network based problems.

  • Якщо один зовнішній клієнт виходить з ладу, можливо, зовнішня мережа.
  • Якщо локальний клієнт працює, але всі зовнішні клієнти не працюють, можливо, локальну мережу.
  • Якщо всі клієнти не працюють, можливо, місцеві проблеми.

Я бачу, що багато людей прагнуть побудувати свої рішення для моніторингу неправильно. Вони придумали багато системних показників нижнього рівня, а 1000-е моніторів та рівнів, які вони вважають доречними для сигналізації, коли ніхто, якщо це дійсно важливо. Я маю на увазі, що вони приємні для аналізу та керування потужністю, ви можете зробити деякі шикарні графіки з усіх цих значень, і вони можуть бути надзвичайно корисними, але насправді не означають багато, коли ви пропустили метрику x на рівні y, тобто ніхто не може отримати електронні листи.

2
додано

Існує безліч моніторингових програм, які можуть бути налаштовані на відправку сигналу тривоги різними способами - через SNMP-пастки, електронною поштою, SMS-повідомленнями, якщо у вас є апаратне або програмне забезпечення/підписка. Багато хто з них також можуть перезапустити сам процес, коли це необхідно.

Google для моніторів, nagios або просто "моніторингу програмного забезпечення". Крім того, https://softwarerecs.stackexchange.com/ може стати хорошим місцем для запиту рекомендацій.

1
додано

Використання nagios або моніторингу локально важко уникнути, але ви можете отримати велику другу лінію захисту, використовуючи щось подібне https://cronitor.io контролювати сам процес nagios. Налаштуйте пристосування або перевірте, щоб зробити перевірку стану здоров'я за адресою Cronitor, і ви отримаєте сповіщення, якщо перевірка стану здоров'я не буде запущена.

0
додано

Переходячи за вашими вимогами, я пропоную вам спробувати SeaLion . Це хмара заснований Linux інструмент моніторингу сервера. Установка займає всього кілька секунд, а інтерфейс користувача чистий і простий. Плюс функція оповіщення є великою. Існує функція "щоденний дайджест", яка щодня надсилає вам електронну пошту з резюме продуктивності серверів. Сподіваюся, що це допомагає.

0
додано