구함: 서버의 프로세스를 원격으로 모니터링하는 간단한 방법

구함: 서버의 프로세스를 원격으로 모니터링하는 간단한 방법

Java 프로세스를 실행하는 클라우드 기반 서버(davmail이라는 POP/SMTP 서버, 세부 정보는 중요하지 않음)가 있습니다.

Java 프로세스의 상태를 원격으로 모니터링하는 가장 쉬운 방법은 무엇입니까? 하락 여부와 시기를 알아야 합니다. SSH 세션을 열고 로그를 추적할 수도 있지만 더 우아한 방법이 있나요?

어쩌면 웹 서버를 설치하고 동일한 서버에서 일부 모니터링 소프트웨어를 실행해야 할 수도 있습니다. 아니면 내 로컬 컴퓨터(Mac)에서 실행할 수 있는 클라이언트 프로그램이 있고 서버의 일부 cron 작업이 Java 프로세스가 중지될 때마다 해당 프로그램에 경고를 보낼 수 있습니까?

답변1

음, 언제든지 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이전에 로그인하지 않은 경우 서버가 연결을 종료하도록 하는 매우 간단한 IMAP 명령입니다.
  • ncTCP 연결을 열고 STDIN 및 STDOUT을 소켓에 연결하는 도구입니다.

결합된 결과는 IMAP 서버에 대한 연결을 설정하고 "완료되었습니다"라고 알려줍니다. IMAP 서버가 실행 중이면 이 명령을 인식하고 TCP 연결을 닫고 nc정상적으로 종료됩니다.

서버가 IMAP 명령을 처리하지 않아 TCP 연결이 설정되지 않거나 시간 초과되는 등 문제가 발생하면 분명히 IMAP 서버를 사용할 수 없습니다. 이 경우 알림이 필요하며 nc이 경우 항상 예외가 발생합니다.

||nc, 비정상적으로 종료 되면 { ... }그 안의 모든 항목이 실행됩니다. 여기에 제공한 샘플 명령은 mailx다음 명령을 사용하여 이메일을 보냅니다.[이메일 보호됨]주제는 "적색경보! 적색경보! 이건 훈련이 아니다"이고 내용은 "서버가 다운됐다"이다.

그러나 mailx는 모든 Linux 설치의 일부가 아니며 다르게 동작하는 여러 버전이 있다는 점에 유의하십시오.

물론 다음과 같은 일부 모니터링 소프트웨어를 배포할 수도 있습니다.신켄, 모니터링하는 내용을 추적하고 이메일을 보낼 수 있는 멋진 웹 프런트 엔드가 있습니다.

답변2

그것은 모두 "드롭"이 의미하는 바, 실행 및 수행 중인 작업에 대한 세부 사항에 따라 달라집니다.하다모니터링할 때도 중요합니다…

"서비스"를 모니터링하는 가장 철저한 형태는 외부 자동화 시스템을 갖추는 것입니다.고객이 하는 일을 하라그리고 너한테 보고해예상치 못한 일발생하다.

귀하의 이메일 서비스에 대한 간략한 설명을 바탕으로 첫 번째 엔드투엔드 테스트는 다음과 같습니다.

  • SMTP를 통해 #id로컬 monitor계정 으로 이메일 보내기
  • 원하는 최대 시간(초) 동안 기다리십시오.
  • POP 서버에서 @ 이메일을 확인하세요 #id.monitor

외부 모니터링 호스트의 한 번의 확인으로 간단한 이메일 시스템에서 발생할 수 있는 문제의 약 99%를 찾아낼 수 있습니다.

이러한 서비스 또는 트랜잭션 모니터는 유사한 방식으로 작성된 사용자 정의 스크립트인 경향이 있습니다.루비,파이썬또는진주다음과 같은 것을 쉽게 구현할 수 있는 모듈이 있습니다.메일 전송 프로토콜또는대중 음악프로그래밍 방식으로. 그런 다음 이러한 스크립트는 일반적으로 모니터링 솔루션에 연결되지만 간단한 것을 원한다면 cron 작업 게이트웨이를 통해 간단한 이메일이나 SMS를 트리거하는 것만으로도 충분할 수 있습니다. 모니터링 솔루션을 구입하는 경우 일반적으로 GUI 디자이너와 동일한 유형의 모니터를 사용하려고 합니다.

