Мы — долго запрягаем, быстро ездим, и сильно тормозим.

FreeBSD
  настройка
  подсчёт трафика
  программы
  frox
  SARG
  samba & ClamAV
  named
  proftpd
  cacti
  SAMBA+AD+NT ACL
  MySQL
  hylafax
  DDNS+DHCP
  cvsupd
  Samba как PDC
  Основы LDAP
  LDAP+SSL
  LDAP auth
  knockd
  rsync
  MRTG
  Rejik
  Jabber - OpenFire
  Samba(PDC) + Ldap
  squid+AD
  ATSlog
  vsftpd
  LDAP: samba, dns, dhcp
  Free-SA
  cups-samba на samba+AD
  irc + services
  Nagios - мониторинг сети
  TeamSpeak
  icecast2
  verlihub (p2p)
  Icecast2 + Darkice
  OOPS
  vsftpd + mysql
  Amanda
  HAVP
  Рыбалка на FreeBSD
  DNS сервер NSD
  DNS сервер Unbound
  mpd5, msmtp, dynamic ip
  ProFTPd + LDAP
  OpenVPN + LDAP
  Samba (PDC+BDC)
  BIND & AD
  POWERDNS
  3proxy
  eGroupWare
  GLPI
  SugarForge CRM
  Bacula
  Mysql - базовое описание
  Asterisk IP PBX
  Samba & CUPS & AD & ACL
  SMSTools 3
  Samba+ NT ACL
  phpmyadmin
  1С:Предприятие 8.1
  PurefFTPd
  qemu network
  AimSniff
  comms/scmxx
  Zoneminder
  Openfire Jabber Server
  Zoneminder 2
  Принт-Сервер Samba+LPD & AD
  Кластер OpenLDAP 2.4
  Lightsquid
  Установка Zabbix-1.6
  Установка net2ftp
  VSFTPD + AD && MySQL
  Network UPS Tools
  mpd5 L2TP client
  Apache 2.2 as a proxy
  ejabberd+mysql+icq
  HotSpot
  Установка и использование Zenoss на FreeBSD 7.2
  mysql-proxy
  DNS zones
  squid+sams+sqstat
  transmission-daemon
  Squid+AD (group access)
  named 9.7.0
  SysAid Server
  MySQL Master+Master
  proftpd file auth&quota
  usb_modeswitch
  NSDadmin
  iperf Тест скорости между хостами
  Простой факс-сервер mgetty+sendfax
  SQUID-MultiCpuSystem
  vsftpd + system users
  Syslog server
  Температура в серверной
  Nagios+Digitemp
  Avast! FreeBSD
  Настройка git+gitosis
  Firefox SyncServer
  Scan+Print server FreeBSD 9
  proftpd,pgsql,web
  почтовые системы
  Шелезяки
  Мелочи
  Файловая система
  WWW
  Security
  system
  Games Servers
  X11
  Programming
Очумелые Ручки
OpenBSD
Cisco


www.lissyara.su —> статьи —> FreeBSD —> программы —> Температура в серверной

Мониторинг температуры MRTG+Digitemp

Автор: Капитан.


     Встала задача наблюдать за температурой в серверной. Встроенные датчики оборудования для этой цели не сильно подходят. Поиск на просторах сети вывел на программу Digitemp.  Программа умеет снимать показания с датчиков на двухпроводной шине.
Имеем:
Сервер на FreeBSD 8.1 Release 64-bit с установленным WEB сервером Apache и работающим MRTG.Необходимо наличие свободного COM порта.
Железо  
Схема простейшего контроллера содержится в архиве с исходными текстами (файл DS9097_Schematic.gif).


    Для сбора схемы с одним датчиком были закуплены в «Чип&Дип» следующие детали:

1.Диод  Шоттки  - 1N5818 – 2шт.
2.Стабилитрон на 3,9 В - BZX55C3v9 – 1шт.
3.Стабилитрон на 6,2 В  - BZX55C6v2 – 1шт.
4.Резистор на 1,5 КОм – 1шт.
5.Датчик температуры DS1820 – 1шт.
6.Корпус разъема DB9 – 1шт.
7.Разъем DB9 мама (Female) – 1шт.

