Мы — долго запрягаем, быстро ездим, и сильно тормозим.
www.lissyara.su —> статьи —> FreeBSD —> программы —> Установка и использование Zenoss на FreeBSD 7.2

Установка и использование Zenoss на FreeBSD 7.2

Автор: VolanD.


Zenoss – это свободно распространяемая платформа для мониторинга различных видов сетевых устройств, выпускаемая под лицензией GNU версии 2. Кроме этого есть коммерческие версии (Professional и Enterprise), обладающие большим функционалом и для которых осуществляется техническая поддержка.

Когда я увидел Zenoss  впервые, был удивлен. До этого встречался только с самописной системой, которая пинговала сетевые устройства и слала SMS-сообщения на телефоны сотрудников. Zenoss же позволяет наблюдать состояние портов коммутаторов, графики загрузки каналов, а на серверах отслеживать  состояние процессов, загрузку жестких дисков и т.п. Кроме того, так как Zenoss нет в системе портов (а я до этого ставил весь софт только из портов) я решил, что будет полезным опытом «поплясать с бубном» и собрать что-нибудь из исходников :)

Статья будет иметь пошаговый характер. Я постараюсь подробно описать процесс сборки, способы исправления ошибок, а в конце приведу простые примеры мониторинга и примитивную настройку оповещения.

Итак, ставим Zenoss. Собирать будем на:
# uname -a
FreeBSD ns.home 7.2-RELEASE FreeBSD 7.2-RELEASE #0: Fri May  1 08:49:13 UTC 2009
root@walker.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC  i386


На первых шагах можно частично следовать инструкции от разработчика [1]. Пока все действия выполняем из-под root’а:

Шаг 1. Вставляем procfs в /etc/fstab:
# ee /etc/fstab
proc     /proc     procfs     rw     0     0

Перезагружаемся

Шаг 2. Ставим необходимые пакеты:
# pkg_add -r bash && pkg_add -r gmake && pkg_add -r autoconf262 && pkg_add -r sudo 
&& pkg_add -r python && pkg_add -r mysql50-server && pkg_add -r net-snmp 
&& pkg_add -r swig && pkg_add -r subversion && pkg_add -r bazaar-ng

После завершения установки должно получиться примерно следующее (у меня сборка происходит на чистой системе):
# pkg_info
apr-gdbm-db42-1.3.3.1.3.4_1 Apache Portability Library
autoconf-2.62       Automatically configure source code on many Un*x platforms
autoconf-wrapper-20071109 Wrapper script for GNU autoconf
bash-4.0.10_2       The GNU Project's Bourne Again SHell
bazaar-ng-1.13_1    Distributed version control system by Canonical
db42-4.2.52_5       The Berkeley DB package, revision 4.2
expat-2.0.1         XML 1.0 parser written in C
gdbm-1.8.3_3        The GNU database manager
gettext-0.17_1      GNU gettext package
gmake-3.81_3        GNU version of 'make' utility
libgmp-4.2.4        A free library for arbitrary precision arithmetic
libiconv-1.11_1     A character set conversion library
m4-1.4.12,1         GNU m4
mysql-client-5.0.77_1 Multithreaded SQL database (client)
mysql-server-5.0.77_1 Multithreaded SQL database (server)
neon28-0.28.3       An HTTP and WebDAV client library for Unix systems
net-snmp-5.4.2.1_3  An extendable SNMP implementation
perl-5.8.9_2        Practical Extraction and Report Language
pkg-config-0.23_1   A utility to retrieve information about installed libraries
py25-paramiko-1.7.4 A python library for making SSH2 connections
py25-pycrypto-2.0.1_2 The Python Cryptography Toolkit
python-2.5,2        The "meta-port" for the default version of Python interpret
python25-2.5.4_1    An interpreted object-oriented programming language
sqlite3-3.6.11      An SQL database engine in a C library
subversion-1.6.0_2  Version control system
sudo-1.6.9.20       Allow others to run commands as root
swig-1.3.39         Simplified Wrapper and Interface Generator


Шаг 3. Делаем симлинк на bash:
# ln -s /usr/local/bin/bash /bin


