Возможно, установив Solaris, вы задаетесь вопросом - как бы настроить мониторинг производительности системы с помощью графиков? Я решил посмотреть, какие возможности предоставляет нам Solaris в этом случае. Начнем с простого - прежде всего на глаза мне попался perl-овский модуль StatsView-1.4. Модуль староват, но на десятке тоже работает. В нем есть и GUI, его можно настроить для сбора информации от различных утилит, но для примера мы возьмем скрипт sargif из examples и попробуем собрать статистику sar. Для этого посмотрим, работает ли наш sar в кроне, на десятке crontab для пользователя sys по умолчанию закомментирован. Если да, то убираем комментарии и указываем sar собирать данные, скажем, каждые 5 минут. Должно получиться что-то вроде этого:
# crontab -l sys
#ident "@(#)sys 1.5 92/07/14 SMI" /* SVr4.0 1.2 */
#
# The sys crontab should be used to do performance collection. See cron
# and performance manual pages for details on startup.
#
# 0 * * * 0-6 /usr/lib/sa/sa1
#20,40 8-17 * * 1-5 /usr/lib/sa/sa1
0,5,10,15,20,25,30,35,40,45,50,55 * * * * /usr/lib/sa/sa1g
#5 18 * * 1-5 /usr/lib/sa/sa2 -s 8:00 -e 18:01 -i 1200 -A
Но для нашего скрипта мы должны заставить
sar создавать текстовый лог-файл, поэтому сначала дадим команду для получения детальной статистики за день:
В директории
/var/adm/sa должен появится файл
sar[дата], то есть, если сегодня 21 июня, файл будет называться
sar21. ПУть к нему мы и пропишем в скрипте:
my $sar = "/var/adm/sa/sar21";
Не перепутайте
sar21 c
sa21(у него другой формат). Запускаем скрипт, который создает 4
gif-а:
sar_blks.gif, sar_busy.gif, sar_idle.gif, sar_rw.gif. Вот один из них:
Неплохо, если почитать документацию, то можно заставить StatsView получать вывод и от других stat-утилит - iostat, mpstat и др.
Но мы пойдем дальше. График красивый, но давайте нарисуем статистику
sar с помощью утилиты RRDtool. Установить ее можно и с
sunfreeware и с
blastwave, кому как нравится. После скачиваем
отсюда скрипт
sar2rrd.pl. Прописываем в нем путь к
rrdtool, директории, где будут созданы базы и рисунки и запускаем:
# ./sar2rrd-2.0b.pl -f /var/adm/sa/sar21
Скрипт создаст около двух десятков графиков в формате
png, например вот такой:
Покрасивее, чем предыдущий, не правда ли? Можно поставить скрипт в крон, не забыв предварительно каждый раз обновлять лог-файл с помощью
sa2 -A и выкладывать графики куда-нибудь в
htdocs, для удобного просмотра через броузер. Я, например, чтобы не прописывать все рисунки в
html, использую
cgi-скрипт, который сам создает страницу, читая все рисунки в директории, например:
#!/usr/bin/perl
use CGI qw (:standard);
use CGI qw (:netscape);
$stime = localtime (time);
split(" ",$stime);
$dt=$_[1]." ".$_[2]." ".$_[4];
print "Content-type: text/html\n\n";
...
opendir(DIR,"\/var/apache/htdocs/rrd"); # здесь лежат рисунки
@pics = grep { /\.png$/ } readdir(DIR);
print "Server activity statistic for $dt<br>";
foreach my $pic (sort { $a cmp $b } @pics){
print "<img src=http://server/rrd/$pic><br>;";
}
...
Тоже неплохо, но в данном случае сбор статистики ограничивается только утилитой
sar. Вот мы и подошли к главному герою наших исследований - программе
Orca, которую хорошо знают администраторы со стажем.
Для сбора информации о системе будем использовать
Se Toolkit - качаем с
sourceforge пакет
RICHPse-3.4.1.pkg.gz, распаковываем и ставим - он будет располагаться в директории /opt//RICHPse.
После этого устанавливаем 4 модуля
perl -
Data::Dumper, Digest::MD5, Math::IntervalSearch и
Storable, и ставим последний релиз
Orca c
www.orcaware.com/orca/pub/:
# tar zxf orca-0.27.tar.gz
# cd orca-0.27
#./configure --with-html-dir=/var/apache/htdocs/orca \
--with-ncsa-log=/var/apache/logs/access_log
# make
# make install
# make orcallator_run_at_boot
После читаем документацию и идем в директорию
/usr/local/lib, где редактируем файл
orcallator.se, если нужно (я например, поставил нули для некоторых директив
WATCH, ибо
nfs у меня на сервере уже не используется, стало быть следить за ним нет необходимости).
Orcallator по умолчанию следит за:
* System Overview
* Average # Processes in Run Queue (Load Average)
* CPU Usage
* Processes in Run Queue/Waiting/Swapped
* New Process Spawn Rate
* Number of System & Web Server Processes
* Number of Web Server Processes
* Web Server Hit Rate
* Web Server File Size
* Web Server Data Transfer Rate
* Web Server HTTP Error Rate
* Interface Bits Per Second: hme0
* Interface Packets Per Second: hme0
* Interface Errors Per Second: hme0
* Interface Deferred Packet Rate
* Interface Collisions
* Interface Nocanput Rate
* TCP Bits Per Second
* TCP Segments Per Second
* TCP Retransmission & Duplicate Received Percentage
* TCP New Connection Rate
* TCP Number Open Connections
* TCP Reset Rate
* TCP Attempt Fail Rate
* TCP Listen Drop Rate
* Sleeps on Mutex Rate
* NFS Server Call Rate
* NFS Server Call Distribution
* NFS Client Call Rate
* NFS Timeouts & Bad Transmits Rate
* Disk System Wide Reads/Writes Per Second
* Disk System Wide Transfer Rate
* Disk Run Percent
* Disk Space Percent Usage
* Disk Inode Percent Usage
* Cache Hit Percentages
* Cache Reference Rate
* Cache Inode Steal Rate
* Memory Free
* Memory Page Scan Rate
* Memory Page Residence Time
* Memory Available Swap Space
* Memory Page Usage
* Memory Pages Locked & IO
После правим файл
orcallator.cfg - отмечаем, какие графики создавать, а для
find_files дописываем название хоста YOUR_HOST:
/usr/local/var/orca/orcallator/YOUR_HOST(.*)/(?:(?:orcallator).........
После запуска монитора Se Toolkit командой
start_orcallator в этой директории появится файл статистики за текущую дату -
orcallator-2007-06-21-000. Теперь можно запустить orca, если хотите, то с ключиком
-v (verbose):
# /usr/local/bin/orca -v -once /usr/local/lib/orcallator.cfg
Orca version 0.27 using RRDs version 1.000401 at Thu Jun 21 11:38:16 2007.
Loading state from `/usr/local/var/orca/rrd/orcallator/orca.state'.
Creating orca_logo.gif.
Creating rrdtool_logo.gif.
Creating rothschild_image_logo.png.
Finding files and setting up data structures at Thu Jun 21 11:38:16 2007.
RSS VSZ %MEM TIME USER PID COMMAND
7408 8440 0.2 00:01 root 19959 /usr/bin/perl
Current running time is 0:02 minutes.
Loading new data from group orcallator.
Read 1 data point from `/usr/local/var/orca/orcallator/YOUR_HOST/orcallator-2007-06-21-000'.
Flushing new data and updating PNGs.
Saving state into `/usr/local/var/orca/rrd/orcallator/orca.state'.
Updating PNGs.
Creating HTML files in `/var/apache/htdocs/orca/orcallator/'.
RSS VSZ %MEM TIME USER PID COMMAND
12000 12664 0.3 00:12 root 19959 /usr/bin/perl
Current running time is 0:16 minutes.
Orca has completed.
#
Заходим броузером по адресу http://your_host/orca/orcallator/ и видим страницу с линками на кучу всевозможных графиков, которые будут собираться ежечасно, ежедневно, еженедельно и т.д. А выглядят они вот так:
Или так:
Вот мы и получили отличный графический монитор производительности системы. Осталось скопировать файл
S99orcallator из
/usr/local/bin в /etc/rc3.d или создать для него
smf-службу и поставить в крон команду
/usr/local/bin/orca -once /usr/local/lib/orcallator.cfg (Без -once она работает как демон, но у меня она упала один раз, поэтому я поставил ее в
crontab).
Orca можно настроить под себя, запустив монитор различных служб типа
radius, mail, named и т.д. Мне еще не понравился слишком крупный шрифт на страницах и я добавил в шаблон
/usr/local/lib/Orca/HTMLFile.pm строку для использования
css, после чего страницы приняли вполне современный вид.