Всё это дело обошлось примерно в 420р. По ценам января 2011 года.

    Если руки растут из правильных мест,  и имеете навык общения с паяльником, всю схему можно разместить в корпусе разъёма навесным монтажом.  
Автор не несёт ответственности за возможные негативные последствия  вызванные попытками  применить на практике материалы данной статьи!
    Полупроводники имеют штриховую маркировку. Штриху соответствует катод (по схеме: катод – штрих, анод – треугольник). Датчик, повернутый спилом вверх, ножками к нам,  маркируется с лева на право. Датчик я вывел обычной витой парой. Третий контакт не соединял – датчику хватает и паразитного питания. Если потребуется,  дополнительные датчики подключаются параллельно. Каждый датчик имеет уникальный ID, так что не запутаетесь.

Возможные грабли:

Перед закупкой деталей убедитесь, что COM порт вашего сервера мониторинга имеет стандартное питание 9 В. Померьте напряжение между 4 и 5 контактом.  Убил кучу времени пытаясь завести схему на сервере Hewlett Packard с 5-ти вольтовым портом. У стандартного порта напряжение между 4 и 5 контактом будет примерно 10-11,5 вольт.  Для низковольтных портов используется другая схема контроллера.  Мне в результате пришлось подсоединить контроллер к другому серверу и снимать показания через NRPE (но это уже будет другая статья).

Более подробное руководство по изготовлению датчика размещено в разделе "Очумелые ручки":
http://www.lissyara.su/articles/mad_hands/computers/ds9097+ds1820/

Теперь софт.
В портах этой программы не оказалось.
Придётся ставить вручную из исходников. Исходники можно скачать с сайта разработчиков по адресу:
http://www.digitemp.com
Для компиляции понадобится gmake, если не установлен, собираем из портов
#cd  /usr/ports/devel/gmake
#make install clean
#rehash

Начинаем ставить Digitemp.
#mkdir  /«какая-нибудь временная папка с исходниками»
#cd  /«какая-нибудь временная папка с исходниками»
#fetch http://www.digitemp.com/software/linux/digitemp-3.6.0.tar.gz
#tar -xzvf digitemp-3.6.0.tar.gz

После разархивирования у нас появится папка /«какая-нибудь временная папка с исходниками»/digitemp-3.6.0
#cd digitemp-3.6.0
#gmake ds9097

После компиляции в папке появится исполняемый файл digitemp_DS9097. Проверяем:
# ./digitemp_DS9097

Программа выведет встроенный Help. Всё ОК.В принципе,  кроме этого файла нам больше ничего и не нужно.
Создаём рабочую папку нашей системы наблюдения за температурой.
#mkdir /usr/local/etc/digitemp/
#cp digitemp_DS9097 /usr/local/etc/digitemp/digitemp
#rm –r  /«какая-нибудь временная папка с исходниками»
#cd /usr/local/etc/digitemp

Контроллер присоединён к COM1, выполняем его инициализацию.
# ./digitemp -i -s /dev/cuau0

Будет выведена информация о найденных датчиках и создан файл конфигурации .digitemprc примерно следующего содержания:
TTY /dev/cuau0
READ_TIME 1000
LOG_TYPE 1
LOG_FORMAT "%b %d %H:%M:%S Sensor %s C: %.2C F: %.2F"
CNT_FORMAT "%b %d %H:%M:%S Sensor %s #%n %C"
HUM_FORMAT "%b %d %H:%M:%S Sensor %s C: %.2C F: %.2F H: %h%%"
SENSORS 1
ROM 0 0x28 0x4B 0xD1 0xC7 0x02 0x00 0x00 0xF0

Как видно, у меня один датчик. Нумерация датчиков начинается с нуля.
Пробуем снять показания.
#/usr/local/etc/digitemp/digitemp -a -c /usr/local/etc/digitemp/.digitemprc
DigiTemp v3.5.0 Copyright 1996-2007 by Brian C. Lane
GNU Public License v2.0 - http://www.digitemp.com
Jan 27 12:51:38 Sensor 0 C: 23.62 F: 74.53

Точность до сотых долей градуса нам не нужна, Фаренгейты тоже и, дальнейшее курение Help-а позволяет создать нам итоговую команду вывода показаний температуры. Она будет выглядеть следующим образом:
#/usr/local/etc/digitemp/digitemp -t 0 -q -o "%.C" \
-c /usr/local/etc/digitemp/.digitemprc
24