Шаг 4. Добавляем пользователя zenoss в систему:
# adduser
Username: zenoss
Full name: zenoss
Uid (Leave empty for default):
Login group [zenoss]:
Login group is zenoss. Invite zenoss into other groups? []:wheel
Login class [default]:
Shell (sh csh tcsh bash rbash nologin) [sh]: bash
Home directory [/home/zenoss]:
Home directory permissions (Leave empty for default):
Use password-based authentication? [yes]:
Use an empty password? (yes/no) [no]:
Use a random password? (yes/no) [no]:
Enter password:
Enter password again:
Lock out the account after creation? [no]:
Username   : zenoss
Password   : *****
Full Name  : zenoss
Uid        : 1001
Class      :
Groups     : zenoss
Home       : /home/zenoss
Home Mode  :
Shell      : /usr/local/bin/bash
Locked     : no
OK? (yes/no): yes
adduser: INFO: Successfully added (zenoss) to the user database.
Add another user? (yes/no): no
Goodbye!


Шаг 5. Конфигурируем sudo. Для этого открываем sudoers:
#ee /usr/local/etc/sudoers

Раскомментируем строку
#%wheel ALL=(ALL) ALL


Шаг 6. Создаем новый файл alloca.h в /usr/include:
# ee /usr/include/alloca.h

Вставляем в него следующие строки и выходим с сохранением:
#ifndef _ALLOCA_H
/* #include <stdlib/alloca.h> */
#undef  __alloca
/* Now define the internal interfaces.  */
extern void *__alloca (size_t __size);
#ifdef  __GNUC__
# define __alloca(size) __builtin_alloca (size)
#endif /* GCC.  */
#endif


Шаг 7. Добавляем следующую строку в rc.conf, сохраняем и перезагружаемся:
mysql_enable="YES"


Шаг 8. Создаем каталог для установки и назначаем владельца:
# mkdir /usr/local/zenoss
# chown -R zenoss /usr/local/zenoss


Шаг 9. Скачиваем исходники и распаковываем (для этого удобнее зайти под пользователем zenoss):
[zenoss@ ~]$ fetch \
http://downloads.sourceforge.net/sourceforge/zenoss/zenoss-2.4.2.tar.gz
[zenoss@ ~]$ ls
zenoss-2.4.2.tar.gz
[zenoss@ ~]$ tar xvf zenoss-2.4.2.tar.gz


Шаг 10. Правим файл GNUmakefile:
[zenoss@ ~/zenoss-2.4.2]$ ee GNUmakefile

Идем на 63 строку и заменяем
NAGIOSLIBS=-ldl

на
NAGIOSLIBS=-lc


По инструкции на данном шаге можно приступить к процессу сборки. Но при этом у меня появлялись ошибки, приходилось их править, после чего запускать установку снова. Поэтому привожу тексты ошибок и как их избежать:

Ошибка 1. Текст ошибки:
In file included from ./libxml/parser.h:797,
from ./libxml/globals.h:19,
from ./libxml/threads.h:36,
from ./libxml/xmlmemory.h:217,
from ./libxml/tree.h:1205,
from ./libcroco/cr-sel-eng.h:34,
from term-styled-ostream.oo.c:26:
./libxml/encoding.h:29:19: error: iconv.h: No such file or directory
In file included from ./libxml/parser.h:797,
from ./libxml/globals.h:19,
from ./libxml/threads.h:36,
from ./libxml/xmlmemory.h:217,
from ./libxml/tree.h:1205,
from ./libcroco/cr-sel-eng.h:34,
from term-styled-ostream.oo.c:26:
./libxml/encoding.h:137: error: expected specifier-qualifier-list before 'iconv_t'
*** Error code 1

Stop in /usr/home/zenoss/zenoss-2.4.2/build/gettext-0.17/gettext-tools/gnulib-lib.
*** Error code 1

Stop in /usr/home/zenoss/zenoss-2.4.2/build/gettext-0.17/gettext-tools/gnulib-lib.
*** Error code 1

Stop in /usr/home/zenoss/zenoss-2.4.2/build/gettext-0.17/gettext-tools.
*** Error code 1

Stop in /usr/home/zenoss/zenoss-2.4.2/build/gettext-0.17/gettext-tools.
*** Error code 1

