Linux 서비스 가동 시간 및 종료 시간을 모니터링하는 방법.
chkconfig(RHEL 6.3)를 사용하여 내 애플리케이션에 대한 서비스를 만들었습니다. 서비스가 시작되고 중지되는 시점을 모니터링하고 싶습니다.
서비스가 제공될 때 로그 파일에 기록하여 서비스를 모니터링할 수 있지만 service test start/stop
애플리케이션이 충돌하거나 비정상적으로 종료되는 경우 이를 포착하지 못합니다.
답변1
서로 다른 서버에서 많은 애플리케이션을 모니터링하려면 NagiOS를 선택하고, 특정 애플리케이션, 파일 소유권 등을 모니터링하려면 Monit을 선택하세요.
로컬 호스트에서 실행되는 데몬 프로세스 또는 유사한 프로그램을 모니터링합니다. Monit은 시스템 부팅 시 /etc/init.d/에서 시작되는 데몬과 같은 데몬을 모니터링하는 데 특히 유용합니다. 예를 들어 sendmail, sshd, apache 및 mysql이 있습니다.
많은 모니터링 시스템과 달리 Monit는 오류 조건이 발생할 때 조치를 취할 수 있습니다. 예를 들어 sendmail이 실행되지 않는 경우 Monit는 자동으로 sendmail을 다시 시작할 수 있거나 Apache가 너무 많은 리소스를 사용하는 경우(예: DoS 공격이 진행 중인 경우) Monit은 아파치를 중지하거나 다시 시작하고 경고 메시지를 보낼 수 있습니다. Monit은 또한 프로세스가 사용하는 메모리 또는 CPU 주기와 같은 프로세스 특성을 모니터링할 수 있습니다.
업데이트::구성 섹션
Monit은 aptitude 또는 apt-get을 통해 설치하는 것이 가장 쉽습니다.
sudo aptitude install monit
monit이 다운로드되면 구성 파일에 프로그램과 프로세스를 추가할 수 있습니다.
vim /etc/monit/monitrc
set daemon 3 # check services at 3-second intervals
set logfile /var/log/monit.log # you can see what monit is doing
set alert [email protected] # receive all alerts
include /etc/monit.d/* # add monit script path
그런 다음 애플리케이션에 대한 monit 스크립트를 생성하고 다음 스크립트 예제를 확인하십시오.
monit 스크립트를 생성한 /etc/monit.d/
다음 /etc/monit.d/httpd.monit
monit 서비스를 다시 로드하고 monit 로그를 확인하면 됩니다.tail -f /var/log/monit.log
아파치의 경우
check process apache with pidfile /usr/local/apache/logs/httpd.pid
start program = "/etc/init.d/httpd start" with timeout 60 seconds
stop program = "/etc/init.d/httpd stop"
if cpu > 60% for 2 cycles then alert
if cpu > 80% for 5 cycles then restart
if totalmem > 200.0 MB for 5 cycles then restart
if children > 250 then restart
if loadavg(5min) greater than 10 for 8 cycles then stop
if failed host www.tildeslash.com port 80 protocol http
and request "/monit/doc/next.php"
then restart
if failed port 443 type tcpssl protocol http
with timeout 15 seconds
then restart
if 3 restarts within 5 cycles then timeout
depends on apache_bin
group server
Safesquid 프록시의 경우
# Check if the safesquid process is running by monitoring the PID recorded in /opt/safesquid/safesquid/run/safesquid.pid
check process safesquid with pidfile /opt/safesquid/safesquid/run/safesquid.pid
group root
start program = "/etc/init.d/safesquid start"
stop program = "/etc/init.d/safesquid stop"
mode active
# If safesquid process is active it must be updating the performance log at
# /opt/safesquid/safesquid/logs/performance/performance.log every 2 seconds.
# If the file is more than 3 seconds old we definitely have a problem
check file "safesquid-PERFORMANCELOG" with path /opt/safesquid/safesquid/logs/performance/performance.log
if timestamp > 3 SECOND then alert
답변2
모니터링하려는 서비스의 pid를 알고 있다면 서버에서 특정 항목의 리소스 사용량을 추적하기 위해 얼마 전에 다음과 같이 썼습니다.
http://cognitivedissonance.ca/cogware/plog
완전히 안정적이고 매우 로우 프로파일이며 사용이 매우 간단합니다. 상단에서 볼 수 있는 내용에 대해 좀 더 자세한 버전을 보고하지만 빈도는 낮으며 로그 파일에 보고합니다. 예를 들어 프로세스를 1분마다 또는 5분마다 확인하도록 설정할 수 있습니다. 이는 이유에 대한 많은 단서를 제공하지는 않지만 중지할 수 있는 시간을 제공합니다.
답변3
댓글에서 JBoss 웹 서버를 모니터링하려고 한다고 언급하셨습니다.
모니터링 방법을 문의하셨습니다.제공하다, 귀하의 프로세스가 아닙니다. JBoss가 계속 실행 중인 경우 프로세스가 정체되어 더 이상 쿼리에 응답하지 않아도 문제가 되지 않습니다. 혹시 알고 싶으세요?서비스가 작동하지 않습니다, 단지 프로세스 종료가 아닙니다.
대규모 서비스 모니터링 패키지를 실행하고 싶지 않은 경우.나기오스또는이싱가또는자비크스또는개방형 네트워크 관리 시스템또는신켄또는제노스, 언제든지 curl
또는 같은 것을 사용하여 베팅 할 수 있습니다 wget
.
스크립트를 생성하고 이름을 지정한 다음 /root/bin/check_web
crontab에서 실행해 보겠습니다.
*/5 * * * * /root/bin/check_web http://www.example.com [email protected]
스크립트는 다음과 같습니다.
#!/bin/bash
if [[ $1 !~ ^https?://[a-z][a-z.]+ ]]; then
echo "ERROR: that doesn't look like a URL ($1)" >&2
exit 1
elif [[ $2 !~ .+@[a-z0-9.-]+ ]]; then
echo "ERROR: that doesn't look like an email address ($2)" >&2
exit 1
fi
flag="/tmp/m-${1//[^[:alnum:]:.-]/_}"
wget -O /dev/null -q "$1"
result=$?
if [[ $result -eq 0 ]]; then
if [ -f "$flag" ]; then
date | Mail -s "Clear: $1" "$2"
rm -f "$flag"
fi
else
if [ ! -f "$flag" ]; then
echo "error: $?" | Mail -s "OFFLINE: $1" "$2"
touch "$flag"
fi
fi
if
s를 중첩하면 문제가 발생할 경우 이메일 노이즈를 줄이는 데 도움이 됩니다. 문제 해결을 위해 노력하는 동안 5분마다 또 다른 알림을 받을 필요가 없습니다. 하지만 갑작스러운 재부팅이나 짧은 네트워크 중단으로 인해 문제가 발생할 경우를 대비해 백업이 완료되었다는 알림을 받을 수 있어서 좋습니다.
이와 같이 좀 더 일반적인 스크립트를 사용하면 여러 사이트를 모니터링하고 알림을 받을 이메일 수신자를 여러 명 설정할 수 있습니다.
이러한 스크립트를 몇 개 더 만들고 서비스가 완전히 오프라인인 경우 CRITICAL과 달리 느린 응답에 대한 경고를 내보내는 기능을 추가한 다음 웹 프런트엔드를 제공하여 개별 호스트의 상태를 검색 및 관리하고 실행되는 스크립트를 만듭니다. cron 전용 데몬 대신 Nagios가 있습니다. :-)
답변4
Nagios 운영을 고려해 보셨나요?