Можно использовать --fileinput
опция iperf
отправить определенные данные. Если Вы не захотите использовать iperf, то это станет более сложным. Можно использовать sar
измерить сетевую пропускную способность, но не дрожание. Если Вы хотите измерить дрожание сами, можно посмотреть на RFC 3393.
Если Вы хотите контролировать многих, приложение на другом сервере затем Идет для NagiOS, если Вы хотите контролировать определенное приложение, принадлежность файла, что-либо затем Идет для Monit.
Контролировать процессы демона или подобные программы, работающие localhost. Monit конкретен полезный для контроля процессов демона, таких как запущенные во время начальной загрузки системы с/etc/init.d/. Например, sendmail, sshd, апач и mysql.
В различии ко многим системам контроля может действовать Monit, если ошибочная ситуация должна произойти, например; если sendmail не работает, Monit может запустить sendmail снова автоматически или если апач использует слишком много ресурсы (например, если DoS-атака происходит), Monit может остановить или перезапустить апача и отправить Вам аварийное сообщение. Monit может также контролировать характеристики процесса, такой как; сколько памяти или CPU циклически повторяется, процесс использует
Обновление:: часть конфигурации
Monit является самым легким установить через способность, или склонный - добираются
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 sysadm@foo.bar # 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
Для Apache
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
Если Вы знаете pid сервиса, Вы хотите контролируемый, я записал это некоторое время назад для отслеживания использования ресурсов определенных вещей на сервере:
http://cognitivedissonance.ca/cogware/plog
Это абсолютно стабильно, очень скромно, и довольно просто использовать. Это сообщает о немного более подробной версии того, что Вы могли бы видеть в вершине, но при нижней частоте и отчетах файлу журнала. Так, например, Вы могли настроить его для проверки процесса каждую минуту или пять минут - который, вероятно, не даст Вам много ключа к разгадке относительно причины, но это даст Вам окно для того, когда это остановилось.
В комментариях Вы упомянули, что пытаетесь контролировать веб-сервер JBoss.
Вы спросили, как контролировать Ваше обслуживание, не Ваш процесс. Не имеет значения, если JBoss все еще работает, если процесс втиснул и не отвечает на запросы еще. Вы хотите знать, не работает ли сервис, не только, если процесс умирает.
Если Вы не хотите выполнять крупномасштабный сервис, контролирующий пакет как Nagios или Icinga или Zabbix или OpenNMS или Shinken или Zenoss, можно всегда плыть на плоскодонке с помощью чего-то как curl
или wget
.
Создайте сценарий, давайте назовем его /root/bin/check_web
, и выполненный это в crontab:
*/5 * * * * /root/bin/check_web http://www.example.com myaddress@example.net
Сценарий мог посмотреть что-то как:
#!/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 минут, в то время как Вы работаете над решением проблемы. Но хорошо получить уведомление, которое возвратили вещи, в случае, если проблема происходит от спонтанной перезагрузки или переходного сетевого отключения электричества.
С немного универсальным сценарием как это можно контролировать несколько сайтов и настроить несколько почтовых получателей для уведомления.
Создайте еще несколько из этих сценариев и возможно добавьте функциональность к предупреждениям о проблемах для медленных ответов, которые отличаются от CRITICALs, когда сервис идет офлайн полностью, затем обеспечьте веб-фронтэнд, чтобы просмотреть и управлять состоянием различных хостов и создать преданного демона, который выполняет их вместо крона, и у Вас есть Nagios.:-)