Stop in /usr/home/zenoss/zenoss-2.4.2/build/gettext-0.17.
gmake: *** [/home/zenoss/zenoss-2.4.2/build/rrddeps-build] Error 1
unable to build zenoss and prerequisites, see zenbuild.log

Решение. Качаем libiconv-1.13.tar.gz :
[zenoss@ ./]$ cd rrddeps
[zenoss@ ./rrddeps]$ fetch http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.tar.gz
libiconv-1.13.tar.gz                          100% of 4620 kB  141 kBps 00m00s

После этого идем в в rrddeps.sh:
[zenoss@ ~/zenoss-2.4.2/rrddeps]$ ee ../rrddeps.sh

и добавляем следующее после 65 строки (раздел зависимостей):
dep=libiconv
confopts=''
patch=""
build_dep


Ошибка 2. Текст ошибки:
config.status: executing libtool commands
gmake[1]: Nothing to be done for `unix'.
gmake[1]: Leaving directory `/usr/home/zenoss/zenoss-2.4.2/build/freetype-2.3.7'
"./builds/toplevel.mk", line 50: Need an operator
"./builds/toplevel.mk", line 52: Missing dependency operator
"./builds/toplevel.mk", line 54: Need an operator
"./builds/toplevel.mk", line 55: Need an operator
"./builds/toplevel.mk", line 64: Could not find ./objs/modules.cfg
"./builds/toplevel.mk", line 86: Missing dependency operator
"./builds/toplevel.mk", line 88: Need an operator
Error expanding embedded variable.
gmake: *** [/home/zenoss/zenoss-2.4.2/build/rrddeps-build] Error 2
unable to build zenoss and prerequisites, see zenbuild.log

Решение. Требуется исправить функцию build_dep() в файле rrddeps.sh:
[zenoss@ ~/zenoss-2.4.2]$ ee rrddeps.sh

Должно получиться следующее:
build_dep () { 
if [ -e $BUILD_DIR/$dep-* ] 
then 
echo "Skipping $dep..." 
else 
tar xvzf $RRDDEPS_DIR/$dep-*.tar.gz || exit $? 
if [ -n "$patch" ] 
then 
patch -p0 <$RRDDEPS_DIR/$patch || exit $? 
fi 
cd $dep-* || exit $? 
if [ "$dep" == "freetype" ] 
then 
GNUMAKE=gmake ./configure --prefix=$ZENHOME $confopts || exit $? 
gmake || exit $? 
gmake install DESTDIR="" || exit $? 
if [ -n "$DESTDIR" ] && [ "$DESTDIR" != "/" ] 
then 
gmake install DESTDIR="$DESTDIR" || exit $? 
fi 
else 
./configure --prefix=$ZENHOME $confopts || exit $? 
make || exit $? 
make install DESTDIR="" || exit $? 
if [ -n "$DESTDIR" ] && [ "$DESTDIR" != "/" ] 
then 
make install DESTDIR="$DESTDIR" || exit $? 
fi 
fi 
cd .. 
fi 
}


Ошибка 3. Текст ошибки:
checking for iconv_open in -liconv... no configure: error: *** No iconv() implementation found in C library or libiconv gmake: *** [/home/zenoss/zenoss-2.4.2/build/rrddeps-build] Error 1 unable to build zenoss and prerequisites, see zenbuild.log

Решение. Долго пытался найти решение этой ошибки, наконец, собрал, написав при этом новую билд функцию для зависимости. Но в последствии в сети нашел более простое решение, проверил - собирается:
Добавляем следующие строки в rrddeps.sh до функции build_dep:
export USE_GETTEXT="yes"
export CPPFLAGS+=" -I${INSTALL_DIR}/include"
export LDFLAGS+=" -L${INSTALL_DIR}/lib"

export GNU_CONFIGURE="yes"
export CONFIGURE_ENV=\
"CPPFLAGS=-I/usr/local/zenoss/include LDFLAGS=-L/usr/local/zenoss/lib"


Ошибка 4. Текст ошибки:
configuring: /home/zenoss/zenoss-2.4.2/build/rrdtool-1.3.5/Makefile
gmake: *** [/home/zenoss/zenoss-2.4.2/build/rrdtool-1.3.5/Makefile] Error 1
unable to build zenoss and prerequisites, see zenbuild.log

