В очередной версии сервера SMPP озадачился вопросом, как бы упростить себе мониторинг демона подручными средствами. Усугубилось это тем, что компоненты сервера стали форкаться из одного скрипта и просто по результату запуска команды /bin/ps ax нельзя было определить, какой из процессов чем занимается.
Тут то мне и пришла в голову мысль, что тот же PostgreSQL позволяет за счет модификации proctitle проводить предварительную диагностику с помощью обычных top или ps. Как минимум, можно выяснить, с какой базой работает процесс, убивающий сервер.
Поиск по CPAN привел к модулю Sys::Proctitle, предоставляющему API к информации об имени процесса в таблице процессов. И теперь кусок кода ниже позволяет сразу выяснить, сколько ESME подключены к нашему SMPP-серверу:
use Sys::Proctitle qw/:all/;
...
setproctitle("smppd - SMPP handler ($clients_num connections)");
Как можно заметить, вывод команды ps стал более информативным:
$ /bin/ps ax | grep smp 23803 pts/4 S+ 0:00 smppd - SMPP handler (2 connections) 23804 pts/4 S+ 0:00 smppd - queue handler (IDLE)