Так гораздо приятнее :).

    Теперь прикручиваем это всё к MRTG.
Для начала немного лирики (теория). Исторически MRTG предназначен  для показа графиков загрузки всяческих сетевых интерфейсов. Значения для этих графиков берутся из показаний соответствующих программных счётчиков снимаемых по протоколу SNMP.  Для построения одного графика на входе MRTG должен получить  четыре параметра:

1.Значение счётчика входящего трафика (зелёный граф);
2.Значение счётчика исходящего трафика (синий граф);
3.Uptime;
4.Как это всё называется.

    Курение манов MRTG показало, что можно снимать значения и других параметров (не только загрузки сетевых интерфейсов) по протоколу SNMP, но и существует возможность получать значения для графиков из результатов выполнения какого либо выражения (команды). Главное чтобы вывод был понятен MRTG.  В качестве команды возвращающей 4 значения в голову сразу пришла команда cat читающая четырёх строчный файл.
Пора перейти к практике.
Нам нужен скрипт, который будет снимать периодически показания температуры, и создавать четырёх строчный файл в  нужном формате.
#ee /usr/local/etc/mrtg/thermo.sh

Добавляем такие строки:
#!/bin/sh
echo 0 > /usr/local/etc/mrtg/thermal.log
echo `/usr/local/etc/digitemp/digitemp -t 0 -q -o "%.C" \
-c /usr/local/etc/digitemp/.digitemprc` \
>> /usr/local/etc/mrtg/thermal.log
echo "15 days, 23:09:18" >> /usr/local/etc/mrtg/thermal.log
echo "Thermal State" >> /usr/local/etc/mrtg/thermal.log

  Небольшой комментарий для тех, кто слабо знаком с работой echo:
Первая команда создаёт новый файл /usr/local/etc/mrtg/thermal.log с одной строкой содержащей 0. Вторая команда дописывает в этот файл вторую строку содержащую текущее значение температуры. Третья дописывает в третью строку значение Uptime. Четвёртая – в четвёртую название параметра (из головы).
Делаем скрипт исполняемым
#chmod +x /usr/local/etc/mrtg/thermo.sh

Пробуем запустить
#/usr/local/etc/mrtg/thermo.sh

Проверяем
#cat /usr/local/etc/mrtg/thermal.log
0
24
15 days, 23:09:18
Thermal State

Как можно заметить, я собираюсь рисовать график синим цветом, соответственно, показания датчика пишутся во вторую строку.  Значение Uptime меняться не будет, применительно к температуре оно не имеет смысла, в третью строку выводится значение с потолка (серверной) :). Теперь необходимо добавить запись в cron на периодический запуск этого скрипта. У меня MRTG запускается тоже через cron каждые пять минут (чаще нельзя).  Показания температуры будем снимать с таким же интервалом.

Возможные грабли:
Опрос  датчика температуры длится довольно длительное время. В .digitemprc  стоит параметр
READ_TIME 1000
одна секунда. Реально получается чуть меньше 750мс. Т.е. скрипт не получится стартовать с такими же параметрами, как и MRTG – данные просто не успеют подготовиться.



У меня работает так:
*/5 * * * * root /usr/local/bin/mrtg /usr/local/etc/mrtg/mrtg.cfg
4,9,14,19,24,29,34,39,44,49,54,59 * * * * root /usr/local/etc/mrtg/thermo.sh

   
    Настало время править конфигурационный файл MRTG.
Примечание:
У меня направление движения графика по-умолчанию, цвета тоже «родные».

Добавляем в конфигурацию следующие строки:
Target[thermal]: `/bin/cat /usr/local/etc/mrtg/thermal.log`
Pagetop[thermal]: <h1>Thermal State in My Town</h1>
Title[thermal]: Thermal State
PNGTitle[thermal]: Thermal State in Server Room
MaxBytes[thermal]: 50
AbsMax[thermal]: 50
LegendI[thermal]: Outer
LegendO[thermal]: Inner
kMG[thermal]: C
Options[thermal]: nopercent,gauge,noinfo
YLegend[thermal]: Temp, C
ShortLegend[thermal]:
Legend1[thermal]: external
Legend2[thermal]: internal

    Я оставил возможность подцепить на двухпроводную шину второй датчик (например - в офисе) и выводить его зелёным цветом.  В этом случае первая строка thermo.sh будет такая:
echo `/usr/local/etc/digitemp/digitemp -t 1 -q -o "%.C" -c /usr/local/etc/digitemp/.digitemprc ` > /usr/local/etc/mrtg/thermal.log

    После того, как MRTG запустится и «раскачается», график будет доступен по адресу:
http://мойсервермониторинга/mrtg/thermal.html









Ссылка на обсуждение: Incorrect URL.

размещено: 2011-01-28,
последнее обновление: 2011-02-04,
автор: Капитан

оценить статью:

Серёга, 2011-02-01 в 2:26:16

Капитану троекратное УРА!УРА!УРА! :-) Ждем схему для низковольтных портов. Подобную ВЕЩЬ сам реализовал только смотрю через cacti. Сейчас "курю" internet, как еще ко всему этому хозяйству прикрутить датчик влажности, ведь в серверной важна не только температура, но и влажность.

Dre, 2011-02-01 в 12:23:03

Пробовал приведённую схему, на порту сервака она работать отказалась. Пришлось собрать по схеме на хабре (сейчас звездой включены 6 датчиков, кабели до 10 метров, питания еле хватает и приходится перечитывать показания).
http://habrahabr.ru/blogs/DIY/55780/

P.S. Автору спасибо за статью. Чтобы исключить проблему отсутствия данных для системы мониторинга писал в журнал в одну строку в режиме добавления, а затем считывал только последнюю строку при помощи tail.

nOT, 2011-02-02 в 9:37:56

Утащил к себе в ЖЖ.

Насколько я помню, для MRTG не критичны третий и четвертый параметр, поэтому можно обойтись без промежуточного файла, объединив команды сразу в конфиге MRTG:

Target[thermal]: `echo 0;
/usr/local/etc/digitemp/digitemp -t 0 -q -o "%.C" -c /usr/local/etc/digitemp/.digitemprc`

Еще, думаю, стоит дополнить статью, рассказав, как использовать extend в конфигах SNMP, чтобы можно было датчики вешать на одну машину, а MRTG пускать на другой (например, сервер без COM-портов).

Сергей, 2011-02-02 в 14:31:08

#!/usr/local/bin/bash

max=25
min=18
temperature=`/usr/local/sbin/apcaccess | grep ITEMP`
temperature=${temperature:10:3}
if [ "$temperature" -gt "$max" ]
then
   echo "WARNING high temperature: "$temperature" C; max = "$max" !!!" | /usr/local/bin/sendxmpp -s WARNING admin@fw.server
fi

if [ "$temperature" -lt "$min" ]
then
   echo "WARNING low temperature: "$temperature" C; min = "$min" !!!" | /usr/local/bin/sendxmpp -s WARNING admin@fw.server
fi

В системе стоит apcupsd, каждые 15 мин. по крону на jabber при превышении порога мин. и макс. шлёт мне сообщение. Перу раз спасало от перегрева в серверной ;)

adre, 2011-02-02 в 20:03:06

Осталось только релюшку к кондюнику и расчет нужной температуры у оного -)...

SergeySL, 2011-02-03 в 21:41:32

Большинство серверов содержит датчик забортной температуры, доступный через IPMI...

Alex Keda, 2011-02-03 в 22:36:40

2 SergeySL
Ссылочку как это мониторить, под фрёй, приведите пожалуйста?

SergeySL, 2011-02-03 в 22:40:57

Можно как у нас (OpenIPMI+Zabbix) - http://www.sergeysl.ru/freebsd-ipmi-monitoring-on-zabbix/. А если Zabbix не используете, то данные датчиков можно читать утилитой ipmitool (в портах все есть).

Andy, 2011-02-03 в 22:43:05

man openipmi ;)
http://www.sergeysl.ru/freebsd-ipmi-monitoring-on-zabbix/#more-2163

Alex Keda, 2011-02-03 в 23:06:16

Зер гут Вальдемар, зер гут!
========
на пролиантах завтра попробую, на супермикре показывает мусор, несмотря на наличие этого самого IPMI модуля...

SergeySL, 2011-02-03 в 23:09:56

Если модуль ядра напрямую не работает, можно по сети попробовать. На DL140G3 и DL180G6 работает. Кстати, Zabbix только по сети и умеет обращаться через OpenIPMI.