물론 현실 세계에서는 이것이 빠르게 더 복잡해집니다. 다시 확인해야 하는 POP 및 SMTP용 보안 포트를 제공할 수 있습니다. IMAP에 일부 Carddav 및 Caldav가 추가되어 여러 호스트에 서비스가 있을 수도 있습니다.

위와 같은 전반적인 서비스 점검으로 쉽게 알 수 없는 것은 무엇입니까?어디문제는 문제가 있을 뿐이라는 거야어딘가에.

낮은 수준의 모니터링

서비스의 개별 구성 요소를 모니터링하면 기본적으로 발품 작업을 수행하기 전에 모니터링을 통해 문제 영역을 더 쉽게 식별(또는 예측)할 수 있습니다. 이러한 유형의 구성 요소 모니터링은 시스템과 정확히 같습니다.나기오스,자비크스아니면 이렇게 큰 일이라도티볼리 감시잘해요.

이는 귀하가 얼마나 자세하게 작성하고 귀하의 "서비스"를 지원하는 시스템이 얼마나 복잡한지에 따라 계속해서 확장되는 트리가 될 수 있습니다.

"귀하의 메일 서비스"는 다음 사항에 따라 다릅니다.

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...

모니터링 호스트가 다운되면 어떻게 해야 하나요? 아니면 서비스와 모니터 사이의 네트워크일 뿐입니다.

일반적으로 모니터링에 영향을 주지 않고 클라이언트 원본에 최대한 가까운 두 개 이상의 외부 호스트에서 서비스 검사를 실행하는 것이 가장 좋습니다. 그런 다음 호스트에서 로컬로 또는 적어도 로컬 네트워크에서 검사를 실행하십시오. 이렇게 하면 대부분의 네트워크 기반 문제를 더 잘 이해할 수 있습니다.

  • 외부 클라이언트에 오류가 발생하면 외부 네트워크가 다운될 수 있습니다.
  • 로컬 클라이언트는 제대로 작동하지만 모든 외부 클라이언트가 실패하는 경우 로컬 네트워크일 수 있습니다.
  • 모든 클라이언트에 오류가 발생하면 로컬 문제일 수 있습니다.

많은 사람들이 모니터링 솔루션을 잘못된 방식으로 구축하는 경향이 있는 것으로 나타났습니다. 그들은 경고하기에 적절하다고 생각하는 많은 하위 수준 시스템 표시기와 1000개의 모니터 및 수준을 생각해 냈지만 그것이 정말로 중요하다면 어떤 경고도 없었습니다. 즉, 분석 및 용량 관리에 적합하고 모든 값에서 멋진 그래프를 만들 수 있으며 매우 유용합니다. 하지만 레벨 y에서 측정항목 x를 놓치면 아무도 이를 선택할 수 없다는 의미입니다. 이메일은 실제로 별 의미가 없습니다.

답변3

SNMP 트랩, 이메일, SMS(하드웨어 또는 소프트웨어/구독이 있는 경우)를 통해 다양한 방법으로 경고를 보내도록 구성할 수 있는 모니터링 애플리케이션이 많이 있습니다. 필요한 경우 이들 중 다수는 프로세스 자체를 다시 시작할 수도 있습니다.

Google에서는 monit, nagios 또는 "모니터링 소프트웨어"를 검색합니다. 반품https://softwarerecs.stackexchange.com/조언을 구하기에 좋은 곳일 수도 있습니다.

답변4

한번 시도해 보시길 권합니다바다사자. 클라우드 기반 Linux 서버 모니터링 도구입니다. 설치는 단 몇 초밖에 걸리지 않으며 사용자 인터페이스는 깔끔하고 간단합니다. 게다가 알림 기능도 훌륭합니다. 서버 성능 요약이 포함된 예약된 이메일을 매일 보내는 "일일 요약" 기능이 있습니다.

관련 정보