Решение. Делаем симлинк:
[ ~/zenoss-2.4.2]$ sudo ln -s /usr/local/zenoss/bin/pkg-config /usr/local/bin/


Ошибка 5. Текст ошибки:
gmake: *** [wmi-install] Error 2
unable to build zenoss and prerequisites, see zenbuild.log

Решение. Тут есть один момент. Директория wmi-1.2.6 распаковывается в момент сборки, а в ней как раз находится тот файл, который нужно поправить. Пытался распаковать вручную, внести коррективы и «подсунуть» в нужный каталог, но не получилось - установка все равно закончилась с ошибкой. Я думаю можно внести изменения в архив до начала сборки, но мне не захотелось возиться с архивом, поэтому я решил исправить все что можно, запустить процесс установки, исправить данную ошибку, а потом запустить сборку повторно.
Файл, который будем править должен находиться по следующему пути:
[zenoss@ ~/zenoss-2.4.2]$ ee \
build/wmi-1.2.6/Samba/source/lib/replace/autoconf-2.60.m4

В нем нужно закомментировать 174-176 строки:
#  AC_REQUIRE([AC_GNU_SOURCE])
#  AC_REQUIRE([AC_AIX])
#  AC_REQUIRE([AC_MINIX])


Теперь о том, как запустить сборку. Делается очень просто:
[zenoss@ ~]$ cd zenoss-2.4.2          
[zenoss@ ~/zenoss-2.4.2]$ ./install.sh

После чего нас попросят ввести параметры MySQL:
This installer actually builds Zenoss.
For a simpler installation try the VMPlayer Appliance image,
or use RPMs for Redhat based systems.

Building...

MySQL server hostname [localhost]:
MySQL server root username [root]:
MySQL server root password []:
MySQL event database name [events]:
MySQL username for Zenoss events database [zenoss]:
MySQL password for zenoss [zenoss]:
MySQL server port [3306]:

Далее собственно идет процесс сборки. На Celeron 1.7 GHz и 128 MB памяти установка занимает примерно 40 минут. Если все прошло успешно, то в конце мы увидим следующее сообщение:
Wrote file /usr/local/zenoss/etc/zeo.conf
Wrote file /usr/local/zenoss/bin/zeoctl
Changed mode for /usr/local/zenoss/bin/zeoctl to 755
Wrote file /usr/local/zenoss/bin/runzeo
Changed mode for /usr/local/zenoss/bin/runzeo to 755
Starting Zope Object Database
. daemon process started, pid=30166
Loading initial Zenoss objects into the Zeo database
(this can take a few minutes)
ZentinelPortal loaded at zport
Starting Zope Server
. daemon process started, pid=30203

=========================================================
zensocket must be setuid. As root, execute the following:
chown root:zenoss /usr/local/zenoss/bin/zensocket
chmod 04750 /usr/local/zenoss/bin/zensocket
=========================================================

Successfully installed Zenoss

Здесь нас просят назначить права на zensocket:
[zenoss@ ~/zenoss-2.4.2]$ sudo chown root:zenoss /usr/local/zenoss/bin/zensocket
[zenoss@ ~/zenoss-2.4.2]$ sudo chmod 04750 /usr/local/zenoss/bin/zensocket 

Теперь, следуя инструкции разработчика [1], для завершения установки нам нужно в начало /usr/local/zenoss/bin/zenfunctions добавить следующую строку:
export LD_PRELOAD=/lib/libcrypto.so.4


Все. Можно считать сборку завершенной и приступить к использованию  Zenoss.  Для этого в браузере набираем: http://yourserver:8080/ . После чего на экране должна появится следующая страница:


Думаю здесь объяснять ничего не нужно.

Кстати, уже потом в процессе добавления сетевых устройств в Zenoss, я обнаружил еще одну проблему. Если зайти в любые графики, то перед глазами появлялась следующая картина:



Благо, что это проблема давно известна и разработчики знают, как ее решать. Для отображения графиков в нормальном виде Zenoss’у требуется пакет шрифтов liberation-fonts-ttf. Поэтому идем в порты:
# cd /usr/ports/x11-fonts/liberation-fonts-ttf/
# make install clean

После чего еще нужно сделать симлинк:
# ln -s /usr/local/lib/X11/fonts/Liberation /usr/share/fonts/X11/