Alex Keda, 2011-02-03 в 23:15:20

Если я щас начну ковыряться и что-то подвешу - боюсь нам негде будет общаться - сайт как раз на той самой супермикре и крутится =))

Серьёзные исследования на продакшене - в другой раз, когда живьём на месте буду.

Капитан, 2011-02-04 в 21:44:57

Если кто внимательно читал статью, он мог заметить, что я уже пробовал считывать встроенные датчики. А тот, кто очень внимательно вчитывался, заметил, что я работал именно с серверами HP (ILO и всё такое). Разница в показаниях встроенного и внешнего датчиков в моём случае 5 градусов - неприемлимо :(

SergSS, 2011-03-24 в 16:42:36

Схемку собрал. На серверах IBM работает прекрасно. Несмотря на низковольтный COM.
Капитану большое Спасибо!

Миха, 2011-03-28 в 12:48:03

Жарко у вас там :о)

-ZG-, 2011-06-16 в 5:27:47

Моя реализация: http://240.odmin.info
собирал по этой схеме http://odmining.ru/articles.php?article_id=2 работает на ура, подойдет для низковольтных портов.

savio, 2011-07-01 в 15:19:34

софт есть уже в портах
/usr/ports/misc/digitemp/

Yurkinson, 2011-08-30 в 10:38:58

А ежели в серверной ИБП от APC (типа Smart), то можно читать внутреннюю температуру блока средствами apcupsd и парсить например так:
/usr/local/sbin/apcaccess | grep ITEMP | awk \'{print $3}

У меня в стойках они нижними стоят, показания совпадают с показаниями наружного электронного термометра (с точностью порядка  градуса).

ioioojo, 2012-12-25 в 12:09:54

!

Юрий, 2013-11-08 в 21:20:59

Копетан,

в русском языке "с лева на право." принято обычно писать не в четыре слова, а в два - "Слева - направо".

Эй, человек, два Розенталя этому господину!

Ale Keda, 2015-04-28 в 14:28:41

Непруха...
хотел на даче собрать такую штуку, мониторить температуры, подрезал на работе списаного тонкого клиента HP T5710