Далее перезапускаем Zenoss:
[zenoss@ ~]$ /usr/local/zenoss/bin/zenoss restart


Примеры мониторинга различных сетевых устройств.

Для добавления нового хоста нажимаем на «Add Device» в основном меню:



Здесь из всех параметров обязательно нужно указать: имя устройства (Device Name), его класс (Device Class Path) и community-строку (Snmp Community). Причем под именем устройства подразумевается его имя на DNS сервере. Если у вас его нет, то в поле Device Name нужно внести IP-адрес хоста. Чтобы найти добавленное устройство в простейшем случае можно нажать на пункт меню «Device List», который, как можно догадаться, выведет полный список хостов, за которыми осуществляется мониторинг.

Пример 1. Мониторим Windows сервер [3].

В первую очередь на Windows сервере требуется установить протокол SNMP. Для этого идем в Панель управления, далее «Установка и удаление программ», после чего жмем «Установка компонентов Windows». В появившемся окне выбираем «Средства управления и наблюдения», нажимаем «Состав…»,  далее отмечаем в списке «Протокол SNMP» и жмем «ОК» для запуска установки.

После окончания установки следует настроить службу SNMP, для чего идем в ее свойства (она так и называется в списке служб Windows «Служба SNMP»). На вкладке «Ловушки» в поле «Имя сообщества» введем community-строку (например: public), а в список «Адреса назначения ловушки» добавим IP адрес нашего Zenoss сервера. Затем идем на вкладку «Безопасность», снимаем флажок с «Посылать ловушку проверки подлинности». Далее добавляем community-строку с правами доступа (например: READ ONLY), нажимаем «ОК» и перезапускаем службу.


Теперь, когда мы настроили SNMP на Windows сервере, мы можем добавить его в Zenoss как это было показано выше.

Пример 2. Мониторим FreeBSD сервер.

В данном примере мониторить будем машину, на которой собственно и установлен сам Zenoss. Net-SNMP у нас уже есть, остается только внести изменения в конфиг-файл. Но для начала добавим следующие строки в /etc/rc.conf, чтобы snmpd запускался при старте системы:
snmpd_enable="YES"
snmpd_flags="-a -p /var/run/snmpd.pid"

Затем создаем файл  /usr/local/etc/snmp/snmpd.conf  и добавляем в него следующую строку:
rocommunity  public 10.0.0.102

Здесь rocommunity означает, что мы открываем доступ только для чтения, далее идет community-строка, а в конце IP- адрес c которого разрешен доступ (в моем случае это адрес ПК на котором стоит Zenoss).
Теперь запустим snmpd:
[zenoss@ns ~]$ /usr/local/etc/rc.d/snmpd start

После чего добавляем FreeBSD сервер в Zenoss:


Кстати, для более тщательной настройки snmpd.conf можно использовать утилиту конфигурирования snmpconf (за более подробной информацией обращайтесь в man snmpconf).

Пример 3. Мониторим коммутатор cisco.

Для простейшего мониторинга коммутатора cisco (в моем случае это 2900XL) пропишем community-строку с правами доступа READONLY:
Switch#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
Switch(config)#snmp
Switch(config)#snmp-server com
Switch(config)#snmp-server community pubic RO
Switch(config)#exit
Switch# 

Далее добавляем коммутатор в Zenoss и наблюдаем следующую картину:


Если перейти на вкладку OS, то можно получить информацию по интерфейсам:



Пример 4. Настройка оповещения [3].

Кроме того, что Zenoss позволяет визуально наблюдать ситуацию, происходящую с сетевыми устройствами, в нем также предусмотрена возможность оповещения пользователей по e-mail. Попробуем ее настроить.

В первую очередь нужно ввести параметры почтового сервера, который будет заниматься отправкой писем. Для этого нажимаем на «Settings» в основном меню и в появившемся окне введем необходимые параметры нашего mail-сервера (IP адрес, порт, пользователь и пароль для авторизации, адрес с которого идет рассылка). Далее идем на вкладку «Users» и выбираем пользователя, которого нужно оповещать. В появившемся окне в поле Email (вкладка «Edit») вводим электронный адрес получателя. После этого отправляемся на вкладку «Alerting Rules» и с помощью выпадающего меню (стрелка в верхнем левом углу) создаем новое правило для оповещений:


В окне настроек только что созданного правила на вкладке «Edit»: Action ставим Email, Enabled – True, а Severity ставим Warning и нажимаем Save. Теперь при возникновении событий уровня Warning и выше на почтовый ящик пользователя будет приходить уведомления об этом.

Кстати, я пробовал настраивать связку почтового сервера mail.ru и email2sms сервиса своего оператора сотовой связи. После чего все сообщения стали приходить мне на мобильный телефон.

Список источников:

1. Инструкция на zenoss.org
2. Ошибки при сборке
3. Статья "Zenoss и искусство сетевого мониторинга"



размещено: 2009-09-28,
последнее обновление: 2009-10-02,
автор: VolanD


d-k, 2009-10-07 в 15:39:51

Давно искал что-то подобное, надо будет попробовать. Спасибо за статью:))

APS, 2009-10-23 в 10:22:14

Обнаруженный косяк: при смене дефолтного пароля юзера admin при установке надо потом руками поменять пароль в /usr/local/zenoss/etc/hubpasswd

VolanD, 2009-10-23 в 16:11:19

Уважаемый APS, распишите, пожалуйста, подробнее какая у вас возникла проблема и как вы ее решили. А то я разобрал свой стенд)))

APS, 2009-10-26 в 13:24:42

беру свои слова обратно... пароль можно не трогать, это просто zenoss долго раскачивался, по ходу... вот только пришлось сделать chmod 07777 /usr/local/zenoss/bin/zensocket, c 04750 не заработало.... и еще export LD_PRELOAD=/lib/libcrypto.so.5 в zenfunctions... статья по делу, молодец... я уже все свои серваки перевел на zenoss, как-то больше пришелся по душе, чем кактус..... ;-)

St1tch, 2009-10-28 в 17:00:20

Спасибо за статью. Много нервов сэкономила. Не думали на счет заапплаить это зеносс комьюнити ? У мну такая идея пришла, но авторство то ваше =)

d-k, 2009-12-29 в 15:22:30

Долго ковырял, но так и не заставил рисовать графики:((

VolanD, 2009-12-29 в 15:36:03

Предлагаю перейти по ссылке http://forum.lissyara.su/viewtopic.php?t=20777 и подробней описать возникшую проблему (желательно с картинками)

ehtacl, 2010-03-24 в 13:13:43

для успешного Backup средсвами zenoss, нужно создать папку /usr/local/zenoss/ZenPacks

fox, 2010-04-22 в 3:28:44

О, парень... чувствую что ты с линуха пересел, не так ли?
Может твоя Фича в реальном времени мониторить трафик проходящий через BSD сервер?

alkor, 2012-01-31 в 12:06:08

FreeBSD al 7.1-RELEASE FreeBSD 7.1-RELEASE #0: Thu Jan  1 14:37:25 UTC 2009     root@logan.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC  i386
в системе много разных пакетов установлено.


Ошибка 5. Текст ошибки:
gmake: *** [wmi-install] Error 2
unable to build zenoss and prerequisites, see zenbuild.log

проверил пакеты по списку
libgmp-4.2.4 - не нужен (он и не устанавливался с портов)
удалил лишние пакеты старых версий
переустановил и заработало.

alkor, 2012-02-02 в 17:42:12

для автосканирования и построения карты сети правим скрипт
/usr/local/zenoss/bin/zendisc

. $ZENHOME/zenoss-2.4.5/libzenoss/bin/zenfunctions

. $ZENHOME\zenoss-2.4.5/libzenoss/bin/zenfunctions
и т.д. проверяем пути.

BuZZ, 2013-09-23 в 14:28:41

Где его скачать то можно?



 

  Этот информационный блок появился по той простой причине, что многие считают нормальным, брать чужую информацию не уведомляя автора (что не так страшно), и не оставляя линк на оригинал и автора — что более существенно. Я не против распространения информации — только за. Только условие простое — извольте подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой, незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
  Если соизволите поставить автора в известность — то вообще почёт вам и уважение.

© lissyara 2006-10-24 08:47 MSK

Время генерации страницы 0.0535 секунд
Из них PHP: 39%; SQL: 61%; Число SQL-запросов: 86 шт.
Исходный размер: 88631; Сжатая: 16793