Напряжение померял - 5.97 вольта =((

Жду пока из китая приедет DS9097 ...

Андрей, 2015-08-24 в 11:39:06

Для тех, у кого нет компорта: можно воспользоваться USB переходником на чипе CP2101.

Для эмуляции 1-wire надо всего лишь разделить Rx и Tx диодом (катодом к Tx) и сделать подтяжку линии данных к Vcc. Рекомендации есть на easyelectronics.

В соответствии с данной схемой термометр DS18B20 был подсоединен к переходнику на чипе CP2101, в ядро - драйвер uslcom, из портов был установлен digitemp и все сразу заработало.


Оставьте свой комментарий:
Ваше имя:   *
e-mail:  
жирный
наклонный
подчёркнутый
ссылка
цвет
Нынешний год:   *
 


Хостинг HOST-FOOD

2014-07-27, lissyara
gmirror

Удалённое создание софтверного зеркала средствами gmirror, на диске разбитом с использованием gpart. Использование меток дисков для монтирования разделов.
2013-08-20, zentarim
Scan+Print server FreeBSD 9

Настройка сервера печати и сервера сканирования под управлением операционной системы FreebSD 9 для МФУ Canon PIXMA MP540
2011-11-20, BlackCat
Разъём на WiFi-карту

Делаем съёмной несъёмную антену на WiFi-карте путём установки ВЧ-разъёма
2011-09-14, manefesto
Настройка git+gitosis

Настройка системы контроля версия исходного кода в связке git+gitosis+ssh
2011-08-14, zentarim
Wi-FI роутер + DHCP + DNS

Настройка Wi-Fi роутера на Freebsd 8 + DNS сервер + DHCP сервер: чтобы Wi-Fi клиенты были в одной подсети с проводными, проводные и беспроводные клиенты получали адреса автоматически по DHCP, кэширующ
2011-06-15, -ZG-
Охранная система на FreeBSD+LPT

В этой статье описана попытка реализации простой охранной системы на базе FreeBSD с подключением к ней охранных устройтсв на LPT порт и видеорегистрацией.
2011-03-13, terminus
ng_nat

Описание работы ng_nat, практическое использование, достоинства и недостатки в сравнении с ipfw nat
2011-02-20, Капитан
Nagios+Digitemp

Статья описывает создание системы оповещения о превышении температуры в специальных помещениях на основе Nagios с использованием программы Digitemp.
2011-02-17, Le1
Zyxel Configuration

Скрипт для массового изменения конфига свичей Zyxel. Берет из файла iplist список ip-шек, заходит последовательно на каждый и выполняет комманды из файла commands, записывая происходящее в лог файл.
2011-02-16, fox
hast carp zfs ucarp cluster

HAST (Highly Available Storage), CARP, UCARP, ZFS, Cluster настройка и одаптация плюс личные размышления…
2011-02-04, BlackCat
Восстановление ZFS

История о том, как был восстановлен развалившийся RAIDZ ZFS-пул (перешедший в FAULTED) с помощью скотча и подручных средств. Или о том, какие приключения ожидают тех, кто не делает резервных копий.
2011-02-03, Капитан
1-Wire

Статья описывает самостоятельное изготовление контроллера DS9097 для съёма показаний с датчиков температуры DS1820 с помощью программы Digitemp.
2011-01-28, Капитан
Температура в серверной

Статья описывает построение системы наблюдения за температурой в помещении серверной с использованием программы Digitemp и выводом графиков в MRTG
2011-01-21, m4rkell
Syslog server

Как то буквально на днях, у нас завалилось, что то в еве) или не в еве не суть. Суть в том, что когда захотели снять логи с хостов esx обнаружили, что хранят эти негодяи логии только за последнии сутк
2011-01-07, lissyara
Canon/gphotofs

Монтирование цифровых фотоаппаратов Canon (PTP) как файловой системы, автоматизация этого процесса через события devd и внешние скрипты.
2010-12-13, Al
IPSec

Описание принципов работы IPSEC и способов аутентификации.
2010-12-07, manefesto
FreeBSD on flash

Было принято решении переехать на USB Flash и установить минимальный джентельменский набор для работы своего роутера. Делаем =)
2010-12-05, Fomalhaut
root ZFS, GPT

Инструкция по установке FreeBSD с использованием в качестве таблицы разделов GPT и в качестве основной файловой системы - ZFS
2010-09-05, Cancer
Настройка аудиоплеера на ximp3

Цели: Простенький аудиоплеер, для того что бы тетя продавец в магазине утром пришла нажала на кнопку Power и заиграла в зале музыка, так же был доступ по сети, общая шара куда можно заливать музыку, к
2010-08-31, Cancer
Установка и настройка OpenVPN

На днях появилась задача - объединить головной офис и 3 филиала в одну сеть через интернет посредством OpenVPN, чтобы люди могли подключаться через RDP к базам 1С на серверах.
2010-08-25, manefesto
freebsd lvm

Использование linux_lvm для работы с LVM разделами из-под FreeBSD. Проблемы которые возники при монтирование lvm раздела
2010-04-30, gonzo111
proftpd file auth&quota

Proftpd - квоты и авторизация из файлов, без использования базы данных и/или системных пользователей
2010-04-22, lissyara
tw_cli

Пошаговая инструкция по восстановлению RAID на контроллере 3ware, из которого выпал один диск. Настройка мониторинга состояния рейда и отчётов о его состоянии на email.
2010-04-14, fox
MySQL Master+Master

MySQL (Master Master) and (Master Slave) Как настроить репликацию…
2010-03-22, Mufanu
named 9.7.0

Система доменных имен (Domain Name Service, DNS) - одна из тех незаметных, закулисных программ, которым не уделяется и половины того внимания, которого они заслуживают.
2010-03-09, terminus
DNS zones

Краткий ликбез про управление DNS зонами. Примеры проведения делегирования прямых и обратных DNS зон.
подписка

    вверх      
Статистика сайта
Сейчас на сайте находится: 13 чел.
За последние 30 мин было: 52 человек
За сегодня было
4218 показов,
566 уникальных IP
 

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

© lissyara 2006-10-24 08:47 MSK

Время генерации страницы 0.1292 секунд
Из них PHP: 51%; SQL: 49%; Число SQL-запросов: 79 шт.
Исходный размер: 174073; Сжатая: 29305