igNix.ru
Опубликовано igNix.ru (http://www.ignix.ru)

Главная > Версия для печати > Версия для печати

Сеть

Ваша оценка: Нет Средняя: 5 (10 голосов)

Arpwatch - мониторинг соответствие между IP и MAC-адресами

Устанавливаем arpwatch

Из порта:

cd /usr/ports/net-mgmt/arpwatch && make install clean

Пакетом:
pkg_add -r arpwatch

после чего правим rc.conf для запуска arpwatch при загрузке системы:

vi /etc/rc.conf

arpwatch_enable="YES" #включаем arpwatch
arpwatch_interfaces="nfe0" #какие интерфейсы слушать
#arpwatch_interfaces="" #слушать все интерфейсы
#arpwatch_nfe0_options="-m admin@mydomain.ru" #отправлять лог себе на мыло

Ведение логов

для ведения логов лучше настроить для этого syslog.conf:

vi /etc/syslog.conf

!arpwatch
*.notice /var/log/arpwatch.log

Мониторинг

Таблица соответствия адресов находится в файле /usr/local/arpwatch/arp.<интерфейс>.dat и выглядит как обычный текстовый файл, с MAC-адресом, IP-адресом, временем попадения в таблицу, и именем интерфейса, через который пришёл исходный запрос.

cat /usr/local/arpwatch/arp.nfe0.dat
0:f:ea:63:e2:d7 192.168.1.31    1265370078      oksen
0:1:29:1b:35:7e 192.168.1.18    1265369952      narman
0:2:b3:b2:26:e4 192.168.1.254   1265370062      ns
0:1d:7d:a6:77:64        192.168.1.67    1265368627      r423-1
0:1d:7d:a6:70:80        192.168.1.84    1265370079      lib5
0:1d:7d:70:6f:28        192.168.1.43    1265370029      tender
0:1d:7d:a6:70:35        192.168.1.82    1265370064      lib3
0:c:76:97:51:e5 192.168.1.48    1265368690      jurist
0:b:6a:6d:fd:81 192.168.1.83    1265370048      lib4
0:e0:4d:2a:cd:68        192.168.1.35    1265369127      matbuh2
0:1d:7d:a6:6a:4b        192.168.1.86    1265370064      lib7
0:1a:4d:dc:db:46        192.168.1.65    1265370078      r421a
0:e:a6:27:5a:59 192.168.1.156   1265370034      lib2-ab1
0:2:44:5a:a4:3d 192.168.1.45    1265369568      ois3
0:f:ea:4f:20:89 192.168.1.24    1265370015      glbuh
0:1a:4d:fb:e:a4 192.168.1.152   1265370059      lib2-4z
0:2:b3:b8:8a:36 192.168.1.38    1265370059      serv3

arpwatch формирует события следующих типов:
Важные:

 new activity - Это Ethernet/IP был использован впервые за 6 месяцев.
 new station - Это Ethernet/IP был использована впервые
 flip flop - Замена адреса с одного на другой (оба были в списке).
 changed ethernet address - Замена на новый MAC адрес Ethernet.

Дополнительные:

ethernet broadcast - MAC-адрес хоста является широковещательным. 
ip broadcast - IP-адрес хоста является широковещательным. 
bogon - Адрес отправителя IP-пакета не входит в непосредственно подключённую
        сеть (directly connected network) для заданного интерфейса. 
ethernet broadcast - MAC-адрес отправителя состоит из одних нулей или одних 
                     единиц.
ethernet mismatch - MAC-адрес отправителя пакета не соответствует MAC-адресу, 
                    указанному внутри ARP-запроса. 
reused old ethernet address - Ethernet-адрес изменился с известного адреса на 
                              адрес, который был замечен ранее, но не только 
                              что. (Похоже на flip flop, но чуть-чуть другое.) 
suppressed DECnet flip flop - Сообщение "flip flop" подавлено в связи с тем, 
                              что как минимум один из двух адресов является 
                              адресом DECnet.  

если есть необходимость вести журнал всех событий (не только важных), то меняем (*.notice) на (*.*) в syslog.conf

после чего перезагружаем syslog

killall -HUP syslogd

выглядеть это будет примерно так:
cat /var/log/arpwatch.log
Feb  5 09:27:20 bsd-9 arpwatch: new station 192.168.1.169 0:13:8f:27:2f:6f
Feb  5 09:30:39 bsd-9 arpwatch: new station 192.168.1.29 0:13:8f:24:a3:a
Feb  5 09:35:39 bsd-9 arpwatch: new station 192.168.1.28 0:2:44:5a:69:65
Feb  5 09:53:28 bsd-9 arpwatch: new station 192.168.1.33 0:2:44:5a:69:6b
Feb  5 09:55:40 bsd-9 arpwatch: new station 192.168.1.8 0:1d:7d:a6:6a:73
Feb  5 10:17:35 bsd-9 arpwatch: new station 192.168.1.249 0:13:46:65:81:f5
Feb  5 10:17:36 bsd-9 arpwatch: changed ethernet address 192.168.1.249 0:11:95:b8:96:42 (0:13:46:65:81:f5)
Feb  5 10:41:15 bsd-9 arpwatch: new station 192.168.1.146 0:f:ea:63:f8:40
Feb  5 10:49:11 bsd-9 arpwatch: new station 192.168.1.164 0:19:5b:2f:99:b1
Feb  5 10:52:11 bsd-9 arpwatch: new station 192.168.1.124 0:f:ea:63:f8:32
Feb  5 11:00:57 bsd-9 arpwatch: new station 192.168.1.170 0:f:ea:4f:65:d7

по желанию можно настроить ротацию:

vi /etc/newsyslog.conf

/var/log/arpwatch.log                   644  3     100  *     JC

Установка в OpenBSD

Ставим:
Из порта:

cd /usr/ports/net/arpwatch && make install clean

Пакетом:
wget ftp://ftp.openbsd.org/pub/OpenBSD/4.6/packages/i386/arpwatch-2.1a15p0.tgz

pkg_add ./arpwatch-2.1a15p0.tgz

для запуска arpwatch редактируем rc.local
vi /etc/rc.local

if [ -x /usr/local/sbin/arpwatch -a -d /var/arpwatch ]; then
        /usr/local/sbin/arpwatch -i rl1 && echo -n ' arpwatch'
fi

С флагом "-i" указываем какой конкретно интерфейс слушать "-i rl1"

Ведение логов

Хотя в OpenBSD и так всё заносится в /var/log/messages но среди всего выискивать arpwatch мне не удобно я сделал так:
Редактируем syslog.conf:

vi /etc/syslog.conf

!arpwatch
*.notice;     /var/log/arpwatch

выглядеть это будет примерно так:
cat /var/log/arpwatch
Feb 15 10:32:24 openbsd-9 arpwatch: new station 192.168.1.164 0:19:5b:2f:99:b1
Feb 15 10:39:47 openbsd-9 arpwatch: new station 192.168.1.55 0:1a:4d:65:83:a9
Feb 15 10:41:42 openbsd-9 arpwatch: new station 192.168.1.76 0:1:29:1b:37:1a
Feb 15 11:08:46 openbsd-9 arpwatch: new station 192.168.1.102 0:f:ea:4f:24:1e
Feb 15 11:27:38 openbsd-9 arpwatch: new station 192.168.1.28 0:2:44:5a:69:65
Feb 15 11:28:58 openbsd-9 arpwatch: new station 192.168.1.153 0:13:8f:24:a4:ca
Feb 15 12:00:22 openbsd-9 arpwatch: new station 192.168.1.118 0:1f:d0:b0:bb:91
Feb 15 12:16:09 openbsd-9 arpwatch: new station 192.168.1.26 0:1d:7d:a6:74:b0
Feb 15 13:01:25 openbsd-9 arpwatch: new station 192.168.1.6 0:2:b3:9f:dc:a7
Feb 15 13:05:24 openbsd-9 arpwatch: new station 192.168.1.189 0:1:29:79:10:57
Feb 15 13:11:32 openbsd-9 arpwatch: new station 192.168.1.169 0:13:8f:27:2f:6f
Feb 15 13:27:49 openbsd-9 arpwatch: new station 192.168.1.188 0:24:1d:9d:c8:67
Feb 15 14:25:47 openbsd-9 arpwatch: new station 192.168.1.27 0:1d:7d:a6:70:4d
Feb 15 14:40:54 openbsd-9 arpwatch: new station 192.168.1.64 0:1d:7d:a6:70:76

по желанию можно настроить ротацию:
vi /etc/newsyslog.conf

/var/log/arpwatch                644  3     100  *     JC

Ваша оценка: Нет Средняя: 5 (6 голосов)

GLPI - Менеджер ресурсов компании

Прошло 1,5 года с момента написания этой статьи (на ресурсе Lissyara.su). И надо ее обновить с учетом всех возникших за эти годы поправок, созданных в реальной работе. После ввода в эксплуатацию она принесла мне много положительного, например экономия моего времени, а именно - проще стало проводить инвентаризацию, управлять договорами, обрабатывать и учитывать заявки пользователей, вести учет лицензий и ПО, и так же многое другое.

Содержание:

  • Описание
  • Установка
  • Настройка
    • Cron
    • Настройка почты
    • Настройка LDAP
    • Плагины
    • Полезные советы
  • Автоматическая инвентаризация
  • FAQ

Описание

И так, что же такое GLPI и как этот продукт поможет нам в тяжелых буднях?
GLPI - это веб-приложение, разработанное на PHP для работы с ним необходим только доступ к серверу и браузер.

Среди его возможностей:

  • учет компьютеров, периферийного оборудования, сетевых устройств, обычных принтеров и связанных с ними компонентами через интерфейс OCS инвентаризации или FusionInventory.
  • назначение задач, планирование и т.д.
  • управление лицензиями.
  • назначение оборудования по географическим регионам для пользователей и групп.
  • управление деловой и финансовой информацией.
  • управление статусом работы оборудования.
  • управление заявками о помощи для всех видов оборудования.
  • использование нескольких интерфейсов, позволяющих пользователю отправить запрос в службу поддержки (web, e-mail).
  • управление документами, договорами, и связанных с ними товарно-материальных ценностей.
  • резервирование оборудования.
  • создание часто задаваемых вопросов "FAQ" и "Базы знаний".
  • генератор отчетов: аппаратное обеспечение, сети, тех. поддержки и т.п.

Кроме того, GLPI имеет много плагинов для добавления дополнительных функций.

Дополнительная информация:
  • Подробный список особенностей
  • Скриншоты
  • Демо сайт

Установка

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

# cd /usr/ports/
bsd# make search name=glpi
Port:   glpi-plugins-tracker-agent-1.5.3_1
Path:   /usr/ports/net-mgmt/glpi-plugins-tracker-agent
Info:   Agent get informations of networking devices by SNMP for GLPI
Maint:  _d.durieux@siprossii.com
B-deps: perl-5.10.1_2
R-deps: expat-2.0.1_1 p5-AppConfig-1.66 p5-Crypt-CBC-2.30...
WWW:
 
Port:   glpi-plugins-tracker-server-2.1.3
Path:   /usr/ports/net-mgmt/glpi-plugins-tracker-server
Info:   Plugin of glpi to get information of networking devices by SNMP
Maint:  _d.durieux@siprossii.com
B-deps:
R-deps: glpi-0.72.4_1 libiconv-1.13.1_1 libxml2-2.7.7 mysql-client..
WWW:
 
Port:   glpi-plugins-AdditionalReports-1.3.0
Path:   /usr/ports/textproc/glpi-plugins-AdditionalReports
Info:   This plugin enables additional reports
Maint:  _d.durieux@siprossii.com
B-deps:
R-deps: glpi-0.72.4_1 libiconv-1.13.1_1 libxml2-2.7.7 mysql-client..
WWW:
 
Port:   glpi-plugins-DataInjection-1.7.2
Path:   /usr/ports/textproc/glpi-plugins-DataInjection
Info:   This glpi plugin allows data import into GLPI using CSV files
Maint:  _d.durieux@siprossii.com
B-deps:
R-deps: glpi-0.72.4_1 libiconv-1.13.1_1 libxml2-2.7.7 mysql-client...
WWW:
 
Port:   glpi-0.72.4_1
Path:   /usr/ports/www/glpi
Info:   Free IT and asset management software
Maint:  _mathias@monnerville.com
B-deps:
R-deps: libiconv-1.13.1_1 libxml2-2.7.7 mysql-client-5.1.50_1...
WWW:    _http://glpi-project.org/

Как видим помимо самого GLPI есть еще и дополнения к нему, некоторые из них мы рассмотрим позже.

Приступим к установке:

# cd /usr/ports/www/glpi && make install clean
~~~
*****************************************************************
First time installation notes:
 
Before using GLPI, you will need to configure your database.
Full installation instructions are available here:
 
 _http://glpi-project.org/spip.php?article61
 
If you are using MySQL, here's the short version of the instructions:
 
1. Create a new database:
$ mysqladmin -uroot create glpi
 
2. Grant access to the database:
$ mysql -uroot -e"GRANT ALL ON glpi.* TO USERNAME@localhost IDENTIFIED BY 'PASSWORD'" glpi
(choose your own values for USERNAME and PASSWORD)
 
You will also need to configure Apache.  Consider adding the following
to your httpd.conf:
 
    <Directory /usr/local/www/glpi>
        AllowOverride Options FileInfo
    </Directory>
 
Then restart Apache: 'apachectl graceful'
 
Please visit 'http://{host.domain}/www/glpi/' in a
web-browser and follow the configuration instructions.
*****************************************************************

MYSQL

Cоздадим базу данных в MYSQL, например glpi, и пользователя имеющего полные права на эту базу данных.

# mysqladmin -uADMIN_USER -pADMIN_PASS create glpi
# mysql -uADMIN_USER -pADMIN_PASS -e"GRANT ALL ON glpi.* TO \
GLPI_USER@localhost IDENTIFIED BY 'GLPI_USER_PASS'" glpi

Apache

В конфигурационный файл Apache httpd.conf внесем следующее:

Alias /glpi "/usr/local/www/glpi"
    <Directory /usr/local/www/glpi>
        AllowOverride Options FileInfo
    </Directory>

Перезапустим Apache
# apachectl graceful

Веб установка

Теперь зайдем на созданный сайт и выберем язык установки Russian.

http://{host.domain}/glpi/

Согласимся с лицензией и нажмем кнопку "Установка".
Я не стал публиковать скриншоты установки ибо это тривиально.

Дальше необходимо пройти 5 шагов.
Шаг - 1 Проверка окружения на совместимость с GLPI

Если все в порядке нажимаем кнопку "Продолжить"

Шаг - 2 Установка соединения с базой данных
Укажите корректные параметры созданной базы данных.

Сервер Mysql: localhost
Пользователь Mysql: GLPI_USER
Пароль Mysql: GLPI_USER_PASS

Шаг - 3 Проверка связи с базой данных

Выберем созданную выше БД <strong>glpi</strong> и нажмем "Продолжить"

Шаг - 4 База данных

OK - база данных проинициализирована
Были внесены значения по умолчанию. Можете их удалить
Для первого соединения Вы можете использовать имя пользователя 'glpi' 
и пароль 'xxx' для входа в систему с правами администратора

Шаг - 5 Установка завершена

Стандартные имена пользователей / пароли:
 
glpi/glpi для административной учетной записи
tech/tech для технической учетной записи
normal для обычной учетной записи
post-only/post-only для учетной записи публикатора
 
Вы можете изменить или удалить эти учетные записи также как и первые записи в БД.

Установка завершена нажмем на кнопку "Запустить GLPI"

Настройка

Cron

Необходим для технических работ к примеру для проверки почты, отправки уведомлений и т.п.

# crontab -l |grep glpi
*/5  *  *  *  *  /usr/local/bin/php /usr/local/www/glpi/front/cron.php > /dev/null 2>&1

Настройка почты

Приемник почты

Это очень удобная вещь даже для самих администраторов. К примеру вам надо не забыть, что то сделать или пользователь не имеет возможность зайти в тикет систему по веб интерфейсу. Вам нужно будет всего лишь отправить по нужному е-майлу письмо с вопросом. И оно уже автоматически попадет в тикет систему. И если у вас сделано, что за пользователем закреплен е-майл то GLPI автоматически свяжет его с этим сообщением.
Вам необходимо настроить почтовую учетную запись приемника почты. Пример:

Основная панель > Установки > Приемник почты

Отправьте на е-майл заявку и в приемнике почты нажмите на кнопку "Получить заявки сейчас". Если все получилось то двигаемся дальше, если нет то ищем где ошиблись.

Настройка LDAP

Я привык чтобы учетные записи пользователей были в одном месте и все службы брали от туда необходимую им информацию. Как и все я использую LDAP каталоги это может быть как OLDAP так и Active Directory Microsoft. Для примера будем подключаться к Active Directory. Для этого необходимо создать технического пользователя и настроить на получение информации с LDAP. Думаю с пользователем проблем не возникнет (у меня он services), а подключить необходимо так:

LDAP сервер.

Основная панель > Установки > Аутентификация
Выбрать Внешняя аутентификация - LDAP

Укажите:

Имя подключения - LDAP_server
Basedn - OU=USERS_BOX,DC=firma, DC=local
rootdn - CN=services,OU=Work,OU=USERS_BOX,DC=firma,DC=local

Нажмите "Тест подключения к LDAP" если проходит то идем дальше.

Синхронизация учетных записей LDAP сервера

Основная панель > Управление > Пользователь

Кнопка "из LDAP"
Там будут два варианта.

  • Синхронизировать уже импортированных пользователей
  • Импортировать новых пользователей

Вы выберете что вам необходимо. При изменении данных учетных записей в LDAP сервере не забывайте синхронизировать и в GLPI.

Плагины

Установка плагинов производится в директорию /glpi/plugins

  • Cписок плагинов

К примеру установим плагин Network architecture.

# cd /usr/local/www/glpi/plugins/
# rm remove.txt
# fetch _http://glpi-project.org/IMG/gz/glpi-archires-1.6.tar.gz
# tar zxvf glpi-archires-1.6.tar.gz
# rm glpi-archires-1.6.tar.gz

После распаковки плагина зайдем на наш сайт и выберем

Установки > Дополнения

Там установите и включите нужный плагин.

Рекомендуемые плагины:

Look Cacti graphs - просмотр графиков Cacti
Network architecture - просмотр сетевой архитектуры
Send Mail on adding KB Item - уведомление по е-майл при создании нового FAQ
Tree View - дерево образный список с сортировкой по местонахождению

Полезные советы

Уведомления об окончании расходных материалов.

Добавьте принтеры и картриджи и добавьте нужного человека к группе кому будут высылаться уведомления о минимальном кол-ве расходных материалов на складе (кол-во можете установить по каждому типу расходного материала и контролировать не только картриджы, но и диски, термопленки, дискеты и т.п. Минимальное кол-во до оповещения зависит и от организации (бюрократия), времени поставки и т.п.
Каждую неделю GLPI будет сверяться с базой и при нахождении минимального кол-ва расходных материалов высылать письмо со списком необходимого человеку ответственного за их контроль.

База знаний.

Ведите базу знаний это позволит вам не забыть о нюансах настройки, а так же вы можете дать пользователям самим решить проблему или облегчить вашу жизнь. К примеру я разбил ее на несколько пунктов.

Администрирование
-Firewall
-Антивирус (SEP)
-Windows 2003
-Windows XP
-ПО
Документация
Информация
Настройка
-Печать
-Почта
Проблемы
Информация

В каждой теме есть посты которые могут читать пользователи вот два примера сообщений.

При проблеме с сетью:

Вопрос
Не работает почта\СКАП\сетевые принтеры и тп.

Ответ
Убедитесь, что с сетью все в порядке [проверка работоспособности сервисов] (линк на карту Zabbix)

* Если не работают сервера SRV1 и\или SRV2 то вам необходимо уведомить:
o А.С. Игнатьев +7-921-333-33-33
o В.В. Мишуткин +7-921-333-33-33

* Если не работают сервера внутренней локальной сети Windows 2003 и\или Zabbix Server то вам необходимо позвонить:
o А.С. Игнатьев +7-921-333-33-33

* Если не работает интерфейс WAN то вам необходимо уведомить:
o А.С. Игнатьев +7-921-333-33-33
o Д.В. Вася +7-333-333-33-33(СЗТ)
o Дежурный по оптоволокну (Связь) 8-81311-34567

Если проблемы с электропитанием:

По умолчанию при сбое питания серверы в Фирме автоматически выключаются и при появлении электропитания автоматически включаются с условием заряда аккумуляторной батареи (UPS) на 15% от номинала (заряжаются 20-30 мин.).

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

* Зайти в каб №ХХ
* Включить UPS APC Smart-UPS 1500 (черное прямоугольное устройство ) нажав на верхнюю кнопку.
* Серверы запустятся автоматически (должны сразу же загореться зеленые кнопки питания на лицевой панели каждого сервера) при необходимости включите самостоятельно.

Заряд аккумулятора можете увидеть на лицевой панели UPS или же воспользоваться Network UPS Tools (линк на NUT) при включенных серверах.

P.S.
Узнать о проблемах электросети на АБК и когда исправят можно у В.В. Мишуткин +7-921-333-33-33 (ОАО Фирма2)

Такие элементарные подсказки дают вам преимущество и пользователи сразу вам говорят что делают и что не работает. Но для начала надо их обучить и заставлять применять это. Но зато когда все наладится все ощутят преимущества данной системы.

Тикет система

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

Тикет система для администратора

Пишите сами в тикет систему, например, чтобы не забыть (это уже легко сделать например отправить сообщение на е-майл) или зарегистрировать заявку принятую от пользователя по телефону или е-майлу. Это привычка вам сослужит добрую службу и позволит за минуту показать начальству что вы не просто просиживаете (как они думают) 80% своего времени, а тратите на обработку траблов пользователей, работы с глючным железом, старым ПО и т.п. которое вы уже давно требуете закупить\обновить и из-за этого ваш план по улучшению ИТ службы на предприятии накрывается медным тазом. В выводе эффективность предприятия падает к нулю да и зарплату поднять вам неплохо было бы =)

Учет и расходные материалы

Ведите полный учет всего чего есть. Все что на балансе и с инв. номерами вносите сюда это вам очень поможет при инвентаризации. А так же введите все принтеры и все типы картриджев и будет сразу наглядно видно какой идет расход и эффективность принтеров. Например закончился картридж и вы его заменили, сделали тест страницу, посмотрели кол-во отпечатанных листов, зашли в GLPI и установили новый картридж в принтер и добавили кол-во отпечатанных листов и ох**ли т.к. за 15 дней кончился картридж который раньше до 1,5 мес работал. Вы идете бить человека =) И все в таком духе.

Автоматическая инвентаризация

Кто-то ставит к GLPI OCS-NG, но не я т.к. по мне это лишний и ненужный демон для сервера и ставить еще один лишний сервис на ПК пользователям и все для чего, чтобы снять один раз статистику? Нет это не по мне, зачем усложнять систему без видимой эффективности? Я просто один раз при установке ПК на рабочее место снимаю информацию, к примеру ПО EVEREST с заточенным под мои нужды конфигурационным файлом, и приатачиваю к ПК html файл.

FAQ

В. Проблема с читаемостью PDF файлов. Все русские слова отображаются закорючками.
О. Это не баг, а фича разработчики GLPI знают и пока ничем не могут помочь. Единственное есть возможность обхода.
1. Экспортировать в CVS.
2. Открыть файл с помощью OpenOffice, указав кодировку открываемого файла UTF-8.

В. Как пользователям облегчить доступ к веб интерфейсу GLPI?
О. Я создал алиас help и теперь пользователи набрав это слово сразу попадают в GLPI.

Дополнительные материалы
Ссылки: 
>>ВЕТКА ФОРУМА<<
Ваша оценка: Нет Средняя: 4.9 (17 голосов)

ISC-DHCP

DHCP - это расширение протокола BOOTP, который был придуман для того, чтобы бездисковые станции UNIX могли загружаться по сети. Подсистема BOOTP предоставляет клиентам IP-адреса, сетевые маски, стандартные шлюзы, а так же информацию, касающуюся начальной загрузки через TFTP. Протокол DHCP не ограничивается этими параметрами, вводя понятие аренды. Хватит пока теории - на практике любому сетевику средних и больших сетей необходима управляемая сетевая структура которая, будет динамично управляться и обновляться при необходимости. Для этого мы и используем протокол DHCP.

Воспользуемся эталонным ПО в реализации DHCP - демон организации Internet Systems Consortium. Мы опишем конфигурацию обеспечивающую, динамическое распределение указанного диапазона IP-адресов, фиксирование IP-адресов за сетевым устройствами, а также передачу клиентам разнообразных параметров необходимых, для работы в сети TCP/IP. А так же реализуем дополнительные трюки, к примеру - запуск в нескольких подсетях, ограничивание неизвестных клиентов, и, живя в эпоху сетевых дикарей, мы будем повышать безопасность демона путем запуска в песочнице (изменение корневого каталога chroot) и работой от имени непривилегированного пользователя. Но и на старуху бывает порнуха - предохраняйтесь и обновляетесь. =)

Содержание:

  • Установка
  • Конфигурация
  • Запуск и работа в chroot
    • Работа в двух подсетях
    • Разрешить или запретить неизвестных клиентов
    • IPv6
  • Логи
  • FAQ

Установка

Установка проста, но не забывайте сначала обновить систему портов. Найдем необходимый нам порт.

# cd /usr/ports/
# make search name=isc-dhcp41-server
Port:   isc-dhcp41-server-4.1.e,2
Path:   /usr/ports/net/isc-dhcp41-server
Info:   The ISC Dynamic Host Configuration Protocol server
Maint:  douglas@douglasthrift.net
B-deps:
R-deps:
WWW:    http://www.isc.org/products/DHCP/

Начнем установку и не забудем, что мы параноики и включим поддержку песочницы.

# cd /usr/ports/net/isc-dhcp41-server
# make config
Options for isc-dhcp41-server 4.1.e,2
 
[X] DHCP_PARANOIA  Enable support for chroot
[ ] DHCP_LDAP      Experimental LDAP backend support
[ ] DHCP_LDAP_SSL  Support LDAP connection over SSL/TLS
 
# make install clean
~~~
    This port has installed the following files which may act as network
      servers and may therefore pose a remote security risk to the system.
/usr/local/sbin/dhcpd
/usr/local/bin/omshell
 
      This port has installed the following startup scripts which may cause
      these network services to be started at boot time.
/usr/local/etc/rc.d/isc-dhcpd
/usr/local/etc/rc.d/isc-dhcpd6
 
      If there are vulnerabilities in these programs there may be a security
      risk to the system. FreeBSD makes no guarantee about the security of
      ports included in the Ports Collection. Please type 'make deinstall'
      to deinstall the port if this is a concern.
 
      For more information, and contact details about the security
      status of this software, see the following webpage:
http://www.isc.org/products/DHCP/
===>  Cleaning for isc-dhcp41-server-4.1.e,2

Конфигурация

На данном этапе необходимо откорректировать и дополнить конфигурационный файл демона своими параметрами.

# cd /usr/local/etc/
# chmod u+w dhcpd.conf
# cat dhcpd.conf

Этот конфиг разрабатывался с учетом смешанной сети (Windows серверы и клиенты) и некоторые параметры netbios и ntp-servers можно закомментировать.

## Глобальные параметры ##
# указываем доменное имя
option domain-name "firma.local";
# имя DNS сервера
option domain-name-servers ns1.firma.local;
# IP DNS сервер (предыдущая строчка взаимозаменяемая)
#option domain-name-servers 192.168.0.1;
 
# по умолчанию на сколько секунд выдаётся IP-адрес
default-lease-time 600;
# максимальное время на сколько выдаётся IP-адрес
max-lease-time 1200;
# минимальное время на сколько выдаётся IP
#min-lease-time 1000;
 
# указываем, что не будем обновлять DNS-таблицу
ddns-update-style none;
# указываем, что наш сервер будет единственным авторитетным для наших сетей
authoritative;
# отправка логов DHCP в журнал (необходимо изменить syslog.conf)
log-facility local7;
 
## Параметры подсети ##
# задаем нашу подсеть и ее маску
subnet 192.168.0.0 netmask 255.255.255.0 {
        # диапазон выдачи IP адресов (фиксированные IP адреса серверов
        # должны лежат вне этого диапазона)
	range 192.168.0.101 192.168.0.230;
        # маска подсети
	option subnet-mask 255.255.255.0;
        # шлюз по умолчанию
	option routers 192.168.0.3;
        # определяем широковещательный адрес
	option broadcast-address 192.168.0.255;
        # указываем сервер времени (доп.)
	option ntp-servers 192.168.0.1;
        # сообщаем клиенту, должен ли тот реализовывать 
        # широковещательный принцип преобразования адресов 
        # или обращаться к серверу WINS (доп.)
	option netbios-node-type 8;
        # адрес сервера для работы с WINS (доп.)
	option netbios-name-servers 192.168.0.1;
        # параметры для работы с WINS (доп.)
	option netbios-dd-server 192.168.0.1; 
        default-lease-time 6000;
        max-lease-time 72000;
        min-lease-time 72000;
 
}

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

А теперь приступим к формированию групп и привязки IP к MAC адресу сетевого устройства.

group {
host PC0054 {
  hardware ethernet 00:26:5A:13:E7:5C;
  fixed-address 192.168.0.54;
}
host PC0055 {
  hardware ethernet 00:24:54:74:36:14;
  fixed-address 192.168.0.55;
}
}
 
group { 
host PC0060 {
  hardware ethernet 00:17:31:67:E0:29;
  fixed-address 192.168.0.60;
}
host PC0061 {
  hardware ethernet 00:1C:C0:1B:D1:2B;
  fixed-address 192.168.0.61;
}
}

Из этого вам уже понятно, что мы сформировали две группы (для удобства работы и можно добавлять больше групп или вообще без них работать)

  • host - имя сетевого устройства
  • hardware ethernet - его MAC адрес
  • fixed-address - привязанный за ним IP адрес

Запуск и работа в chroot

rc.conf

Для автоматического запуска при перезагрузке сервера внесем в /etc/rc.conf опции и укажем специфичные параметры, такие как: запуск в песочнице, нужный сетевой интерфейс, путь до конфигурационного файла, необходимого пользователя и тп.

# cat /etc/rc.conf |grep dhcpd
dhcpd_enable="YES"                      # включить dhcpd сервер?
dhcpd_flags="-q"                        # командные опции (вкл. тихая работа)
dhcpd_conf="/usr/local/etc/dhcpd.conf"  # конфигурационный файл
dhcpd_ifaces="em0"                      # сетевой интерфейс
dhcpd_withumask="022"                   # маска создаваемых файлов
dhcpd_chuser_enable="YES"               # работать без привелегий?
dhcpd_withuser="dhcpd"                  # имя пользователя для запуска
dhcpd_withgroup="dhcpd"                 # группа для запуска
dhcpd_chroot_enable="YES"               # запускать в песочнице?
dhcpd_devfs_enable="YES"                # использовать devfs если есть?
#dhcpd_makedev_enable="YES"             # использовать MAKEDEV?
dhcpd_rootdir="/var/db/dhcpd"           # каталог работы
dhcpd_includedir="/usr/local/etc"       # включить каталог с конфигурационными файлами
#dhcpd_flags="-early_chroot"             # необходимо для полного корня

Для включения вывода сообщений DHCP-сервера на консоль следует изменить определение переменной dhcpd_flags в файле /etc/rc.conf:
#cat /etc/rc.conf |grep dhcpg_flags
dhcpg_flags="-4"

Запуск

Запустим демон.

# /usr/local/etc/rc.d/isc-dhcpd start
Starting dhcpd.
Internet Systems Consortium DHCP Server 4.1-ESV-R2
Copyright 2004-2011 Internet Systems Consortium.
All rights reserved.
For info, please visit _https://www.isc.org/software/dhcp/
Wrote 0 deleted host decls to leases file.
Wrote 0 new dynamic host decls to leases file.
Wrote 31 leases to leases file.
Listening on BPF/em0/00:16:76:32:c8:a1/192.168.0.0/24
Sending on   BPF/em0/00:16:76:32:c8:a1/192.168.0.0/24
Sending on   Socket/fallback/fallback-net

Посмотрим, создалась ли ФС с песочницей для dhcpd.

#df -h
Filesystem            Size    Used   Avail Capacity  Mounted on
/dev/mirror/gm0s1a    989M    442M    468M    49%    /
devfs                 1.0K    1.0K      0B   100%    /dev
/dev/mirror/gm0s1g     67G     14G     48G    22%    /ftp
/dev/mirror/gm0s1d     19G     15G    2.9G    84%    /usr
/dev/mirror/gm0s1e     19G    3.1G     15G    17%    /var
tmpfs                 2.3G     52K    2.3G     0%    /tmp 
devfs                 1.0K    1.0K      0B   100%    /var/db/dhcpd/dev

Созданная структура песочницы - ОС в миниатюре, и в ней есть всё, что необходимо для запуска этого демона.
# ls /var/db/dhcpd/
dev etc usr var

Запущен ли демон.

# ps -ax | grep dhcp
  975  ??  Ss     0:00,01 /usr/local/sbin/dhcpd -q -cf /usr/local/etc/dhcpd.conf -lf 
/var/db/dhcpd/dhcpd.
 1759   0  S+     0:00,00 grep dhcp

Остановить демон и запустить можно так.

# /usr/local/etc/rc.d/isc-dhcpd stop
Stopping dhcpd.
# /usr/local/etc/rc.d/isc-dhcpd start
Starting dhcpd.

Или так.

# kill `cat /var/db/dhcpd/var/run/dhcpd/dhcpd.pid`
# /usr/local/etc/rc.d/isc-dhcpd start
Starting dhcpd.

Для перечитывания конфигурационного файла можно просто перезапустить демон

# /usr/local/etc/rc.d/isc-dhcpd restart

Сложные вопросы конфигурации

Работа в двух подсетях

Иногда случается, что в одном физическом сегменте сосуществуют несколько IP подсетей. Например, в организации существует требование использовать 8-битные маски подсетей, но сеть разрослась до размеров, превышающих 254 хоста, в этом случае необходимо использовать две подсети с 8-битными масками. В этом случае секции subnet, описывающие две эти подсети, могут быть заключены в секцию shared-network.
Добавляем после указанных глобальных параметров:

# Указываем, что будем использовать разные подсети с названием <strong>mynet</strong>.
shared-network mynet {
### Локальные параметры подсети 192.168.1.0/24: ###
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.10 192.168.1.200;
option broadcast-address 192.168.1.255;
option subnet-mask 255.255.255.0;
option domain-name-servers 192.168.1.1;
option routers 192.168.1.2;
}
 
### Локальные параметры подсети 192.168.2.0/24: ###
subnet 192.168.2.0 netmask 255.255.255.0 {
range 192.168.2.10 192.168.2.200;
option broadcast-address 192.168.2.255;
option subnet-mask 255.255.255.0;
option domain-name-servers 192.168.2.1;
option routers 192.168.2.2;
}
 
host DC23 {
    hardware ethernet 6c:f0:49:e3:92:9d;
    fixed-address 192.168.1.11;
}
 
host RM54 {
    hardware ethernet 0:13:8f:24:a4:d9;
    fixed-address 192.168.2.22;
} 
 
} 

В /etc/rc.conf не забудем внести нужные нам интерфейсы для прослушки - это нужно при использовании к примеру разных сетевых карт.

# cat /etc/rc.conf |grep dhcpd_ifaces
dhcpd_ifaces="em0 em1"   # доп. сетевой интерфейс через пробел

Если у вас alias на сетевой карте - ничего менять не нужно.

Разрешить или запретить неизвестных клиентов

Иногда необходимо ограничивать работу неизвестных клиентов, о которых нет упоминания в dhcp.conf, или использовать разные конфигурации сетей в зависимости от клиента - это делается двумя параметрами.

  • deny unknown-clients - запретить неизвестных клиентов
  • allow unknown-clients - разрешить неизвестных клиентов

shared-network “net” {
# подсеть для известных клиентов
subnet 192.168.1.0 netmask 255.255.255.0
pool {
range 192.168.1.10 192.168.1.200;
option routers 192.168.1.2;
deny unknown-clients;
}
}
 
# подсеть для не известных клиентов
subnet 192.168.2.0 netmask 255.255.255.0
pool {
range 192.168.2.190 192.168.2.200;
allow unknown-clients;
}
}
}

В данном примере в подсети №1 мы запрещаем получать настройки неизвестным клиентам и разрешаем их работу в подсети №2.

IPv6

И так эта версия протокола накладывает свои ограничения на работу DHCP во-первых вы должны сконфигурировать свою сетевую карту на работу с IP6, во-вторых, создать отдельный конфигурационный файл dhcp6.conf, а в в-третьих, запустить отдельный демон для IP6. Небольшой FAQ.
Я пока пропущу данный раздел за ненадобностью мне.

Логи

Обязательно включим логгирование - без этого бывает очень тяжело разобраться в появившейся проблеме. Укажем демону syslogd, чтобы он записывал сообщения DHCP-сервера в лог /var/log/dhcpd.log. Необходимо добавить в /etc/syslog.conf строку:

# cat /etc/syslog.conf |grep dhcp
#local7.*                                        /var/log/dhcpd.log
!dhcpd
*.*                                             /var/log/dhcpd.log
 
# /etc/rc.d/syslogd restart

Создадим лог и дадим права для записи.

# touch /var/log/dhcpd.log
# chown dhcpd:dhcpd /var/log/dhcpd.log
# ll /var/log/dhcpd.log
-rw-r--r--  1 dhcpd  dhcpd     0B 22 апр 21:41 /var/log/dhcpd.log

FAQ

В: Где DHCP хранит списки выданных адресов?
О: У DHCP есть файл базы данных по арендуемым параметрам называемый dhcp.leases также демон периодически делает резервную копию этого файла dhcp.leases~. И при проблемах с основным файлом вы можете его заменить резервным.

Дополнительные материалы
Ссылки: 
DHCP | Internet Systems Consortium
wiki
RFC-2131
Переводы манов
Опция 82 DHCP
Ваша оценка: Нет Средняя: 5 (19 голосов)

Nginx+apache22+PHP 5.2+ffmpeg+flvtool2

Я подумал о создании социальной сети для своего родного города в которой можно смотреть ролики, создавать музыкальные альбомы, слушать музыку он-лайн и так далее. Для начала необходимо создать платформу для нее. С последующей установкой (в следующей статье будет рассмотрена его установка) socengine 3.20. Приступим к установке необходимого программного обеспечения для будущей работы socengine.

Содержание:

  • Подготовка
  • Установка Apache
  • Установка PHP
  • Мод mod_rpaf2
  • MySQL
  • Утилита ffmpeg
  • Дополнительные модули
  • Nginx и Apache
  • eAccelerator
  • Дополнительная настройка системы
  • Запуск

Подготовка

Обновляем исходные коды и порты встроенной утилитой csup, пользуясь статьей Локальное и удаленное обновление FreeBSD

Прежде чем ставить программы идем править make.conf для добавления необходимых флагов компиляции.

cat /etc/make.conf
NO_GAMES= true          # скажем нет играм на сервере
NO_INET6= true          # откажем сборке протокола IP6
 
WITHOUT_X11=yes         # без x11
NO_GUI=yes              #
NO_X11=yes              #
NO_X=yes                #
 
WITHOUT_CUPS=yes
 
# для MYSQL сервера
DEFAULT_MYSQL_VER=50
PORTSDIR?=      /usr/ports
.if ${.CURDIR} == ${PORTSDIR}/databases/mysql50-server
WITH_CHARSET=utf8
WITH_COLLATION=utf8_bin
#WITH_LINUXTHREADS=yes
BUILD_OPTIMIZED=yes
BUILD_STATIC=yes
.endif
 
# для MYSQL клиента
.if ${.CURDIR} == ${PORTSDIR}/databases/mysql50-client
WITH_CHARSET=utf8
WITH_COLLATION=utf8_bin
BUILD_OPTIMIZED=yes
.endif

Выберем кодировку для MYSQL UTF-8 тогда не будет проблем с кириллицей для любых установленных сайтов.

Установка Apache

cd /usr/ports/www/apache22 && make install clean

Опции сборки:

     THREADS=on "Enable threads support in APR"
     MYSQL=off "Enable MySQL support for apr-dbd"
     PGSQL=off "Enable PostgreSQL support for apr-dbd"
     SQLITE=off "Enable SQLite support for apr-dbd"
     IPV6=on "Enable IPv6 support"
     BDB=off "Enable BerkeleyDB dbm"
     AUTH_BASIC=on "Enable mod_auth_basic"
     AUTH_DIGEST=on "Enable mod_auth_digest"
     AUTHN_FILE=on "Enable mod_authn_file"
     AUTHN_DBD=off "Enable mod_authn_dbd"
     AUTHN_DBM=on "Enable mod_authn_dbm"
     AUTHN_ANON=on "Enable mod_authn_anon"
     AUTHN_DEFAULT=on "Enable mod_authn_default"
     AUTHN_ALIAS=on "Enable mod_authn_alias"
     AUTHZ_HOST=on "Enable mod_authz_host"
     AUTHZ_GROUPFILE=on "Enable mod_authz_groupfile"
     AUTHZ_USER=on "Enable mod_authz_user"
     AUTHZ_DBM=on "Enable mod_authz_dbm"
     AUTHZ_OWNER=on "Enable mod_authz_owner"
     AUTHZ_DEFAULT=on "Enable mod_authz_default"
     CACHE=on "Enable mod_cache"
     DISK_CACHE=on "Enable mod_disk_cache"
     FILE_CACHE=on "Enable mod_file_cache"
     MEM_CACHE=off "Enable mod_mem_cache"
     DAV=on "Enable mod_dav"
     DAV_FS=on "Enable mod_dav_fs"
     BUCKETEER=off "Enable mod_bucketeer"
     CASE_FILTER=off "Enable mod_case_filter"
     CASE_FILTER_IN=off "Enable mod_case_filter_in"
     EXT_FILTER=off "Enable mod_ext_filter"
     LOG_FORENSIC=off "Enable mod_log_forensic"
     OPTIONAL_HOOK_EXPORT=off "Enable mod_optional_hook_export"
     OPTIONAL_HOOK_IMPORT=off "Enable mod_optional_hook_import"
     OPTIONAL_FN_IMPORT=off "Enable mod_optional_fn_import"
     OPTIONAL_FN_EXPORT=off "Enable mod_optional_fn_export"
     LDAP=off "Enable mod_ldap"
     AUTHNZ_LDAP=off "Enable mod_authnz_ldap"
     ACTIONS=on "Enable mod_actions"
     ALIAS=on "Enable mod_alias"
     ASIS=on "Enable mod_asis"
     AUTOINDEX=on "Enable mod_autoindex"
     CERN_META=on "Enable mod_cern_meta"
     CGI=on "Enable mod_cgi"
     CHARSET_LITE=on "Enable mod_charset_lite"
     DBD=off "Enable mod_dbd"
     DEFLATE=on "Enable mod_deflate"
     DIR=on "Enable mod_dir"
     DUMPIO=on "Enable mod_dumpio"
     ENV=on "Enable mod_env"
     EXPIRES=on "Enable mod_expires"
     HEADERS=on "Enable mod_headers"
     IMAGEMAP=on "Enable mod_imagemap"
     INCLUDE=on "Enable mod_include"
     INFO=on "Enable mod_info"
     LOG_CONFIG=on "Enable mod_log_config"
     LOGIO=on "Enable mod_logio"
     MIME=on "Enable mod_mime"
     MIME_MAGIC=on "Enable mod_mime_magic"
     NEGOTIATION=on "Enable mod_negotiation"
     REWRITE=on "Enable mod_rewrite"
     SETENVIF=on "Enable mod_setenvif"
     SPELING=on "Enable mod_speling"
     STATUS=on "Enable mod_status"
     UNIQUE_ID=on "Enable mod_unique_id"
     USERDIR=on "Enable mod_userdir"
     USERTRACK=on "Enable mod_usertrack"
     VHOST_ALIAS=on "Enable mod_vhost_alias"
     FILTER=on "Enable mod_filter"
     VERSION=on "Enable mod_version"
     PROXY=on "Enable mod_proxy"
     PROXY_CONNECT=on "Enable mod_proxy_connect"
     PATCH_PROXY_CONNECT=on "Patch proxy_connect SSL support"
     PROXY_FTP=off "Enable mod_proxy_ftp"
     PROXY_HTTP=on "Enable mod_proxy_http"
     PROXY_AJP=off "Enable mod_proxy_ajp"
     PROXY_BALANCER=off "Enable mod_proxy_balancer"
     PROXY_SCGI=off "Enable mod_proxy_scgi"
     SSL=on "Enable mod_ssl"
     SUEXEC=on "Enable mod_suexec"
     SUEXEC_RSRCLIMIT=off "SuEXEC rlimits based on login class"
     REQTIMEOUT=on "Enable mod_reqtimeout"
     CGID=on "Enable mod_cgid"

Установка PHP

Сразу обращу внимание на то, что не стоит ставить версию php 5.3, так как при работе с socengine наблюдались глюки и я сам первый раз напоролся на эти грабли.

cd /usr/ports/lang/php52 && make install clean

Опции сборки:

     CLI=on "Build CLI version"
     CGI=on "Build CGI version"
     APACHE=on "Build Apache module"
     DEBUG=off "Enable debug"
     SUHOSIN=on "Enable Suhosin protection system (not for jails)"
     MULTIBYTE=off "Enable zend multibyte support"
     IPV6=on "Enable ipv6 support"
     MAILHEAD=off "Enable mail header patch"
     REDIRECT=off "Enable force-cgi-redirect support (CGI only)"
     DISCARD=off "Enable discard-path support (CGI only)"
     FASTCGI=on "Enable fastcgi support (CGI only)"
     FPM=off "Enable fastcgi process manager (CGI only)"
     PATHINFO=on "Enable path-info-check support (CGI only)"

Установка PHP-extensions

Установим необходимые модули php-extensions:

cd /usr/ports/lang/php52-extensions && make install clean

Опции сборки:

     BCMATH=off "bc style precision math functions"
     BZ2=on "bzip2 library support"
     CALENDAR=off "calendar conversion support"
     CTYPE=on "ctype functions"
     CURL=on "CURL support"
     DBA=on "dba support"
     DBASE=off "dBase library support"
     DOM=on "DOM support"
     EXIF=on "EXIF support"
     FILEINFO=on "fileinfo support"
     FILTER=on "input filter support"
     FRIBIDI=on "FriBidi support"
     FTP=on "FTP support"
     GD=on "GD library support"
     GETTEXT=on "gettext library support"
     GMP=off "GNU MP support"
     HASH=on "HASH Message Digest Framework"
     ICONV=on "iconv support"
     IMAP=on "IMAP support"
     INTERBASE=off "Interbase 6 database support (Firebird)"
     JSON=on "JavaScript Object Serialization support"
     LDAP=off "OpenLDAP support"
     MBSTRING=on "multibyte string support"
     MCRYPT=on "Encryption support"
     MHASH=on "Crypto-hashing support"
     MING=off "ming shockwave flash support"
     MSSQL=on "MS-SQL database support"
     MYSQL=on "MySQL database support"
     MYSQLI=off "MySQLi database support"
     NCURSES=off "ncurses support (CLI only)"
     ODBC=off "unixODBC support"
     OPENSSL=on "OpenSSL support"
     PCNTL=off "pcntl support (CLI only)"
     PCRE=on "Perl Compatible Regular Expression support"
     PDF=on "PDFlib support (implies GD)"
     PDO=on "PHP Data Objects Interface (PDO)"
     PDO_SQLITE=on "PDO sqlite driver"
     PDO_MYSQL=on "PDO mysql driver"
     PGSQL=off "PostgreSQL database support"
     POSIX=on "POSIX-like functions"
     PSPELL=off "pspell support"
     READLINE=off "readline support (CLI only)"
     RECODE=off "recode support"
     SESSION=on "session support"
     SHMOP=on "shmop support"
     SIMPLEXML=on "simplexml support"
     SNMP=off "SNMP support"
     SOAP=on "SOAP support"
     SOCKETS=on "sockets support"
     SPL=on "Standard PHP Library"
     SQLITE=on "sqlite support"
     SYBASE_CT=off "Sybase database support"
     SYSVMSG=off "System V message support"
     SYSVSEM=off "System V semaphore support"
     SYSVSHM=off "System V shared memory support"
     TIDY=off "TIDY support"
     TOKENIZER=on "tokenizer support"
     WDDX=off "WDDX support (implies XML)"
     XML=on "XML support"
     XMLREADER=on "XMLReader support"
     XMLRPC=on "XMLRPC-EPI support"
     XMLWRITER=on "XMLWriter support"
     XSL=off "XSL support (Implies DOM)"
     YAZ=on "YAZ support (ANSI/NISO Z39.50)"
     ZIP=on "ZIP support"
     ZLIB=on "ZLIB support"

Мод mod_rpaf2

Соберем данный модуль.

/usr/ports/www/mod_rpaf2 && make install clean

MySQL

Установим и настроим MYSQL:

/usr/ports/databases/mysql50-server && make install clean

Настроим MYSQL и изменим пароль суперпользователя.

/usr/local/bin/mysql_install_db
chown -R mysql /var/db/mysql/
cp /usr/local/share/mysql/my-large.cnf  /usr/local/etc/my.cnf
/usr/local/etc/rc.d/mysql-server onestart
/usr/local/bin/mysqladmin -u root password 'новый пароль'

Изменим конфигурационный файл MYSQL:

# The following options will be passed to all MySQL clients
[client]
#password       = your_password
port            = 3306
socket          = /tmp/mysql.sock
 
# The MySQL server
[mysqld]
port            = 3306
socket          = /tmp/mysql.sock
skip-locking
key_buffer = 256M
max_allowed_packet = 1M
table_cache = 256
sort_buffer_size = 1M
read_buffer_size = 1M
read_rnd_buffer_size = 4M
myisam_sort_buffer_size = 64M
thread_cache_size = 8
query_cache_size= 16M
# Try number of CPU's*2 for thread_concurrency
thread_concurrency = 2
 
skip-federated
log-bin=mysql-bin
server-id       = 1
 
[mysqldump]
quick
max_allowed_packet = 16M
 
[mysql]
no-auto-rehash
# Remove the next comment character if you are not familiar with SQL
#safe-updates
 
[isamchk]
key_buffer = 128M
sort_buffer_size = 128M
read_buffer = 2M
write_buffer = 2M
 
[myisamchk]
key_buffer = 128M
sort_buffer_size = 128M
read_buffer = 2M
write_buffer = 2M
 
[mysqlhotcopy]
interactive-timeout

Утилита ffmpeg

Установим саму утилиту для обработки видео ffmpeg, но тут появились проблемы.

cd /usr/ports/multimedia/ffmpeg

Версия в портах:

Port:   ffmpeg-0.6_3,1
Path:   /usr/ports/multimedia/ffmpeg
Info:   Realtime audio/video encoder/converter and streaming server
Maint:  _mm@FreeBSD.org
B-deps: binutils-2.20.1_3 damageproto-1.2.0 dri2proto-2.2..
WWW:    _http://ffmpeg.mplayerhq.hu/

Эта версия у меня не все форматы кодировала, может быть из-за того что ключи при конвертировании поменялись, может надо было лезть в код и править что то, но я поступил иначе :) Откатываемся на стабильную и рабочую версию ffmpeg при помощи утилиты portdowngrade.

/usr/ports/ports-mgmt/portdowngrade
make DEFAULT_CVS_SERVER="anoncvs@anoncvs1.FreeBSD.org:/home/ncvs" install clean

После установки portdowngrade откатываем нам нужный порт на нужную версию

cd /usr/ports
portdowngrade multimedia/ffmpeg
 
portdowngrade 0.6 by Heiner Eichmann
Please note, that nothing is changed in the ports tree
unless it is explicitly permitted in step 6!
 
Seeking port multimedia/ffmpeg ...
 
Found several matches:
1: multimedia/ffmpeg
2: multimedia/ffmpeg-devel
3: multimedia/ffmpeg2theora
4: multimedia/ffmpegthumbnailer
 
Please choose one: 1
 
Downgrading port: multimedia/ffmpeg
 
Step 1: Checking out port from CVS repository
CVS root directory: anoncvs@anoncvs1.FreeBSD.org:/home/ncvs
 
Step 2: Reading the port history from the CVS repository
 
Step 3: Analyzing the port history from the CVS repository
Step 4: Load port version numbers and present results
Keys: <space> : next page                      d : details
            p : previous page
      <enter> : leave presentation and downdgrade if wanted
===============================
number         date         portversion  comment
    1  2010/08/01 20:41:25  0.6_3        - Fix architecture recognition [1]
    2  2010/07/27 18:53:42  0.6_2        Add VP8 codec support via libvpx and enable by default
    3  2010/07/25 16:18:15  0.6_1        Add missing files to PORTDOCS
    4  2010/07/24 16:38:14  0.6          - Update ffmpeg to 0.6
    5  2010/07/24 15:30:14  0.5.2_3      - Update x264 to 20100624 (build 98)
    6  2010/06/09 16:38:59  0.5.2_2      - Support SSSE3 by default
    7  2010/06/09 16:24:45  0.5.2_2      - Fix CFLAGS
    8  2010/06/06 20:43:54  0.5.2_1      Bump PORTREVISION for ports that depend on libogg, directly or indirectly
    9  2010/05/30 09:17:59  0.5.2        - Update to 0.5.2
   10  2010/04/21 12:56:46  0.5.1_3      - Update x264 to shared library version 85
   11  2010/04/18 20:41:52  0.5.1_2      - Add ssse3 support to OPTIONS
   12  2010/04/18 12:07:45  0.5.1_2      - Fix mmx/sse support in amd64 package [1]
   13  2010/03/27 00:13:31  0.5.1_1      Begin the process of deprecating sysutils/rc_subr by
   14  2010/03/24 18:44:18  0.5.1_1      - Update schroedinger to 1.0.9
   15  2010/03/10 14:03:01  0.5.1        - Fix configure option if building WITH_FAAC
   16  2010/03/10 11:00:00  0.5.1        - Update to 0.5.1
   17  2010/01/19 11:24:04  0.5_2        - Unbreak build if recent multimedia/v4l-compat is installed
   18  2009/12/31 11:15:30  0.5_2        - Move x11grab to OPTIONS as this requires x11, disable by default
   19  2009/10/16 11:24:04  0.5_1        - fix VUPEN/ADV-2009-2678
   20  2009/08/12 10:30:16  0.5          - Add ffmpeg-devel to CONFLICTS
   21  2009/08/12 08:43:17  0.5          - Update ffmpeg to 0.5
   22  2009/07/06 21:25:53  unknown      Bump PORTREVISION after libogg and libvorbisfile major version increment.
   23  2009/03/31 13:58:16  unknown      - Update x264 to 0.0.20081218
   24  2009/03/24 16:58:56  unknown      - Add MAKE_JOBS_SAFE to support SMP compilation
   25  2009/03/16 19:38:08  unknown      - Fix 4xm Processing Memory Corruption Vulnerability
   26  2009/02/21 15:51:14  unknown      - Chase audio/faad shlib bump
   27  2008/09/07 03:31:58  unknown      Force ffserver in to the background.
   28  2008/09/05 15:20:46  unknown      - Fix OPTIMIZED_CFLAGS option on gcc 4.2 (at least): explicitly disable
   29  2008/08/17 02:58:21  unknown      Fix build when ARH_NV or ARM_WB is defined
   30  2008/08/14 22:08:02  unknown      Enable the img_resample (old) code even if ffmpeg is built with libswscale
   31  2008/08/11 04:33:45  unknown      Append -I${includedir}/ffmpeg on to the Cflags in the pkg-config files.
   32  2008/08/11 02:41:45  unknown      Fix the plist after the recent commit.
   33  2008/08/10 19:46:42  unknown      Build libswscale by default once again.  I could not reproduce any problems
   34  2008/08/05 03:02:39  unknown      Fix compat headers installation, bump the PORTREVISION.
   35  2008/07/28 21:17:38  unknown      Install all the ffmpeg headers in a compat location to fix build of many ports
   36  2008/07/27 23:51:20  unknown      Update to 2008-07-27 snapshot
   37  2008/04/27 10:22:56  unknown      - move knobs into OPTIONS, make (almost) everything selectable
Total lines: 124. Command:
Enter version number to change port to (0: exit): 5
 
 
Step 5: Checking out choosen date of the port from the CVS repository
 
Step 6: Modifying the port
Port: multimedia/ffmpeg
at : 2010/07/24 15:30:14
Type 'yes' to bring the port to the state of the date above
or 'no' to exit without changing anything. Note, that this only changes
the port, not the installed software! yes or no:yes
 
The port has been set to the selected version. Install it if you wish.
If you have portupgrade installed, you should run
 
portsdb -Uu
 
now, to see the changes in the ports database. In any case
 
portupgrade -f ffmpeg
 
will install the changed port. Note: if you run cvsup, the port
is changed back to the choosen label!

Проверим что получилось:

PORTNAME=       ffmpeg
PORTVERSION=    0.5.2
PORTREVISION=   3

Установим нужный порт:

cd /usr/ports/multimedia/ffmpeg && make install clean

Опции сборки:

     AMR_NB=off "AMR Narrow Band encoder"
     AMR_WB=off "AMR Wide Band encoder"
     DIRAC=off "Dirac codec via libdirac"
     FAAC=on "FAAC mp4/aac audio encoder"
     FAAD=on "FAAD mp4/aac audio decoder"
     FFSERVER=on "Build and install ffserver"
     GSM=off "GSM audio codec"
     IPV6=on "IPV6 network support"
     LAME=on "LAME MP3 encoder"
     OPENJPEG=on "JPEG 2000 decoder"
     OPTIMIZED_CFLAGS=on "Additional optimizations"
     SCHROEDINGER=on "Dirac codec via libschroedinger"
     SDL=off "SDL support (build ffplay)"
     SPEEX=off "Speex audio decoder"
     SSSE3=on "Enable ssse3 support"
     THEORA=on "Theora encoder (implies OGG)"
     VHOOK=off "Video hook support"
     VORBIS=on "Vorbis encoder via libvorbis (implies OGG)"
     X11GRAB=off "enable X11 grabbing"
     X264=on "H.264 encoder"
     XVID=on "Xvid encoder via xvidcore"

Будьте особо внимательны при выборе опций, не стоит спешить, тогда все будет работать корректно.

Дополнительные модули

Установим модуль php-ffmpeg.

cd /usr/ports/graphics/php5-ffmpeg && make install clean

И утилиту flvtool2, которая будет заниматься созданием превью и записью метаданных видео.

cd /usr/ports/multimedia/ruby-flvtool2 && make install clean

Ставим memcached.

cd /usr/ports/databases/memcached && make install clean

Устанавливаем расширение pecl-memcache.

cd /usr/ports/databases/pecl-memcache && make install clean

Nginx и Apache

Установим Nginx:

cd /usr/ports/www/nginx-devel && make install clean

Опции сборки:

     DEBUG=off "Enable nginx debugging"
     DEBUGLOG=off "Enable debug log (--with-debug)"
     FILE_AIO=off "Enable file aio"
     IPV6=off "Enable IPv6"
     GOOGLE_PERFTOOLS=off "Enable google perftools module"
     HTTP_MODULE=on "Enable HTTP module"
     HTTP_ADDITION_MODULE=on "Enable http_addition module"
     HTTP_CACHE_MODULE=on "Enable http_cache module"
     HTTP_DAV_MODULE=off "Enable http_webdav module"
     HTTP_FLV_MODULE=on "Enable http_flv module"
     HTTP_GEOIP_MODULE=off "Enable http_geoip module"
     HTTP_GZIP_STATIC_MODULE=on "Enable http_gzip_static module"
     HTTP_IMAGE_FILTER_MODULE=on "Enable http_image_filter module"
     HTTP_PERL_MODULE=on "Enable http_perl module"
     HTTP_RANDOM_INDEX_MODULE=on "Enable http_random_index module"
     HTTP_REALIP_MODULE=on "Enable http_realip module"
     HTTP_REWRITE_MODULE=on "Enable http_rewrite module"
     HTTP_SECURE_LINK_MODULE=off "Enable http_secure_link module"
     HTTP_SSL_MODULE=on "Enable http_ssl module"
     HTTP_STATUS_MODULE=on "Enable http_stub_status module"
     HTTP_SUB_MODULE=on "Enable http_sub module"
     HTTP_XSLT_MODULE=off "Enable http_xslt module"
     MAIL_MODULE=on "Enable IMAP4/POP3/SMTP proxy module"
     MAIL_IMAP_MODULE=on "Enable IMAP4 proxy module"
     MAIL_POP3_MODULE=on "Enable POP3 proxy module"
     MAIL_SMTP_MODULE=on "Enable SMTP proxy module"
     MAIL_SSL_MODULE=on "Enable mail_ssl module"
     WWW=on "Enable html sample files"
     CACHE_PURGE_MODULE=on "3rd party cache_purge module"
     ECHO_MODULE=on "3rd party echo module"
     HEADERS_MORE_MODULE=off "3rd party headers_more module"
     HTTP_ACCEPT_LANGUAGE=on "3rd party accept_language module"
     HTTP_ACCESSKEY_MODULE=off "3rd party http_accesskey module"
     HTTP_AUTH_PAM_MODULE=off "3rd party http_auth_pam module"
     HTTP_AUTH_REQ_MODULE=on "3rd party http_auth_request module"
     HTTP_EVAL_MODULE=off "3rd party eval module"
     HTTP_FANCYINDEX_MODULE=on "3rd party http_fancyindex module"
     HTTP_GUNZIP_FILTER=on "3rd party http_gunzip_filter module"
     HTTP_MOGILEFS_MODULE=off "3rd party mogilefs module"
     HTTP_MP4_H264_MODULE=on "3rd party mp4/h264 module"
     HTTP_NOTICE_MODULE=on "3rd party notice module"
     HTTP_PUSH_MODULE=on "3rd party push module"
     HTTP_REDIS_MODULE=off "3rd party http_redis module"
     HTTP_RESPONSE_MODULE=on "3rd party http_response module"
     HTTP_UPLOAD_MODULE=on "3rd party upload module"
     HTTP_UPLOAD_PROGRESS=on "3rd party uploadprogress module"
     HTTP_UPSTREAM_FAIR=on "3rd party upstream fair module"
     HTTP_UPSTREAM_HASH=on "3rd party upstream hash module"
     HTTP_UPSTREAM_KEEPALIVE=on "3rd party upstream keepalive module"
     HTTP_ZIP_MODULE=on "3rd party http_zip module"
     MEMC_MODULE=on "3rd party memc (memcached) module"
     PASSENGER_MODULE=off "3rd party passenger module"
     SLOWFS_CACHE_MODULE=on "3rd party slowfs_cache module"
     SUPERVISORD_MODULE=off "3rd party supervisord module"
     UDPLOG_MODULE=off "3rd party udplog (syslog) module"

Итак , приступим к настройке связки nginx+apache. Принцип работы такой:

Настроим конфигурационный файл апача и приведем его к такому виду:

ee /usr/local/etc/apache22/httpd.conf
Listen 88 # меняем порт , который будет слушать апач
 
#<Directory />  # Эту секцию закомментируем
#    AllowOverride None
#    Order deny,allow
#    Deny from all
#</Directory>
 
<IfModule dir_module>
    DirectoryIndex index.html index.php # добавляем тип расширения
</IfModule>
LoadModule rpaf_module        libexec/apache22/mod_rpaf.so # После установки, строка закомментирована. 
Include etc/apache22/extra/httpd-vhosts.conf # расскоментируем для виртуальных хостов
RPAFenable On
RPAFsethostname On
RPAFproxy_ips 127.0.0.1 IP сервера
RPAFheader X-Forwarded-For
 
AddType application/x-httpd-php .php## включаем php
AddType application/x-httpd-php-source .phps

Идем настраивать виртульный хост

ee /usr/local/etc/apache22/extra/httpd-vhosts.conf

Меняем в конфигурационном файле

NameVirtualHost 127.0.0.1:88
<VirtualHost 127.0.0.1:88>
    ServerAdmin webmaster@dummy-host.example.com
    DocumentRoot "/usr/local/www/domain"
    ServerName domain
    ServerAlias _www.domain
    ErrorLog "/var/log/domain-error_log"
    CustomLog "/var/log/domain-access_log" common
</VirtualHost>

На этом настройка закончена. Далее будем настраивать Nginx.
Внесем основные параметры, а виртуальные хосты вынесем в другую директорию, например vhosts.

mkdir /usr/local/etc/nginx/vhosts 
ee /usr/local/etc/nginx/nginx.conf

nginx.conf

# пользователь от кого запущен nginx
user  www www; 
# количество воркеров как и количество ядер
worker_processes 2;
worker_priority -5;
worker_rlimit_nofile 51200;
 
error_log  logs/error.log info;
 
#pid        logs/nginx.pid;
 
events {
# число одновременных коннектов
    worker_connections  2000;
}
 
http {
    include       mime.types;
    default_type  application/octet-stream;
 
    log_format  main  '$remote_addr - $remote_user [$time_local] $status '
                      '"$request" $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "http_x_forwarded_for"';
 
    access_log  logs/access.log  main;
 
sendfile on;
tcp_nopush on;
tcp_nodelay on;
send_lowat 12000;
 
client_header_timeout  3m;
client_body_timeout    3m;
send_timeout           3m;
keepalive_timeout  65;
client_header_buffer_size    1k;
large_client_header_buffers  4 4k;
 
output_buffers   4 32k;
 
#Compressing
gzip on;
proxy_send_timeout   90;
proxy_read_timeout   90;
proxy_buffer_size    8k;
proxy_buffers     16 64k;
proxy_buffering on;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 10m;
#proxy_connect_timeout 120s;
proxy_redirect     off;
 
 
include  vhosts/*.conf;

Идем в vhosts и создаем конфигурационный файл для виртуалхоста:

cd vhosts
vi domain.conf

Пример моей конфигурации:

server {
        listen       80;
        server_name  domain.org _www.domain.org;
 
        access_log  logs/domain.org.access.log  main;
        open_file_cache             max=100000 inactive=40s;
        open_file_cache_valid       60s;
        open_file_cache_min_uses    2;
        open_file_cache_errors      on;
 
        # Main location
        location / {
            proxy_pass         _http://127.0.0.1:88/;
            proxy_redirect     off;
 
            proxy_set_header   Host             $host;
            proxy_set_header   X-Real-IP        $remote_addr;
            proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
 
            client_max_body_size       1000m;
            client_body_buffer_size    128k;
 
            proxy_connect_timeout      90;
            proxy_send_timeout         90;
            proxy_read_timeout         90;
 
            proxy_buffer_size          4k;
            proxy_buffers              4 32k;
            proxy_busy_buffers_size    64k;
            proxy_temp_file_write_size 10m;
        }
## Эта директива отвечает за отдачу стриминга видео
        location ~ \.flv$ {
        flv;
        }
        # То что отдаем обрабатывать nginx, все что не попало , отдает апач
        location ~* ^.+\.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|flv|rtf|js|swf|iso)$ {
            root   /usr/local/www/domain;
        }
 
    }

eAccelerator

Ставим ускоритель.

cd /usr/ports/www/eaccelerator && make install clean

Cоздаем директорию для кеша и назначаем права

root# mkdir /var/eaccelerator
root# chown www:www /var/eaccelerator
root# chmod 0700 /var/eaccelerator

Вносим изменения в php.ini

cd /usr/local/etc
cp php.ini-dist php.ini
vi php.ini 

И вносим параметры для включения модуля:

zend_extension="/usr/local/lib/php/20060613/eaccelerator.so"
eaccelerator.enable="1"
eaccelerator.shm_size="128"
eaccelerator.cache_dir="/var/eaccelerator"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.debug="0"
eaccelerator.filter=""
eaccelerator.shm_max = "0"
eaccelerator.shm_ttl="3600"
eaccelerator.shm_prune_period="0"
eaccelerator.shm_only="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"

Дополнительная настройка системы

Приступаем к дополнительной настройки нашего сервера, идем править rc.conf для внесения нужных нам записей:

apache22_enable="YES"
accf_http_load="YES"
mysql_enable="YES"
memcached_enable="YES"
memcached_flags="-l 127.0.0.1"
nginx_enable="YES"

Настроим sysctl.conf

kern.sync_on_panic=1
kern.coredump=0
security.bsd.conservative_signals=1
security.bsd.unprivileged_proc_debug=0
security.bsd.unprivileged_read_msgbuf=0
security.bsd.unprivileged_get_quota=0
kern.ipc.shmmax=134217728
kern.ipc.shmall=32768
kern.ipc.semmap=256
kern.ipc.nmbclusters=262144
#########
kern.ipc.somaxconn=4096
 
# Shared memory // 7.2+ can use shared memory > 2Gb
kern.ipc.shmmax=2147483648
# Sockets
kern.ipc.maxsockets=204800
# Do not use lager sockbufs on 8.0
# ( _http://old.nabble.com/Significant-performance-regression-for-increased-maxsockbuf-on-8.0-RELEASE-tt26745981.html#a26745981 )
kern.ipc.maxsockbuf=262144
# Every socket is a file, so increase them
kern.maxfiles=204800
kern.maxfilesperproc=200000
kern.maxvnodes=200000
# Small send space is useful for http servers that serve small files
# Autotuned since 7.x
#net.inet.tcp.sendspace=16384
 
# Increase portrange
# For outgoing connections only. Good for seed-boxes and ftp servers.
net.inet.ip.portrange.first=1024
net.inet.ip.portrange.last=65535
# Security
net.inet.ip.redirect=0
net.inet.ip.sourceroute=0
net.inet.ip.accept_sourceroute=0
net.inet.icmp.maskrepl=0
net.inet.icmp.log_redirect=0
net.inet.icmp.drop_redirect=1
net.inet.tcp.drop_synfin=1
# Security
net.inet.udp.blackhole=1
net.inet.tcp.blackhole=2
# Increases default TTL, sometimes useful
# Default is 64
net.inet.ip.ttl=128
# Lessen max segment life to conserve resources
# ACK waiting time in miliseconds (default: 30000 from RFC)
net.inet.tcp.msl=5000
# Max bumber of timewait sockets
net.inet.tcp.maxtcptw=200000
# Should be increased when you have A LOT of files on server
# (Increase until vfs.ufs.dirhash_mem becomes lower)
vfs.ufs.dirhash_maxmem=67108864
 
# Note from commit _http://svn.freebsd.org/base/head@211031 :
# For systems with RAID volumes and/or virtualization envirnments, where
# read performance is very important, increasing this sysctl tunable to 32
# or even more will demonstratively yield additional performance benefits.
vfs.read_max=32

Запуск

Запускаем сервисы

/usr/local/etc/rc.d/apache22 start
/usr/local/etc/rc.d/nginx start
/usr/local/etc/rc.d/memcached start

Проверяем запустились ли корректно сервисы:
httpd:

ps ax | grep httpd
45476  ??  Ss     0:01.72 /usr/local/sbin/httpd -DNOHTTPACCEPT
45477  ??  I      0:00.00 /usr/local/sbin/httpd -DNOHTTPACCEPT
45478  ??  I      1:57.17 /usr/local/sbin/httpd -DNOHTTPACCEPT
45479  ??  S      0:58.02 /usr/local/sbin/httpd -DNOHTTPACCEPT
45480  ??  I      1:20.96 /usr/local/sbin/httpd -DNOHTTPACCEPT
45481  ??  I      0:41.50 /usr/local/sbin/httpd -DNOHTTPACCEPT
45482  ??  I      0:52.08 /usr/local/sbin/httpd -DNOHTTPACCEPT
45483  ??  S      1:06.11 /usr/local/sbin/httpd -DNOHTTPACCEPT
45496  ??  I      0:28.35 /usr/local/sbin/httpd -DNOHTTPACCEPT
51859  ??  I      0:24.14 /usr/local/sbin/httpd -DNOHTTPACCEPT
55619   0  R+     0:00.00 grep httpd

nginx:

ps ax | grep nginx
51854  ??  Is     0:00.00 nginx: master process /usr/local/sbin/nginx
51855  ??  S<     0:05.98 nginx: worker process (nginx)
51856  ??  S<     0:03.93 nginx: worker process (nginx)
55628   0  R+     0:00.00 grep nginx

ps ax | grep memcached
 1121  ??  Is     0:02.31 /usr/local/bin/memcached -l 127.0.0.1 -d -u nobody
55630   0  RL+    0:00.00 grep memcached

В директории сайта создаем файл phpinfo.php и проверяем, работает ли php и загрузились ли все необходимые модули.

<?php
phpinfo();
?>

Если что то не так или не запустилось то, смотрим логи.

Установку ФТП сервера описывать не буду, у каждого свой вкус.
Вот вариант настройки Pure-FTPd+MySQL+Web

Дополнительные материалы
Ссылки: 
>>ВЕТКА ФОРУМА<<
Ваша оценка: Нет Средняя: 5 (17 голосов)

Redmine - управление проектами (Apache)

Redmine — открытое серверное веб-приложение для управления проектами и отслеживания ошибок. Redmine написан Ruby и представляет собой приложение на основе широко известного веб-фреймворка Ruby on Rails.

Данный продукт предоставляет следующие возможности:

  • ведение нескольких проектов;
  • гибкая система доступа, основанная на ролях;
  • система отслеживания ошибок;
  • диаграммы Ганта и календарь;
  • ведение новостей проекта, документов и управление файлами;
  • оповещение об изменениях с помощью RSS-потоков и электронной почты;
  • вики для каждого проекта;
  • форумы для каждого проекта;
  • учёт временных затрат;
  • настраиваемые произвольные поля для инцидентов, временных затрат, проектов и пользователей;
  • лёгкая интеграция с репозиториями (SVN, CVS, Git, Mercurial, Bazaar и Darcs);
  • создание записей об ошибках на основе полученных писем;
  • поддержка множественной аутентификации LDAP;
  • возможность самостоятельной регистрации новых пользователей;
  • многоязыковой интерфейс (в том числе русский);
  • поддержка СУБД MySQL, PostgreSQL, SQLite, Oracle.

Содержание:

  • Введение
  • Установка Redmine
  • Настройка MYSQL
  • Настройка Ruby
  • Настройка Apache
  • Настройка Redmine
    • Запуск
    • Настройка SMTP сервера
    • Настройка Хранилища
  • Обновление
  • Описание
  • FAQ

Введение

Я буду устанавливать на "голую" FreeBSD 8.0 i386 и поэтому у меня будет больше запросов по установке, а у вас соответственно меньше.

Установка Redmine

Установим классически из портов:

# cd /usr/ports/
bsd# make search name=Redmine
Port:   redmine-0.9.1
Path:   /usr/ports/www/redmine
Info:   A flexible project management web application
Maint:  decke@bluelife.at
B-deps: libiconv-1.13.1 ruby-1.8.7.248,1 ...
R-deps: libiconv-1.13.1 mysql-client-5.0.89 ...
WWW:    _http://www.redmine.org/
 
Port:   redmine-basecamp-20091116
Path:   /usr/ports/www/redmine-basecamp
Info:   Basecamp Theme for Redmine
Maint:  decke@bluelife.at
B-deps:
R-deps: libiconv-1.13.1 mysql-client-5.0.89 ...
WWW:    _http://www.redmine.org/wiki/redmine/ThemeBasecamp
 
# cd /usr/ports/www/redmine && make install clean
 
~~
Options for redmine 0.9.1
 
[X] MYSQL       Enable MySQL Support
[ ] POSTGRESQL  Enable PostgreSQL Support
 
~~
Options for ruby 1.8.7.248,1
 
[ ] ONIGURUMA  Build with oniguruma regular expressions lib
[ ] IPV6       Enable IPv6 support
[X] RDOC       Build and install Rdoc indexes
[ ] DEBUG      Compile-in debug info
 
~~~
 Options for perl 5.8.9_3
 
[ ] DEBUGGING      Build with debugging support
[ ] GDBM           Build GDBM_File extension
[X] PERL_MALLOC    Use Perl malloc
[X] PERL_64BITINT  Use 64 bit integers (on i386)
[ ] THREADS        Build threaded perl
[ ] SUIDPERL       Build set-user-id suidperl binary
[ ] SITECUSTOMIZE  Run-time customization of @INC
[X] USE_PERL       Rewrite links in /usr/bin
 
~~~
Options for m4 1.4.13,1
 
[ ] LIBSIGSEGV  Use libsigsegv for better diagnostics 
 
~~~
Options for libiconv 1.13.1
 
[X] EXTRA_ENCODINGS  Include extra character sets
[ ] EXTRA_PATCHES    Apply patches to fix CP932 add EUCJP-MS
 
~~
=============================================================================
 
Redmine was installed.
 
You now need to setup your Redmine installation so
please have a look at the Installation Guide.
 
_http://www.redmine.org/wiki/redmine/RedmineInstall
 
 
If you are upgrading please read the Upgrading Guide
before starting the new version.
 
_http://www.redmine.org/wiki/redmine/RedmineUpgrade
 
=============================================================================
===>   Registering installation for redmine-0.9.1
===>  Cleaning for ruby-1.8.7.248,1
===>  Cleaning for ruby18-iconv-1.8.7.248,1
===>  Cleaning for rubygem-rake-0.8.7
===>  Cleaning for ruby18-mysql-2.8.1
===>  Cleaning for automake-1.10.1
===>  Cleaning for autoconf-2.62
===>  Cleaning for libiconv-1.13.1
===>  Cleaning for ruby18-gems-1.3.5
===>  Cleaning for mysql-client-5.0.89
===>  Cleaning for perl-5.8.9_3
===>  Cleaning for automake-wrapper-20071109
===>  Cleaning for m4-1.4.13,1
===>  Cleaning for help2man-1.37.1
===>  Cleaning for gmake-3.81_3
===>  Cleaning for autoconf-wrapper-20071109
===>  Cleaning for libtool-2.2.6b
===>  Cleaning for p5-gettext-1.05_2
===>  Cleaning for gettext-0.17_1
===>  Cleaning for redmine-0.9.1

Настройка MYSQL

Создадим пустую БД и пользователя для работы с ней.

# mysql -h localhost --user=admin--password=XXXXX
mysql>create database redmine_project character set utf8;
mysql>create user 'redmine_project'@'localhost' identified by 'my_password';
mysql>grant all privileges on redmine_project.* to 'redmine_project'@'localhost';
mysql>exit;
Bye

Скопируем и изменим конфигурационный файл работы с БД config/database.yml.example в config/database.yml в соответствие с вашими параметрами.

# cd /usr/local/www/redmine/config/
# cp database.yml.example database.yml
# chmod u+w database.yml
# vi database.yml
 
production:
  adapter: mysql
  database: redmine_project
  host: localhost
  username: redmine_project
  password: my_password
  encoding: utf8

Настройка Ruby

Установим необходимые элементы Ruby:

Port:   rubygem-rails-2.3.4
Path:   /usr/ports/www/rubygem-rails
Info:   MVC web application framework
Maint:  pgollucci@FreeBSD.org
B-deps: libiconv-1.13.1 ruby-1.8.7.248,1 ...
R-deps: libiconv-1.13.1 ruby-1.8.7.248,1 ...
WWW:    _http://www.rubyonrails.org/
 
# cd /usr/ports/www/rubygem-rails && make install clean
 
Options for rubygem-rails 2.3.4
 
[X] FCGI             FastCGI support
[ ] MEMCACHE_CLIENT  MemCache-Client support
 
~~~
Options for rubygem-activerecord 2.3.4_1
 
[X] NATIVE_MYSQL       Use native MySQL bindings
[ ] NATIVE_POSTGRESQL  Use native PostgreSQL bindings
[ ] NATIVE_SQLITE3     Use native SQLite3 bindings
 
~~
===>  Cleaning for rubygem-activesupport-2.3.4_1
===>  Cleaning for rubygem-activerecord-2.3.4_1
===>  Cleaning for rubygem-actionpack-2.3.4
===>  Cleaning for rubygem-actionmailer-2.3.4
===>  Cleaning for rubygem-activeresource-2.3.4
===>  Cleaning for ruby18-fcgi-0.8.7
===>  Cleaning for rubygem-rack-1.0.1,1
===>  Cleaning for fcgi-devkit-2.4.0
===>  Cleaning for rubygem-rails-2.3.4

Установим необходимый порт для запуска Ruby под Apache. Немного ругается, что под другую версию Apache, но нам монописуально и отрехтуем до нужного состояния. =)

# make search name=passenger
Port:   rubygem-passenger-2.2.8
Path:   /usr/ports/www/rubygem-passenger
Info:   Modules for running Ruby on Rails and Rack applications
Maint:  jatzen@gmail.com
B-deps: apache-2.2.14_5 ...
R-deps: apache-2.2.14_5 ...
WWW:    _http://www.modrails.com/
 
# cd /usr/ports/www/rubygem-passenger
# make install clean
===>  rubygem-passenger-2.2.8 : Error from bsd.apache.mk. apache20
 is installed (or APACHE_PORT is defined) and port requires 2.2+.
*** Error code 1
 
Stop in /usr/ports/www/rubygem-passenger.
 
# vi Makefile
USE_APACHE=     2.0+ # 2.2+ > 2.0+
 
# make install clean
Options for rubygem-passenger 2.2.8
 
[X] APACHEPORT  Use apache22
[ ] NGINXPORT   Use nginx
~~
===>   Registering installation for rubygem-passenger-2.2.8
===> SECURITY REPORT:
      This port has installed the following files which may act as network
      servers and may therefore pose a remote security risk to the system.
/usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.8/lib/native_support.so
/usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.8/ext/
apache2/mod_passenger.so
/usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.8/ext/
apache2/ApplicationPoolServerExecutable
/usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.8/
ext/phusion_passenger/native_support.so
 
      If there are vulnerabilities in these programs there may be a security
      risk to the system. FreeBSD makes no guarantee about the security of
      ports included in the Ports Collection. Please type 'make deinstall'
      to deinstall the port if this is a concern.
 
      For more information, and contact details about the security
      status of this software, see the following webpage:
_http://www.modrails.com/
===>  Cleaning for rubygem-passenger-2.2.8

Настройка Apache

У меня установлен и настроен Apache-2.0.63 с mod_fastcgi-2.4.6

В конфигурацию Apache добавим следующий модуль:

# vi /usr/local/etc/apache2/httpd.conf
LoadModule passenger_module /usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.8/
ext/apache2/mod_passenger.so
PassengerRoot /usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.8

Виртуальный хост рисуем примерно так:

<VirtualHost *:80>
        Alias           /php-fcgi/      /usr/local/etc/fcgi_conf/Raven2000/
        ScriptAlias     /cgi-bin/       "/home/Raven2000/www/data/cgi-bin/"
        ServerAdmin     admin@test.site.local
        SuexecUserGroup Raven2000        Raven2000
        #DocumentRoot    /usr/home/Raven2000/www/data/redmine/public
        DocumentRoot    /usr/local/www/redmine/public
        ServerName      test.site.local
        ServerAlias
        <Directory /usr/local/www/redmine/public/>
                Options         Indexes FollowSymLinks MultiViews
                AllowOverride   All
                Order           deny,allow
                Allow           from all
        </Directory>
        DirectoryIndex  index.php index.html index.htm
        AddType         application/x-httpd-php .php
      ErrorLog        /home/Raven2000/www/log/test.site.local.error.log
      CustomLog       /home/Raven2000/www/log/test.site.local.access.log combined
</VirtualHost>

Настройка Redmine

Redmine хранит данные сессии в куках по умолчанию, который требует секрета и мы его создадим. Это можно сделать командой:

# cd /usr/local/www/redmine
# rake generate_session_store
(in /usr/local/www/redmine)

Для создания структуры базы данных, выполните следующую команду в каталоге Redmine.:

# rake db:migrate RAILS_ENV="production"
(in /usr/local/www/redmine)
~~~~
-- change_column(:wiki_content_versions, :data, :binary, {:limit=>16777216})
   -> 0.0095s
==  ChangeWikiContentsTextLimit: migrated (0.0203s) ===========================

Добавим дополнительные данные конфигурации (по умолчанию) в базу данных, выполнив следующую команду:
# rake redmine:load_default_data RAILS_ENV="production"
(in /usr/local/www/redmine)
 
Select language: bg, bs, ca, cs, da, de, el, en, es, fi, fr, gl, he, hr, hu, id,
it, ja, ko, lt, nl, no, pl, pt, pt-BR, ro, ru, sk, sl, sr, sv, th, tr, uk, vi,
zh, zh-TW [en] ru
====================================
Default configuration data loaded.

Укажем Redmine, что нужно использовать php-fcgi.

# cd /usr/local/www/redmine/public/
# cp dispatch.fcgi.example dispatch.fcgi

Запуск

Проверим правильность установки встроенного WEBrick веб-сервера:

# ruby script/server webrick -e production
=> Booting WEBrick
=> Rails 2.3.5 application starting on _http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
[2010-02-04 12:03:29] INFO  WEBrick 1.3.1
[2010-02-04 12:03:29] INFO  ruby 1.8.7 (2009-12-24) [i386-freebsd8]
[2010-02-04 12:03:29] INFO  WEBrick::HTTPServer#start: pid=15337 port=3000
^C[2010-02-04 12:04:33] INFO  going to shutdown ...
[2010-02-04 12:04:33] INFO  WEBrick::HTTPServer#start done.
Exiting

Итак встроенный веб-сервер работает теперь проверим Apache.

Запускаем Apache и в браузере вводим _http://test.site.local
Вводим учетную запись администратора
Логин: admin
Пароль: admin
В своем профиле меняем язык на Русский. И обязательно меняем дофолтовый пароль на свой.

Настройка SMTP сервера

Настроим систему рассылки сообщений.

# cd /usr/local/www/redmine/config
# cp email.yml.example email.yml
# cat email.yml
production:
  delivery_method: :smtp
  smtp_settings:
    address: mx.mail.ru
    port: 25
    domain: mx.mail.ru
    authentication: :login
    user_name: Raven2000@mail.ru
    password: XXX

Настройка Хранилища

Обновление

Обновлять просто для этого пройдемся по шагам:
0. Проверим рекомендации Requirements
1. Сохраним существующую БД командой mysqldump.
1.1 Оригинальные файлы сохраним tar.

# cd /usr/local/www/
# tar czf redmine.tar.gz redmine/

2.Обновим порты и сделайте portupgrade существующему порту на более новую версию.
3. Обновим структуру
# cd /usr/local/www/redmine
# rake db:migrate RAILS_ENV=production
(in /usr/local/www/redmine)
==  AddIndexOnChangesetsScmid: migrating ======================================
-- add_index(:changesets, [:repository_id, :scmid], {:name=>:changesets_repos_scmid})
   -> 0.3934s
==  AddIndexOnChangesetsScmid: migrated (0.3936s) =============================

3.1 Очистим кеш, tmp и сесии
# rake tmp:cache:clear
(in /usr/local/www/redmine)
 
# rake tmp:sessions:clear
(in /usr/local/www/redmine)

Описание

Пользователи системы

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

Роли

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

Пользователям назначается роль в каждом проекте, в котором он участвует, например «менеджер в проекте по разработке сайта А», «разработчик в проекте по поддержанию интранета компании» или «клиент в проекте по рефакторингу информационной системы компании Б».

Проекты

Проект является одним из основных понятий в предметной области систем управления проектами. Благодаря этой сущности возможно организовать совместную работу и планирование нескольких проектов одновременно с разграничением доступа различным пользователям (см. выше). Проекты допускают иерархическую вложенность.

Трекеры

Трекеры являются основной классификацией, по которой сортируются задачи в проекте. Само по себе понятие «трекер» восходит к системам учета ошибок (англ. Bug tracking tool), представшим каждая в отдельности один проект.

По сути, в Redmine трекеры представляют собой аналог подклассов класса «Задача» и являются основой для полиморфизма разного рода задач, позволяя определять для каждого их типа различные поля. Примерами трекеров являются «Улучшение», «Ошибка», «Документирование», «Поддержка»,

Задачи

Задачи являются центральным понятием всей системы, описывающим некую задачу, которую необходимо выполнить. У каждой задачи в обязательном порядке есть описание и автор, в обязательном порядке задача привязана к трекеру.

Каждая задача имеет статус. Статусы представляют собой отдельную сущность с возможностью определения прав на назначение статуса для различных ролей (например, статус «отклонен» может присвоить только менеджер) или определение актуальности задачи (например, «открыт», «назначен» — актуальные, а «закрыт», «отклонен» — нет).

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

Значения других перечислимых свойств (например, приоритетность) хранятся в отдельной общей таблице.

Отслеживание изменения статуса задач

За отслеживание изменений параметров задач пользователями в системе отвечают две сущности: «Запись журнал изменений» и «Измененный параметр». Запись журнала отображает одно действие пользователя по редактированию параметров задачи и/или добавление комментария к ней. То есть служит одновременно инструментом ведения истории задачи и инструментом ведения диалога.

Сущность «Измененный параметр» привязана к отдельной записи журнала и предназначена для хранения старого и нового значения измененного пользователем параметра.

Связи между задачами

Задачи могут быть взаимосвязаны: например, одна задача является подзадачей для другой или предшествовать ей. Эта информация может быть полезна в ходе планирования разработки программы, за ее хранение в Redmine отвечает отдельная сущность.

Учет затраченного на проект времени

Система поддерживает учет затраченного времени благодаря сущности «Затраченное время», связанной с пользователями и задачей. Сущность позволяет хранить затраченное время, вид деятельности пользователя (разработка, проектирование, поддержка) и краткий комментарий к работе. Эти данные могут быть использованы, например, для анализа вклада каждого участника в проект или для оценки фактической трудоемкости и стоимости разработки

Привязка репозиториев

Redmine предоставляет возможность интеграции с различными системами контроля версий (репозиториями). Интеграция заключается в отслеживании изменений во внешнем репозитории, их фиксации в базе данных, анализе изменений с целью их привязки к определенным задачам, . В инфологической структуре системы за интеграцию с внешними репозиториями отвечают три сущности: «Репозиторий», «Редакция» и «Изменение». «Репозиторий» представляет собой связанную с проектом сущность, хранящую тип подключенного репозитория, его местонахождение и идентификационные данные его пользователя.

«Редакция» является отображением редакции репозитория, и, кроме информационных полей, может быть привязана к конкретной задаче (для этого требуется указать в описании изменений «refs #NUM», где NUM — номер задачи), и к пользователю-автору редакции. Сущность «Изменение» предназначена для хранения списка измененных (добавленных, удаленных, перемещенных, модифицированных) файлов в каждой редакции.

Получение уведомлений

Уведомления пользователей об изменениях, происходящих на сайте, осуществляется с помощью сущности «Наблюдатели», связывающей пользователей с объектами различных классов (проекты, задачи, форумы и др.). В базе данных хранятся также ключи доступа к подписке RSS, позволяющие получать уведомления посредством этой технологии, также уведомления рассылаются с помощью электронной почты.

FAQ

В. Проблема после обновления
О. Выполните

# rake config/initializers/session_store.rb
(in /usr/local/www/redmine)
# ruby script/server -e production
=> Booting WEBrick...
=> Rails 2.1.2 application started on <a href="http://0.0.0.0:3000<br />
=>" title="http://0.0.0.0:3000<br />
=>">http://0.0.0.0:3000<br />
=></a> Ctrl-C to shutdown server; call with --help for options

Дополнительные материалы
Ссылки: 
>>ВЕТКА ФОРУМА<<
Ваша оценка: Нет Средняя: 5 (12 голосов)

Zabbix - SMS

Статей про SMS оповещения от Zabbix уже написано немало и во многих реализованно через скрипт который завязан на любом из платных SMS шлюзов. Вот и компания в которую я перешел также использовался SMS шлюз от одной компании с perl скриптом. Когда я перевел мониторинг с Nagios на Zabbix я конечно переделал скрипт под него с perl на php, но мне нужно была свобода от сторонних фирм к примеру от того же интернета, а так же незабываем, что если отвалился интернет то и SMS не может быть доставлена в SMS шлюз (это зависимость от интернета).
И самое главное, что через эту фирму каждая SMS тарифицировалась по 2 руб. и в месяц уходил примерно 1000 руб.

Самая логичная мысль взять GSM телефон/модем и использовать в своих целях. Почитал, погуглил народ везде начинают указывать на всякие девайсы: GSM-Терминалы с COM портами или использование специфичных/старых телефонов.

Я пошел своей дорогой. У меня валялся обычный модем Huawei E1750 от Мегафона, он USB со всеми вытекающими. Подключил простой тариф без абонентской платы и взял к тарифную опцию Пакет «500 SMS» по 100 руб - 500 SMS.

Подключил модем к FreeBSD 9.0 и в dmesg -a увидел.

ugen1.4: <HUAWEI Technology> at usbus1
ugen1.4: <HUAWEI Technology> at usbus1 (disconnected)
ugen1.4: <HUAWEI Technology> at usbus1
u3g0: <HUAWEI Technology HUAWEI Mobile, class 0/0, rev 2.00/0.00, addr 4> on usbus1
u3g0: Found 3 ports.
umass0: <HUAWEI Technology HUAWEI Mobile, class 0/0, rev 2.00/0.00, addr 4> on usbus1
umass0:  SCSI over Bulk-Only; quirks = 0x0000
umass0:6:0:-1: Attached to scbus6
umass1: <HUAWEI Technology HUAWEI Mobile, class 0/0, rev 2.00/0.00, addr 4> on usbus1
umass1:  SCSI over Bulk-Only; quirks = 0x0000
umass1:7:1:-1: Attached to scbus7
(probe0:umass-sim0:0:0:0): TEST UNIT READY. CDB: 0 0 0 0 0 0 
(probe0:umass-sim0:0:0:0): CAM status: SCSI Status Error
(probe0:umass-sim0:0:0:0): SCSI status: Check Condition
(probe0:umass-sim0:0:0:0): SCSI sense: NOT READY asc:3a,0 (Medium not present)
cd1 at umass-sim0 bus 0 scbus6 target 0 lun 0
cd1: <HUAWEI Mass Storage 2.31> Removable CD-ROM SCSI-2 device 
cd1: 1.000MB/s transfers
cd1: Attempt to query device size failed: NOT READY, Medium not present
(probe1:umass-sim1:1:0:0): TEST UNIT READY. CDB: 0 0 0 0 0 0 
(probe1:umass-sim1:1:0:0): CAM status: SCSI Status Error
(probe1:umass-sim1:1:0:0): SCSI status: Check Condition
(probe1:umass-sim1:1:0:0): SCSI sense: NOT READY asc:3a,0 (Medium not present)
da0 at umass-sim1 bus 1 scbus7 target 0 lun 0
da0: <HUAWEI SD Storage 2.31> Removable Direct Access SCSI-2 device 
da0: 1.000MB/s transfers
da0: Attempt to query device size failed: NOT READY, Medium not present

Так же проверил:

# ls -lah /dev/cuaU*
crw-rw----  1 uucp  dialer    0, 124  3 май 12:43 /dev/cuaU0.0
crw-rw----  1 uucp  dialer    0, 125  3 май 12:33 /dev/cuaU0.0.init
crw-rw----  1 uucp  dialer    0, 126  3 май 12:33 /dev/cuaU0.0.lock
crw-rw----  1 uucp  dialer    0, 130  3 май 12:33 /dev/cuaU0.1
crw-rw----  1 uucp  dialer    0, 131  3 май 12:33 /dev/cuaU0.1.init
crw-rw----  1 uucp  dialer    0, 132  3 май 12:33 /dev/cuaU0.1.lock
crw-rw----  1 uucp  dialer    0, 136  3 май 12:33 /dev/cuaU0.2
crw-rw----  1 uucp  dialer    0, 137  3 май 12:33 /dev/cuaU0.2.init
crw-rw----  1 uucp  dialer    0, 138  3 май 12:33 /dev/cuaU0.2.lock

Модем опознавался как ugen1.4 и еще добавился в девайсы как cuaU0.0 это устройство я и буду использовать.

Необходимо добавить пользователя Zabbix в группу "uucp" и "dialer" для того чтобы можно было использовать модем этим демоном.

# pw groupmod uucp -m zabbix
# pw groupmod dialer -m zabbix
 
# pw groupshow dialer
dialer:*:68:zabbix
# pw groupshow uucp
uucp:*:66:zabbix
# rehash
# /usr/local/etc/rc.d/zabbix_server restart

Далее в Zabbix добавил новый способ оповещения с указанным устройством и настроил уведомлении об использования данного способа оповещения.
Администрирование->Способы оповещений

Тип: SMS
GSM модем: /dev/cuaU0.0

Теперь в своем профиле пользователя необходимо указать свой номер телефона и в Zabbix зайти Настройки->Действия с указанием об отправке уведомлений и по СМС.

Вот и все.

Дополнительные материалы
Ссылки: 
Ветка форума
Ваша оценка: Нет Средняя: 5 (13 голосов)

Zabbix - Шаблоны и их создание

Для многих устройств нет шаблонов в Zabbix, но я начал создавать свои шаблоны. Все они представлены ниже прикрепленные к статье. По каким требуются пояснения я буду писать. Так же я научу создавать шаблоны и так начнем.

Создание шаблонов для устройств CISCO

Скрипт на perl для генерации xml конфигурационных файлов Cisco Router и Cisco Catalyst.

1. Скачайте и разархивируйте Cisco_xml.zip (приложен к статье)
2. Настройте SNMP доступ на свиче или роутере

 snmp-server community XXXXXXX RO 1
 access-list 1 permit 10.0.2.0 0.0.0.255
 access-list 1 deny any

3. На unix сервере проверить SNMP настройку и выдачу данных с устройства:

snmpwalk -v 2c -c SNMP_community HostIP

4. Запустить скрипт (рекомендуется Perl Lib Net-SNMP)

./cisco_xml.pl Cisco_2960 IP 75 5 SNMP_community 5 Network
~~
.1.3.6.1.2.1.2.2.1.2.10005
.1.3.6.1.2.1.2.2.1.1.11
.1.3.6.1.2.1.2.2.1.3.10012
.1.3.6.1.2.1.2.2.1.3.10102
Num Ports:
Port Index 1:10501
Port Index 2:10009
Port Index 3:10014
Max Port: 10501  5

5. Импорт xml файла Template_Hostname.xml в Zabbix

Дальше в шаблоне удалите ненужные элементы данных, триггеры и при необходимости создайте свои графики и подключайте к нужным сетевым устройствам.

Шаблон для ATC SI2000

Шаблон скачиваем ниже статьи, но требуются следующие движения. Для мониторинга SI2000 через Zabbix нужно добавить нужные переменные в агент Zabbix который имеет доступ к SI2000 и может снимать статистику. Напрямую через SNMP запрашивать по нужному ключу не получиться тк при мониторинге упавших каналов имя порта никак не связано с номером ключа и меняется в зависимости от очередности получения ошибок. Так же необходимо выгружать всю таблицу, а не один ключ ибо не обновиться он. Для этого и добавляем переменную в забикс агенте в котором указываем запросить всю таблицу упавших каналов и по конвейеру отпрасить нужный нам и передать серверу Zabbix: zabbix_agentd.conf

UserParameter=status.port0,snmpwalk -v2c -c public 192.168.253.17 .1.3.6.1.4.1.1332.1.1.3.1 | grep -c 'STRING: "CLC00/CDG01.Port0"'
UserParameter=status.port1,snmpwalk -v2c -c public 192.168.253.17 .1.3.6.1.4.1.1332.1.1.3.1 | grep -c 'STRING: "CLC00/CDG01.Port1"'
UserParameter=status.port2,snmpwalk -v2c -c public 192.168.253.17 .1.3.6.1.4.1.1332.1.1.3.1 | grep -c 'STRING: "CLC00/CDG01.Port2"'
UserParameter=status.port3,snmpwalk -v2c -c public 192.168.253.17 .1.3.6.1.4.1.1332.1.1.3.1 | grep -c 'STRING: "CLC00/CDG01.Port3"'
UserParameter=status.port4,snmpwalk -v2c -c public 192.168.253.17 .1.3.6.1.4.1.1332.1.1.3.1 | grep -c 'STRING: "CLC00/CDG01.Port4"'
UserParameter=status.port5,snmpwalk -v2c -c public 192.168.253.17 .1.3.6.1.4.1.1332.1.1.3.1 | grep -c 'STRING: "CLC00/CDG01.Port5"'
UserParameter=status.port6,snmpwalk -v2c -c public 192.168.253.17 .1.3.6.1.4.1.1332.1.1.3.1 | grep -c 'STRING: "CLC00/CDG01.Port6"'
UserParameter=status.port7,snmpwalk -v2c -c public 192.168.253.17 .1.3.6.1.4.1.1332.1.1.3.1 | grep -c 'STRING: "CLC00/CDG01.Port7"'
UserParameter=status.port8,snmpwalk -v2c -c public 192.168.253.17 .1.3.6.1.4.1.1332.1.1.3.1 | grep -c 'STRING: "CLC00/CDG01.Port8"'
UserParameter=status.port9,snmpwalk -v2c -c public 192.168.253.17 .1.3.6.1.4.1.1332.1.1.3.1 | grep -c 'STRING: "CLC00/CDG01.Port9"'
UserParameter=status.port10,snmpwalk -v2c -c public 192.168.253.17 .1.3.6.1.4.1.1332.1.1.3.1 | grep -c 'STRING: "CLC00/CDG01.Port10"'
UserParameter=status.port11,snmpwalk -v2c -c public 192.168.253.17 .1.3.6.1.4.1.1332.1.1.3.1 | grep -c 'STRING: "CLC00/CDG01.Port11"'

Также в Zabbix добавлем шаблон к нужному серверу который может иметь доступ к АТС SIX000. Cнимается статистика для 10 каналов E1 возможно расширение.

Новые шаблоны на сервера:
Загрузил в WIKI и там же буду обновлять и загружать, а тут постить.
Wiki servers
+HP DL380 Gen5
+^HP DL380p Gen7
+^HP DL380p Gen8

Wiki switches|Routers
+Cisco 2960
+Cisco 2960g

Wiki ATC
+ SI2000

==
+ - добавлено
^ - обновлено

Дополнительные материалы
Ссылки: 
Ветка форума
Официальные шаблоны для новых веток Zabbix
Шаблоны на zabbix.com
Шаблоны на zabbix.org
Шаблоны на "зеленое мышко"
Файлы: 
application/zip iconCisco_xml.zip - Perl скрипт для создание шаблонов к cisco
application/zip iconping_check_templates.zip
application/zip iconzbx_templates_si2000.zip
application/zip iconcisco_2911_templates.zip
application/zip iconcisco_2960_templates.zip
application/zip iconcisco_2960g_templates.zip
application/zip iconcisco_3725_templates.zip
application/zip iconcisco_3925_templates.zip
Ваша оценка: Нет Средняя: 4.5 (15 голосов)

Zabbix - мониторим и отслеживаем

Приходит к нам осень.
Упали все листья -
Пора мониторить.
Хайку.

В один из дней я захотел узнавать о неполадках в сетевой инфраструктуре\серверов\сервисов\сайтов и тп не через пользователей или пока сам не споткнусь. А был бы своевременно предупрежден через sms\mail\jabber в ту же минуту когда начались неполадки. Мог посмотреть и визуально контролировать карты моей инфраструктуры удаленных серверов и сервисов и видеть в какой части сети или линии произошел сбой и\или какой сервис стал недоступным. И задумался о системе мониторинга, оповещения и отслеживания статусов разнообразных сервисов в компьютерной сети, серверов и сетевого оборудования.
Долго выбирал из таких систем как Nagios, Zenoss, Zabbix, GroundWork, OpenNMS и Opsview.
Читал информацию по каждой системе, тестировал и сравнивал каждую. Отказывался от проектов по разным причинам например нет нужного функционала или он есть, но не в базовой бесплатной поставке, а в ее коммерческом варианте. Так же в виду неудобной эксплуатации, отсутствие грамотной документации, поддержки, работой серверной части на всякой экзотики типа Zope\Python и тп.

Остановился я на системе Zabbix в виду того что:

  • Хорошо документирована
  • Существует поддержка как бесплатная (форум, Wiki, мануал, IRC, рассылки) так и коммерческая.
  • Создан - Backend на С frontend на php
  • Простое написание шаблонов и триггеров и удобное создание карт с связями по событиям и триггерам.
  • Нативные клиенты под Windows, Linux, MacOS, *BSD.

Содержание:

  • Введение
  • Установка серверной части
    • Создание БД
    • Конфигурационный файл сервера
    • Настройка fping
  • Установка веб-интерфейса
  • Установка клиентской части
    • Конфигурационный файл клиента
  • Запуск
  • Веб-интерфейс
    • Конфигуратор
  • Заключение
  • Дополнительная информация

Введение

ZABBIX состоит из четырех компонентов для основной работы вам потребуется первые три компоненты.
ZABBIX Server - это основное, программное обеспечение ZABBIX. Сервер может удаленно проверить сетевые службы (такие как веб-серверы и почтовые серверы, ssh и тп), используя простые виды проверки, но он также является центральным компонентом которой агенты сообщают о доступности и целостность информации и статистики. Сервер является центральным хранилищем, в котором хранятся все конфигурации, статистические и оперативные данные. ZABBIX, будет активно уведомлять администраторов когда возникают проблемы в любом из контролируемых систем. Он может также контролировать устройства использующих SNMP агентов.

ZABBIX Frontend - веб-интерфейс для обеспечения легкого доступа к данным мониторинга и конфигурации Zabbix откуда угодно и с любой платформы. Веб-интерфейс является частью Zabbix сервера, и, как правило (но не обязательно), запущен на одном физическом сервере, что один Zabbix сервер.

ZABBIX Агент - этот модуль нужен для того, чтобы активно контролировать ресурсы и приложений (таких как HDD, RAM, CPU статистику и т.д.) в сетевых системах, эти системы должны запустить ZABBIX агента. Агент будет собирать информацию с системы, на которой он работает, и представлять эти данные для дальнейшей обработки ZABBIX Server. В случае неудачи (например, жесткий диск заполнился или вышел из строя служебный процесс). ZABBIX Server может активно предупреждать администраторов о проблемах этой машины. ZABBIX агенты являются чрезвычайно эффективными из-за использования нативных системных вызовов для сбора статистической информации.

ZABBIX Proxy - это опциональный компонент развертывания ZABBIX. Прокси собирает данные о производительности и доступности данных от имени ZABBIX Server. Все собранные данные
обработанные локально передаются ZABBIX Server. ZABBIX прокси является идеальным решением для централизованного удаленного мониторинга мест, филиалов, сетей, не имеющих локальных администраторов.
ZABBIX прокси может быть также использована для уменьшения нагрузки одного ZABBIX Server. В этом случае только собирать данные прокси тем самым снижая нагрузку на обработку данных по клиентов у сервера.

Установка серверной части

# cd /usr/ports/
# make search name=zabbix
 
Port:   zabbix-agent-1.8.2_1,2
Path:   /usr/ports/net-mgmt/zabbix-agent
Info:   Enterprise-class open source distributed monitoring (agent)
Maint:  ports@christianserving.org
B-deps: libiconv-1.13.1_1
R-deps: libiconv-1.13.1_1
WWW:    _http://www.zabbix.com/
 
Port:   zabbix-frontend-1.8.2_1,2
Path:   /usr/ports/net-mgmt/zabbix-frontend
Info:   Enterprise-class open source distributed monitoring (frontend)
Maint:  ports@christianserving.org
B-deps:
R-deps: freetype2-2.3.11 jpeg-8_1 ...
WWW:    _http://www.zabbix.com/
 
Port:   zabbix-proxy-1.8.2_1,2
Path:   /usr/ports/net-mgmt/zabbix-proxy
Info:   Enterprise-class open source distributed monitoring (proxy)
Maint:  ports@christianserving.org
 B-deps: ca_root_nss-3.12.4 curl-7.20.0 gettext-0.17_1 ...
R-deps: ca_root_nss-3.12.4 curl-7.20.0 fping-2.4b2_1 ...
WWW:    _http://www.zabbix.com/
 
Port:   zabbix-server-1.8.2_1,2
Path:   /usr/ports/net-mgmt/zabbix-server
Info:   Enterprise-class open source distributed monitoring (server)
Maint:  ports@christianserving.org
B-deps: ca_root_nss-3.12.4 curl-7.20.0 gettext-0.17_1 ...
R-deps: ca_root_nss-3.12.4 curl-7.20.0 fping-2.4b2_1 ...
WWW:    _http://www.zabbix.com/

Приступим

# cd /usr/ports/net-mgmt/zabbix-server
# make config
 
Опцияs for zabbix-server 1.8.2_1,2              
 
[X] MYSQL   Use MySQL backend
[ ] PGSQL   Use PostgreSQL backend
[X] SQLITE  Use SQLite backend
[  ] IPV6    Support for IPv6
[X] LDAP    Support for checking LDAP servers
[X] JABBER  Use jabber media type
[X] FPING   Use fping for pinging hosts
[  ] SSH     Use libssh2 for SSH-based checks
 
# make install clean
 
Опцияs for libssh2 1.2.4,2
 
[ ] GCRYPT  Use libgcrypt instead of OpenSSL
[ ] TRACE   Enable debug packet traces
[X] ZLIB    Enable compression
 
~~
======================================================================
Zabbix requires a database.  If you are using SQLite, one will be
created automatically.  Otherwise you can install one as follows (<db>
is your database engine and <db_client> is its client program):
 
% cd /usr/local/share/zabbix/server/create
% cat schema/<db>.sql data/data.sql data/images_<db>.sql | <db_client>
 
To upgrade an existing database, see the scripts in
/usr/local/share/zabbix/server/upgrades.
======================================================================
===> Installing rc.d startup script(s)
===>   Compressing manual pages for zabbix-server-1.8.2_1,2
===>   Registering installation for zabbix-server-1.8.2_1,2
===> SECURITY REPORT:
      This port has installed the following files which may act as network
      servers and may therefore pose a remote security risk to the system.
/usr/local/sbin/zabbix_server
 
      This port has installed the following startup scripts which may cause
      these network services to be started at boot time.
/usr/local/etc/rc.d/zabbix_server
 
      If there are vulnerabilities in these programs there may be a security
      risk to the system. FreeBSD makes no guarantee about the security of
      ports included in the Ports Collection. Please type 'make deinstall'
      to deinstall the port if this is a concern.
 
      For more information, and contact details about the security
      status of this software, see the following webpage:
http://www.zabbix.com/
===>  Cleaning for libssh2-1.2.4,2
===>  Cleaning for zabbix-server-1.8.2_1,2

Создание БД

Создадим БД и пользователя работающего с ней:

# mysql -uroot -proot_pw
mysql> create database db_zabbix character set utf8;
mysql> quit;
# mysql -h localhost --user=root --password=root_pw -e"GRANT ALL ON db_zabbix.* TO /
username_zabbix@localhost IDENTIFIED BY 'username_zabbix_pw'" db_zabbix

Импортируем схемы:

# cd /usr/local/share/zabbix/server/create
# cat schema/mysql.sql data/data.sql data/images_mysql.sql | mysql -uusername_zabbix /
-pusername_zabbix_pw db_zabbix

Конфигурационный файл сервера

Создаем и редактируем конфигурационный файл серверной части:

# cd /usr/local/etc/zabbix
# ls
zabbix_agent.conf.sample  zabbix_agentd.conf.sample zabbix_server.conf.sample
# cp zabbix_server.conf.sample zabbix_server.conf
# chmod u+w zabbix_server.conf
# vi zabbix_server.conf

# Это конфигурационный файл для сервера ZABBIX
# Для получения более подробной информации о ZABBIX,
# посетите _http://www.zabbix.com 
 
 
############ ОСНОВНЫЕ ПАРАМЕТРЫ #################
 
### Опция: NodeID
#	Это определяет уникальные NodeID в распределенной установке,
#	0 - отдельный сервер
#
# Обязательный: no
# Диапазон: 0-999
# По умолчанию:
# NodeID=0
 
 
### Опция: ListenPort
#	Прослушаемый порт для ловушки
#
# Обязательный: no
# Диапазон: 1024-32767
# По умолчанию:
# ListenPort=10051
 
### Опция: SourceIP
#	Исходный IP-адрес для исходящих соединений.
#
# Обязательный: no
# По умолчанию:
# SourceIP=
 
### Опция: LogFile
#	Имя Log Файла
#	Если это не используете, то применяется syslog.
#
# Обязательный: no
# По умолчанию:
# LogFile=
 
LogFile=/tmp/zabbix_server.log
 
### Опция: LogFileSize
#	Максимальный размер файла журнала в MB. 
#	0 - отключения автоматической ротации журнала.
#
# Обязательный: no
# Диапазон: 0-1024
# По умолчанию:
# LogFileSize=1
 
### Опция: DebugLevel
#	Задает уровень отладки
#	0 - debug не создается
#	1 - критическая информация 
#	2 - информация об ошибках
#	3 - предупреждения (по умолчанию)
#	4 - для отладки (много информации) 
#
# Обязательный: no
# Диапазон: 0-4
# По умолчанию:
# DebugLevel=3
 
### Опция: PidFile
#	Имя PID файла.
#
# Обязательный: no
# По умолчанию:
# PidFile=/tmp/zabbix_server.pid
 
### Опция: DBHost
#	Имя хоста базы данных.
#	Если установить как localhost, то сокет используется для MySQL.
#
# Обязательный: no
# По умолчанию:
# DBHost=localhost
 
### Опция: DBName
#	Имя базы данных.
#	SQLite3 примечание: путь к файлу базы данных должны быть предусмотрены.
#	DBUser и DBPassword игнорируются.
#
# Обязательный: yes
# По умолчанию:
# DBName=
 
DBName=db_zabbix
 
### Опция: DBUser
#	База данных пользователя. Игнорируются для SQLite.
#
# Обязательный: no
# По умолчанию:
# DBUser=
 
DBUser=username_zabbix
 
### Опция: DBPassword
#	Пароль базы данных. Игнорируются для SQLite.
#	Закомменируйте эту линию, если пароль не используется.
#
# Обязательный: no
# По умолчанию:
DBPassword=username_zabbix_pw
 
### Опция: DBSocket
#	Путь до MySQL сокета.
#
# Обязательный: no
# По умолчанию:
# DBSocket=/tmp/mysql.sock
 
### Опция: DBPort
#	Порт БД когда не используется локальный сокет. Игнорируются для SQLite.
#
# Обязательный: no
# Диапазон: 1024-65535
# По умолчанию (for MySQL):
# DBPort=3306
 
############ ДОПОЛНИТЕЛЬНЫЕ ПАРАМЕТРЫ ################
 
### Опция: StartPollers
#	Количество pre-forked экземпляров pollers.
#	Вы не должны запускать более 30 pollers.
#
# Обязательный: no
# Диапазон: 0-255
# По умолчанию:
# StartPollers=5
 
### Опция: StartIPMIPollers
#	Количество pre-forked экземпляров pollers IPMI.
#
# Обязательный: no
# Диапазон: 0-255
# По умолчанию:
# StartIPMIPollers=0
 
### Опция: StartPollersUnreachable
#	Количество pre-forked экземпляров pollers для недоступных хостов.
#
# Обязательный: no
# Диапазон: 0-255
# По умолчанию:
# StartPollersUnreachable=1
 
### Опция: StartTrappers
#	Количество pre-forked экземпляров ловушек.
#
# Обязательный: no
# Диапазон: 0-255
# По умолчанию:
# StartTrappers=5
 
### Опция: StartPingers
#	Количество pre-forked экземпляров ICMP опросов.
#
# Обязательный: no
# Диапазон: 0-255
# По умолчанию:
# StartPingers=1
 
### Опция: StartDiscoverers
#	Количество pre-forked экземпляров обнаружений.
#
# Обязательный: no
# Диапазон: 0-255
# По умолчанию:
# StartDiscoverers=1
 
### Опция: StartHTTPPollers
#	Количество pre-forked экземпляров HTTP pollers.
#
# Обязательный: no
# Диапазон: 0-255
# По умолчанию:
# StartHTTPPollers=1
 
### Опция: ListenIP
#	Прослушаемый порт для ловушки.
#	Если этот параметр за комментирован.
#	Прослушивание будет вестись на всех сетевых интерфейсах.
#
# Обязательный: no
# По умолчанию:
# ListenIP=0.0.0.0
 
# ListenIP=127.0.0.1
 
### Опция: HousekeepingFrequency
#	Как часто ZABBIX будет выполнять процедуру домашней работы (в часах).
#	Домашная работа по удаления ненужной информации из таблиц истории, 
#	оповещения и сигнализации.
#	Если используется PostgreSQL , предложенное значение 24, так как она
#	выполняет VACUUM.
#
# Обязательный: no
# Диапазон: 1-24
# По умолчанию:
# HousekeepingFrequency=1
 
### Опция: MaxHousekeeperDelete
#	Таблица "housekeeper" содержит "заданий" процедуры для домашней работы в следующем
#	формате: [Housekeeperid], [TableName], [field], [value].
#	Не более, чем "MaxHousekeeperDelete 'значение (что соответствует [tablename],
#	[field], [value]) будет удалено за одну задачу в один цикл.
#	SQLite3 не использьзуйте этот параметр, будут удалены все соответствующие строки.
#	Если установлено в 0, то на всех используется без ограничений.
#	В этом случае вы должны знать, что вы делаете!
#
#	Обязательный: no
#	Диапазон: 0-1048576
#	По умолчанию:
# MaxHousekeeperDelete=500
 
### Опция: DisableHousekeeping
#	Установите 1, чтобы отключить процедуру домашней работы.
#
# Обязательный: no
# Диапазон: 0-1
# По умолчанию:
# DisableHousekeeping=0
 
### Опция: SenderFrequency
#	Как часто ZABBIX попытаются отправить неотправленные оповещения (в секундах).
#
# Обязательный: no
# Диапазон: 5-3600
# По умолчанию:
# SenderFrequency=30
 
### Опция: CacheSize
#	Size of configuration cache, in bytes. Размер конфигурации кэша в байтах.
#	Общий объем памяти для хранения узлов и элементов данных.
#
# Обязательный: no
# Диапазон: 128K-1G
# По умолчанию:
# CacheSize=8M
 
### Опция: CacheUpdateFrequency
#	Как часто Zabbix будет выполнять обновление конфигурации кэша в секундах.
#
# Обязательный: no
# Диапазон: 1-3600
# По умолчанию:
# CacheUpdateFrequency=60
 
### Опция: HistoryCacheSize
#	Размер истории кэша в байтах.
#	Общий объем памяти для хранения данных истории.
#
# Обязательный: no
# Диапазон: 128K-1G
# По умолчанию:
# HistoryCacheSize=8M
 
### Опция: TrendCacheSize
#	Размер кэша тенденция, в байтах.
#	Общий объем памяти для хранения данных тенденций.
#
# Обязательный: no
# Диапазон: 128K-1G
# По умолчанию:
# TrendCacheSize=4M
 
### Опция: HistoryTextCacheSize
#	Размер текстовой истории кэша в байтах.
#	Общий объем памяти для хранения символов, текста или данных журнала истории.
#
# Обязательный: no
# Диапазон: 128K-1G
# По умолчанию:
# HistoryTextCacheSize=16M
 
### Опция: NodeNoEvents
#	Если установлена '1' локальные событий, не будут отправлены на мастер узел.
#	Это не влияет на способность этого узла для распространения события
#	из его дочерних узлов.
#
# Обязательный: no
# Диапазон: 0-1
# По умолчанию:
# NodeNoEvents=0
 
### Опция: NodeNoHistory
# Если установлена '1' локальная истории, не будет отправлена на мастер узел.
# Это не влияет на способность этого узла для пропаганды истории из его дочерних узлов.
#
# Обязательный: no
# Диапазон: 0-1
# По умолчанию:
# NodeNoHistory=0
 
### Опция: Timeout
#	Указывает, как долго будет ждать агент, SNMP устройства или внешней
#	проверки (в секундах).
#
# Обязательный: no
# Диапазон: 1-30
# По умолчанию:
# Timeout=3
 
### Опция: TrapperTimeout
#	Определяет, сколько секунд ловушка может потратить на обработку новых данных.
#
# Обязательный: no
# Диапазон: 1-300
# По умолчанию:
# TrapperTimeout=300
 
# TrapperTimeout=5
 
### Опция: UnreachablePeriod
#	Через сколько секунд недостижимости считать узел недоступным.
#
# Обязательный: no
# Диапазон: 1-3600
# По умолчанию:
# UnreachablePeriod=45
 
### Опция: UnavailableDelay
#	Как часто проверять хост на наличие приема в течение периода недоступности.
#
# Обязательный: no
# Диапазон: 1-3600
# По умолчанию:
# UnavailableDelay=60
 
### Опция: UnreachableDelay
#	Как часто проверять хост на наличие в период недоступности.
#
# Обязательный: no
# Диапазон: 1-3600
# По умолчанию:
# UnreachableDelay=15
 
### Опция: AlertScriptsPath
#	Местоположение для пользовательских сценариев оповещения.
#
# Обязательный: no
# По умолчанию:
# AlertScriptsPath=/home/zabbix/bin/
 
### Опция: ExternalScripts
#	Местоположение внешних скриптов.
#
# Обязательный: no
# По умолчанию:
# ExternalScripts=/usr/local/etc/zabbix/externalscripts
 
### Опция: FpingLocation
#	Местоположение fping.
#	Убедитесь, что для fping файла имеет root разрешения и установлен флаг SUID.
#
# Обязательный: no
# По умолчанию:
#FpingLocation=/usr/sbin/fping
FpingLocation=/usr/local/sbin/fping
 
### Опция: Fping6Location
#	Местоположение fping6.
#	Убедитесь, что fping6 файла имеет root разрешения и установлен флаг SUID.
#	Сделать пустым, если ваша fping утилита позволяет обрабатывать IPv6 адресов.
#
# Обязательный: no
# По умолчанию:
# Fping6Location=/usr/sbin/fping6
 
### Опция: SSHKeyLocation
#	Расположение открытых ключей для SSH проверки.
#
# Обязательный: no
# По умолчанию:
# SSHKeyLocation=
 
### Опция: TmpDir
#	Временная директорию.
#
# Обязательный: no
# По умолчанию:
# TmpDir=/tmp
 
### Опция: Include
#	Вы можете включать отдельные файлы или все файлы в директорию в файле конфигурации.
#
# Обязательный: no
# По умолчанию:
# Include=
 
# Include=/usr/local/etc/zabbix/zabbix_server.general.conf
# Include=/usr/local/etc/zabbix/zabbix_server/

Настройка fping

# chown root:zabbix /usr/local/sbin/fping
# chmod 710 /usr/local/sbin/fping
# chmod ug+s /usr/local/sbin/fping
# ll /usr/local/sbin/fping
-rws--s---  1 root  zabbix    22K 20 окт 11:31 /usr/local/sbin/fping

Установка веб-интерфейса

# cd /usr/ports/net-mgmt/zabbix-frontend
# make config
 
Опцияs for zabbix-frontend 1.8.2_1,2
 
[X] MYSQL   Use MySQL backend
[ ] PGSQL   Use PostgreSQL backend
[X] SQLITE  Use SQLite backend
 
# make install clean
~
 
===>   Registering installation for zabbix-frontend-1.8.2_1,2
===>  Cleaning for zabbix-frontend-1.8.2_1,2

Установка клиентской части

FreeBSD zabbix-agent

# cd /usr/ports/net-mgmt/zabbix-agent && make config
 
Опция для zabbix-agent 1.8.2_1,2
 
[ ] IPV6  Support for IPv6
 
# make install clean
~~
===> SECURITY REPORT:
      This port has installed the following files which may act as network
      servers and may therefore pose a remote security risk to the system.
/usr/local/sbin/zabbix_agent
/usr/local/bin/zabbix_sender
/usr/local/sbin/zabbix_agentd
/usr/local/bin/zabbix_get
 
      This port has installed the following startup scripts which may cause
      these network services to be started at boot time.
/usr/local/etc/rc.d/zabbix_agentd
 
      If there are vulnerabilities in these programs there may be a security
      risk to the system. FreeBSD makes no guarantee about the security of
      ports included in the Ports Collection. Please type 'make deinstall'
      to deinstall the port if this is a concern.
 
      For more information, and contact details about the security
      status of this software, see the following webpage:
http://www.zabbix.com/
===>  Cleaning for zabbix-agent-1.8.2_1,2

Windows zabbix-agent

Устанавливается легко и непринужденно.

Конфигурационный файл клиента

# cd /usr/local/etc/zabbix
# cp zabbix_agentd.conf.sample zabbix_agentd.conf
# chmod u+w zabbix_agentd.conf
# vi zabbix_agentd.conf

# Этот конфигурационный файл для Zabbix Agent (Unix)
# Чтобы получить дополнительные сведения о Zabbix, посетите _http://www.zabbix.com
 
############ ОБЩИЕ ПАРАМЕТРЫ #################
 
### Диапазон: PidFile
#	Имя PID файла.
#
# Обязательный: no
# По умолчанию:
# PidFile=/tmp/zabbix_agentd.pid
 
### Диапазон: LogFile
#	Имя Log файла.
#	Если не установлен, используется syslog.
#
# Обязательный: no
# По умолчанию:
# LogFile=
 
LogFile=/tmp/zabbix_agentd.log
 
### Диапазон: LogFileSize
#	Максимальный размер файла журнала в MB.
#	0 - отключения автоматической ротации журнала.
#
# Обязательный: no
# Диапазон: 0-1024
# По умолчанию:
# LogFileSize=1
 
### Диапазон: DebugLevel
#	Задает уровень отладки
#	0 - debug не создается
#	1 - критическая информация 
#	2 - информация об ошибках
#	3 - предупреждения (по умолчанию)
#	4 - для отладки (много информации) 
#
# Обязательный: no
# Диапазон: 0-4
# По умолчанию:
# DebugLevel=3
 
### Диапазон: SourceIP
#	Исходный IP-адрес для исходящих подключений.
#
# Обязательный: no
# По умолчанию:
# SourceIP=
 
### Диапазон: EnableRemoteCommands
#	Разрешается ли удаленные команды с сервера Zabbix.
#	0 - не допускается
#	1 - допускается
#
# Обязательный: no
# По умолчанию:
# EnableRemoteCommands=0
 
### Диапазон: LogRemoteCommands
#	Включение ведения журнала выполненных команд как предупреждения.
#	0 - выключено
#	1 - включен
#
# Обязательный: no
# По умолчанию:
# LogRemoteCommands=0
 
##### Passive checks related
 
### Диапазон: Server
#	Список адресов через запятую IP (или имен хостов) Zabbix-серверов.
#	Не должно быть пробелов запрещено. Первая запись используется для получения списка
#	и отправки активных проверок.
#	Обратите внимание, что имена хостов должны преобразовыватся 
#	как hostname->IP address и IP address->hostname.
#	Если поддержка IPv6 включена, то '127.0.0.1', '::127.0.0.1', '::ffff:127.0.0.1'
#	имеют равный статус.
#
# Обязательный: yes
# По умолчанию:
# Server=
 
Server=127.0.0.1
 
### Диапазон: Hostname
#	Уникальные, с учетом регистра имя хоста.
#	Необходимо для активного контроля и должно соответствовать имени хоста,
#	как настроено на сервере.
#
# По умолчанию:
# Hostname=system.uname
 
Hostname=Zabbix Server
 
### Диапазон: ListenPort
#	Агент будет прослушивать этот порт для соединения с сервером.
#
# Обязательный: no
# Диапазон: 1024-32767
# По умолчанию:
# ListenPort=10050
 
### Диапазон: ListenIP
#	Агент будет прослушивать указанный интерфейс.
#
# Обязательный: no
# По умолчанию:
# ListenIP=0.0.0.0
 
# ListenIP=127.0.0.1
 
### Диапазон: DisablePassive
#	Отключить пассивный контроль. Агент не будет слушать любой TCP порт.
#	Только активные проверки будут обработаны.
#	0 - не отключать
#	1 - отключить
#
# Обязательный: no
# По умолчанию:
# DisablePassive=0
 
##### Active checks related
 
### Диапазон: DisableActive
#	Отключение активного контроля.
#	Агент будет работать в пассивном режиме, прислушиваясь к серверу.
#
# Обязательный: no
# По умолчанию:
# DisableActive=0
 
# DisableActive=1
 
### Диапазон: ServerPort
#	Порт сервера для загрузки списка и отправки активных проверок.
#
# Обязательный: no
# По умолчанию:
# ServerPort=10051
 
### Диапазон: RefreshActiveChecks
#	Как часто список активных проверок обновляется, в секундах.
#
# Обязательный: no
# Диапазон: 60-3600
# По умолчанию:
# RefreshActiveChecks=120
 
### Диапазон: BufferSend
#	Не хранить данные дольше, чем N секунд в буфере.
#
# Обязательный: no
# Диапазон: 1-3600
# По умолчанию:
# BufferSend=5
 
### Диапазон: BufferSize
#	Максимальное количество значений в буфере памяти. Агент отправит
#	все собранные данные в Zabbix Server или Proxy, если буфер полон.
#
# Обязательный: no
# Диапазон: 1-65535
# По умолчанию:
# BufferSize=100
 
### Диапазон: MaxLinesPerSecond
#	Максимальное количество новых линий агент будет отправлять в секунду Zabbix Server 
#	или Proxy для обработки 'log' и 'logrt' активных проверок.
#	Условyjt значение будет преодолено параметром 'maxlines'
#	приведенных в 'log' и 'logrt' пунктах ключа.
#
# Обязательный: no
# Диапазон: 1-1000
# По умолчанию:
# MaxLinesPerSecond=100
 
 
############ ДОПОЛНИТЕЛЬНЫЕ ПАРАМЕТРЫ #################
 
### Диапазон: StartAgents
#	Количество pre-forked экземпляров zabbix_agentd, проверяет какой процесс пассивный.
# Обязательный: no
# Диапазон: 1-16
# По умолчанию:
# StartAgents=3
 
### Диапазон: Timeout
#	Тратить не более N секунд на обработку.
#
# Обязательный: no
# Диапазон: 1-30
# По умолчанию:
# Timeout=3
 
### Диапазон: Include
#	Вы можете включать отдельные файлы или все файлы в директорию в файле конфигурации.
#
# Обязательный: no
# По умолчанию:
# Include=
 
# Include=/usr/local/etc/zabbix/zabbix_agent.userparams.conf
# Include=/usr/local/etc/zabbix/zabbix_agentd/
 
 
####### КОНТРОЛИРУЕМЫЕ ПАРАМЕТРЫ ОПРЕДЕЛЯЕМЫЕ ПОЛЬЗОВАТЕЛЕМ #######
 
### Диапазон: UnsafeUserParameters
#	Разрешить все символы, которые передаются в аргументах для определяемых
#	пользователем параметров.
#	0 - не разрешать
#	1 - разрешать
#
# Обязательный: no
# Диапазон: 0-1
# По умолчанию:
# UnsafeUserParameters=0
 
### Диапазон: UserParameter
#	Параметры определяемые пользователем для мониторинга.
#	Там может быть несколько пользовательских параметров.
#	Формат: UserParameter=<key>,<shell command>
#	Обратите внимание, что команды оболочки не должен возвращать пустую
#	строку или только EOL.
#	Пример: UserParameter=system.test,who|wc -l
UserParameter=system.test,who|wc -l
### Set of parameters for monitoring MySQL server (v3.23.42 and later)
### Change -u<username> and add -p<password> if required
#UserParameter=mysql.ping,mysqladmin -uroot ping|grep alive|wc -l
#UserParameter=mysql.uptime,mysqladmin -uroot status|cut -f2 -d":"|cut -f1 -d"T"
#UserParameter=mysql.threads,mysqladmin -uroot status|cut -f3 -d":"|cut -f1 -d"Q"
#UserParameter=mysql.questions,mysqladmin -uroot status|cut -f4 -d":"|cut -f1 -d"S"
#UserParameter=mysql.slowqueries,mysqladmin -uroot status|cut -f5 -d":"|cut -f1 -d"O"
#UserParameter=mysql.qps,mysqladmin -uroot status|cut -f9 -d":"
#UserParameter=mysql.version,mysql -V

Запуск

Добавляем в /etc/rc.conf:

zabbix_server_enable="YES"
zabbix_agentd_enable="YES"

Запускаем агент и сервер.

# /usr/local/etc/rc.d/zabbix_agentd start
Starting zabbix_agentd.
# /usr/local/etc/rc.d/zabbix_server start
Starting zabbix_server.
# ps -ax |grep zabbix
 5743  ??  IN     0:00,00 zabbix_agentd: main process (zabbix_agentd)
 5744  ??  SN     0:00,01 zabbix_agentd: main process (zabbix_agentd)
 5745  ??  IN     0:00,00 zabbix_agentd: waiting for connection (zabbix_agentd)
 5746  ??  IN     0:00,00 zabbix_agentd: waiting for connection (zabbix_agentd)
 5747  ??  IN     0:00,00 zabbix_agentd: waiting for connection (zabbix_agentd)
 5748  ??  SN     0:00,00 zabbix_agentd: poller [sleeping for 1 seconds] (zabbi
 5757  ??  IN     0:00,02 zabbix_server: main process (zabbix_server)
 5758  ??  IN     0:00,00 zabbix_server: db config [sleeping for 60 seconds] (z
 5759  ??  SN     0:00,04 zabbix_server: poller [sleeping for 5 seconds] (zabbi
 5760  ??  SN     0:00,04 zabbix_server: poller [sleeping for 5 seconds] (zabbi
 5761  ??  SN     0:00,04 zabbix_server: poller [sleeping for 5 seconds] (zabbi
 5762  ??  SN     0:00,04 zabbix_server: poller [sleeping for 5 seconds] (zabbi
 5763  ??  SN     0:00,03 zabbix_server: poller [sleeping for 5 seconds] (zabbi
 5764  ??  IN     0:00,00 zabbix_server: trapper [waiting for connection] (zabb
 5765  ??  IN     0:00,00 zabbix_server: trapper [waiting for connection] (zabb
 5766  ??  IN     0:00,00 zabbix_server: trapper [waiting for connection] (zabb
 5767  ??  IN     0:00,00 zabbix_server: trapper [waiting for connection] (zabb
 5768  ??  IN     0:00,00 zabbix_server: trapper [waiting for connection] (zabb
 5769  ??  SN     0:00,00 zabbix_server: pinger [sleeping for 5 seconds] (zabbi
 5770  ??  SN     0:00,00 zabbix_server: sender [sleeping for 30 seconds] (zabb
 5771  ??  IN     0:01,18 zabbix_server: housekeeper [sleeping for 1 hour(s)] (
 5772  ??  SN     0:00,00 zabbix_server: timer [sleeping for 30 seconds] (zabbi
 5773  ??  SN     0:00,03 zabbix_server: poller [sleeping for 5 seconds] (zabbi
 5774  ??  SN     0:00,00 zabbix_server: http poller [sleeping for 5 seconds] (
 5775  ??  IN     0:00,04 zabbix_server: discoverer [sleeping for 60 seconds] (
 5776  ??  SN     0:00,00 zabbix_server: db syncer [sleeping for 5 seconds] (za
 5777  ??  SN     0:00,00 zabbix_server: escalator [sleeping for 3 seconds] (za
 5868   0  S+     0:00,00 grep zabbix

Веб-интерфейс

Конфигуратор

Шаги стандартны:

Нажмите кнопку Save configuration file. Сохраните файл zabbix.conf.php и скопируйте его в указанную директорию.
Повторно нажмите на кнопку Retry.

Работа

Веб интерфейс ZABBIX сконфигурирован. По умолчанию имя администратора ‘Admin’, и пароль 'zabbix'.

Для начала:

  • Измените пароль администратора и создайте своего.
  • Создайте свои типы средств передачи для оповещения по sms\mail\jabber.
  • Создайте свои и измените существующие рабочие скрипты
  • Подключите нужные вам хосты, устройства, и все, что вам необходимо контролировать.
  • При необходимости создайте новые шаблоны и показатели.
  • Настройте карты сетей.

Запомните, настройку вы делаете один раз и от этого будет зависит как вы в дальнейшем поедете. Дальнейшая работа сведется к просмотру графиков нагрузки, добавлению хостов и отслеживанию параметров.
Чтобы настроить zabbix нам необходимо понять его терминологию и чем он оперирует при сборе и анализе данных. Терминов не много.

  • Узлы сети (hosts)
  • Элементы данных (items)
  • Триггеры (triggers)
  • Действия (actions)
  • Графики (graphs или charts)
  • Экраны (screens)
  • Карты сети (maps)

И так поехали.
У хостов есть определенные параметры и мы их должны контролировать. Иногда, когда они переходят заданную нами границу и срабатывают триггеры которые мы установили или выбрали по шаблону, что вызывает собой необходимые действия например отправка вам на телефон sms с текстом «Ваш сервант в Африке навернулся ;)». Так же рисуются графики показателей их можно обьеденить в экран.

Узлы сети - Здесь вы можете создать узел связи и включить в группу узлов связи которую вы можете так же создать. При создание узла связи (хоста) задается его имя наименование группы в которой ему необходимо быть включенным, IP адрес или доменное имя, порт агента, состояние и связь с шаблоном (схема сбора данных).

Группы узлов в сети — логическое объединение устройств. Например все сервера в группу Servers все сайты в Web и тп.

Элементы данных - показателем может быть любой системный параметр, значение которого может вычислить zabbix-агент. Показатель может быть как «встроенным» (например объем свободной памяти, загрузка CPU) так и пользовательским. При создании показателя можно указать достаточно много параметров, важнейшие из которых: тип, ключ ,интервал обновления, приложение и группа. Интервалы можно задавать весьма гибко.

Триггеры - триггер создается по какому то определению, если какой-то из показателей перешел через граничное значение. Например можно указать что при отсутствие пинга на определенном хосте активироваться. (создан темплар в котором создан тест пинга и темплар присвоен хосту. И в триггерах создано правило(триггер) для хоста при отсутствие оного активироваться).

Действие — при активации триггера необходимо выполнить определенное действие. Например отправить смс или написать письмо. Вы корректируете эти действия и убираете ненужные. А так же а пользователях указываете кому отправлять сообщения.

Графики - чтобы увидеть график, надо задать его имя, размеры для прорисовки, и показатель, который мы хотим отобразить. Для показателя задается дополнительно цвет и вид заливки. На одном графике может быть сведено несколько показателей. Для изменения существующего графика нажмите напротив него ссылку «Изменить».

Комплексные отчеты — тут сводим все графики в один экран. Тут указываем количество строк и колонок. Для изменения существующего отчета нажмите напротив него ссылку «Изменить». Каждый график можно проматывать во времени, а также менять масштаб временной оси (1 час, 8 часов, сутки, неделя, месяц, год).

Карты сети - тут вы создаете кары или меняете существующую. На данный момент у вас там определен только один хост это ваш сервер. И вам необходимо будет добавить новые элементы (хосты) и связать их между собой связями зависящими от триггеров.

Должно получится что то похожее:

Заключение

Эту систему я использую уже давно и она продолжает меня радовать единственное при обновлениях старательно сохраните существующую БД и файлы тк разработчики в новых ветках знатно косячат. Да и настроите чтобы система не так сильно стремалась по каждому не пройденному тесту пинга и не отправляла вам e-mail по мелочам. Особенно касается это удаленных серверов стоящих, где нибуть на островах. =)

Дополнительная информация

  • Использование внешних скриптов для Zabbix

Дополнительные материалы
Ссылки: 
>>ВЕТКА ФОРУМА<<
Zabbix - способы оповещения
Ваша оценка: Нет Средняя: 3.8 (44 голоса)

Zabbix - способы оповещения

Добрый день, сегодня хотел бы рассказать всем о так сказать почти всех способах оповещения системы Мониторинга Zabbix. В данной статье пойдёт речь о таких системах мгновенных сообщений как: SMS, Jabber, ICQ, email

Содержание:

  • Введение
  • E-Mail
  • SMS
  • ICQ
  • FAQ

Введение

Все действия делались на системе FreeBSD 8.2 i386 и будем считать, что сервер Zabbix стоит и уже работает, а как развернуть и настроить сервер в этой статье описываться не будет. Для этого вы можете прочитать статью Zabbix - мониторим и отслеживаем

E-Mail

Начнём с самого простого Email

Для начала идём в порты и ставим очень удобную программку sendEmail

cd /usr/ports/net/sendemail/ && make install clean

Выбрать мы можем только SSL, что вам и советую, и за частую требуется.
     ??????????????????????????????????????????????????????????????????????
     ?                    Options for sendEmail 1.56                      ?
     ? ?????????????????????????????????????????????????????????????????? ?
     ? ?                  [X] SSL  Enable SSL support                   ? ?
     ? ?                                                                ? ?
     ? ?                                                                ? ?
     ? ?                                                                ? ?
     ? ?                                                                ? ?
     ? ?                                                                ? ?
     ? ?                                                                ? ?
     ? ?                                                                ? ?
     ? ?                                                                ? ?
     ? ?                                                                ? ?
     ? ?                                                                ? ?
     ? ?                                                                ? ?
     ? ?                                                                ? ?
     ? ?                                                                ? ?
     ? ?                                                                ? ?
     ??????????????????????????????????????????????????????????????????????
     ?                       [  OK  ]       Cancel                        ?
     ??????????????????????????????????????????????????????????????????????

Программа не какой настройки не требует после установки пишем вот такой скриптик для Zabbix

#!/bin/sh
export smtpemailfrom=zabbix@host.ru
export zabbixemailto="$1"
export zabbixsubject="$2"
export zabbixbody="$3"
export smtpserver=smtp.host.ru
export smtplogin=zabbix@host.ru
export smtppass=MegaPass
export logfile=/var/log/sendemail.log
 
/usr/local/bin/sendEmail -l "$logfile" -f "$smtpemailfrom" -t "$zabbixemailto" \
-u "$zabbixsubject" -m "$zabbixbody" -s $smtpserver:25 -xu \
"$smtplogin" -xp "$smtppass"

Скрипт абсолютно простой и гуляет по инету уже давно так что тут всё просто программа просто соединяется на SMTP хост под таким-то логином и паролем, и шлёт от него всё что нам надо, в данном случае данные с Заббикса

Естественно кладём этот файл дав ему права 755 в директорию которая у вас задана на сервере

AlertScriptsPath=/usr/local/etc/zabbix/alertscripts/

По дефолту она вообще выключена

Далее идём и логинимся под админом в веб интерфейсе.

Администрирование > Способы оповещений

вверху с права "Создать способ оповещения"
И вносим информацию о нашем скрипте:

Описание ;Просто название его
Тип ;Естественно Скрипт
Название скрипта ;Просто название файла у меня например zabbix_sendemail

Далее создаём Настройка > Действия

В нутрях надо делать индивидуально, у меня например всё просто

Период времени в "1-7,00:00-23:59"
Значение триггера = "ПРОБЛЕМА"
Важность триггера = "Чрезвычайная"
Отправить сообщение Группа "Zabbix administrators"

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

SMS

Теперь мы переходим к отправке по SMS

Я использовал смсшлюз ТурбоСМС Он очень удобен так как у него есть возможность отправки СМС через MySQL что для меня было очень удобно, на этом и был нарисован скрипт, и кстати не мной про турбоСМС и про этот скрипт я узнал где-то в интернете давнооо давно

Вот он скриптик

#!/usr/bin/perl
 
use strict;
use POSIX;
use DBI;
 
my $phone=@ARGV[0];
my $subj=@ARGV[1];
my $msg=@ARGV[2];
 
my $driver = "mysql";
my $user = "User";
my $password = "MegaPASS";
my $database = "users";
my $dsn = "DBI:$driver:host=77.120.116.10:3306;database=$database";
my $dbh = DBI->connect($dsn, $user, $password);
 
my $sql = $dbh->prepare("INSERT INTO $user (number, sign, message) VALUES ('$phone', 'ISN(Обратите внимания сюда)', '$msg')");
$sql->execute;

Опять же, всё очень просто, скрипт на Perl кому интересно могут переделать под BASH, SH хоть PHP тут не чего сложного.

Опять же повторяем действия какие мы делали при создании Email оповещений.

Начиная с

дав ему права 755

И всё, готова у нас отправка и по СМС

ICQ

Теперь переходим к самому замороченному и трудному для меня
Отправка на ICQ

Возможно есть и другие способы, с помощю ПХП ботов, или ещё чего, но я выбрал путь с помощью консольного клиента climm

Для начала нужно удостовериться что у нас последняя версия, и просто обновить порты.

потом идём в

cd /usr/ports/net-im/climm/ && make install clean

В конфиге я лично отметил всё, а вы можете на свой вкус но самое главное для нас это TCL scripting support и Remote control fifo support

     ??????????????????????????????????????????????????????????????????????
     ?                    Options for climm 0.7.1_1                       ?
     ? ?????????????????????????????????????????????????????????????????? ?
     ? ?          [X] LIBICONV  Iconv character set conversion          ? ?
     ? ?          [X] P2P       Peer2peer connection support            ? ?
     ? ?          [X] TCL       TCL scripting support                   ? ?
     ? ?          [X] OTR       OTR encryption support                  ? ?
     ? ?          [X] REMOTE    Remote control fifo support             ? ?
     ? ?          [X] XMPP      XMPP Jabber support                     ? ?
     ? ?                                                                ? ?
     ? ?                                                                ? ?
     ? ?                                                                ? ?
     ? ?                                                                ? ?
     ? ?                                                                ? ?
     ? ?                                                                ? ?
     ? ?                                                                ? ?
     ? ?                                                                ? ?
     ? ?                                                                ? ?
     ??????????????????????????????????????????????????????????????????????
     ?                       [  OK  ]       Cancel                        ?
     ??????????????????????????????????????????????????????????????????????

После установки можно настроить, а можно и не трогать, он сам создаст дефолтный файл с настройками в

 ~/.climm/

Почитать о нём можно много в нете, так что не буду описывать как его настраивать, и он с русским интерфейсом, Лично Я, использовал дефолтный конфиг, всё просто.

Теперь создадим TCL скриптик

# Verbindet sich mit ICQ, horcht an Socket und sendet Nachrichten per ICQ weiter
 
###
#
# Globals
#
# ICQ UIN des Admins
# (bekommt Nachrichten beim Starten und Stoppen des ICQ-Forwarders)
set admin "5114112"
 
###
#
# Funktionen
#
# Startet die Socket
proc serverOpen {channel addr port} {
    global connected
    set connected 1
    fileevent $channel readable "readLine Server $channel"
#    puts "Client verbunden, warte auf Daten..."
#    puts "Client verbunden"
}
 
# Liest Zeilen aus der Socket
proc readLine {who channel} {
    global out didRead admin
    gets $channel line
    if {"$line" == ""} {
        fileevent $channel readable {}
        after idle {
#               puts "Idle, warte auf Verbindung..."
                set didRead 1
        }
    } elseif {$line == "kill"} {
        set killmsg "Zabbix ICQ Server STOP!"
        climm exec "msg $admin $killmsg"
        puts $channel $msg
        flush $channel
        exit
    } else {
        climm exec "msg $line"
        #after 3000
#       puts "out: \"$antwort\""
#       puts $channel "$antwort"
#       flush $channel;
        set didRead 1
    }
}
#
###
#
# Hauptprogramm
#
# Socket als verf.gbar markieren
set connected 0
 
# Server an Port 33000 starten
set server [socket -server serverOpen 33000]
puts "ICQ-Forwarder gestartet, horche auf Port 33000"
climm exec "msg $admin Zabbix ICQ Server START!"
while [ vwait out ] {
        vwait connected
        vwait didRead
        unset connected didRead
}

Обзавём его допустим icq-tcl

И так же создадим файлик для Zabbix

#!/usr/bin/tclsh
#
# (Test-)Client: Sendet Daten an den Server
#
 
# zu Socket verbinden, Referenz in Variable "sock" speichern
set sock [socket -async 127.0.0.1 33000]
 
# Wenn Kommandozeilenparameter vorhanden,
        # Dann diese in Var. "eingabe" schreiben
        # Sonst an StdIn auf Eingabe warten und in Var schreiben
if {$argc > 0} {
        set eingabe "$argv"
} else {
        puts "Bitte Daten eingeben, \"kill\" stoppt den Server:"
        set eingabe [gets stdin]
}
 
# Inhalt aus "eingabe" an Socket senden
puts $sock "$eingabe"
flush $sock
 
#puts "Serverantwort:"
#set len [gets $sock ausgabe]
#puts "in : \"$ausgabe\""
 
# Client beenden
close $sock
exit

Он у нас на tcslsh писан, назовём его zabbix_icqsend и положем куда надо.

Теперь запустим climm сделаем новую учётку, или воспользуемся своей не суть
Как залогиниться автоматом опишу.
Идём в

ee ~/.climm/climmrc

и добавим в верху вот такой блок

[Server]
type icq8 auto
version 8
host login.icq.com
port 5190
screen 123456789
password 123456
status online
options ignore off

Вот не помню там это есть по дефолту или нет, вас естественно интересует тока screenэто UIN и password

Вводим, запускаем climm

Он логиниться теперь запускаем нашь скрипт! пишем

tclscript ПОЛНЫЙ_ПУТЬ_ДО_ФАЙЛА/icq-tcl

И он жолжен повиснуть на 33000 порту, я лично запускал его в скринах и оставлял его там висеть, по другому пока не придумал, листаю маны по climm и по tcl.

Смотрим повис ли он на порту

sockstat -4l | grep climm
root     climm      73029 6  tcp4   *:33000               *:*

Ага висит, всё отлично, теперь давайте баловаться )))

Идём в

 cd /usr/local/etc/zabbix/alertscripts/

даём права +x файлу zabbix_icqsend
chmod +x zabbix_icqsend

И делаем такой запросик

./zabbix_icqsend UIN MSG

Примером будет

./zabbix_icqsend 123456789 Helo World

И вам придёт сообщение.

Есть пару нюансов, надо что бы вы были авторизированы у этого номера, и что бы он у вас тоже.

Так же есть фаерволом не закрыть порт 33000 то можоно по телнету подключиться и слать сообщения )

Русский только в UTF-8

Ну вот собственно и всё, писал на скорую руку, так что вопросы в студию, поправлю чё надо, и дорасскажу чего не хватает

Всем спасибо, все свободны.

FAQ

Дополнительные материалы
Ссылки: 
Zabbix Документация
Climm Офф. Сайт на Русском
Zabbix-SMS
Ваша оценка: Нет Средняя: 5 (12 голосов)

nod32 mirror script - Установка и Настройка зеркала обновлений для продуктов eset

Скрипт обновлений называется nod32 mirror script и предназначен для создания собственного зеркала обновлений для сети, офиса, или другой группы компьютеров. На сегодняшний момент, а это 25.09.2011 существует стабильная версия скрипта nod32ms_3.0.0_beta1 успешно протестированная под разными платформами.

Изображение - savepic.su — сервис хранения изображений

Что требуется для работы скрипта:

  • Под *nix системы:
  1. wget
  2. unrar
  3. apache или любой ftp-сервер
  4. php-cli (не ниже версии 5.0.0)
  • Под NT системы:
  1. apache или любой ftp-сервер
  2. php-cli (не ниже версии 5.0.0)

Что умеет скрипт:

  1. Авто-поиск ключей в интернет
  2. Пользовательские поисковые паттерны
  3. Журналирование действий
  4. Кросс-платформенный
  5. Минимум настроек
  6. Выбор скачиваемых обновлений
  7. Выбор языковых пакетов

Как установить скрипт обновлений nod32ms?

  1. Скачиваем архив
  2. Извлекаем архив (например в /etc/nod32/)
  3. Редактируем конфигурационный файл nod32ms.conf
  4. temp_dir = путь до temp директории (например /etc/nod32/temp)
    web_dir = путь до пользовательской директории обновления (например /var/www/localhost/htdocs)

  5. Добавляем авто-запуск скрипта в /etc/crontab
  6. 59 * * * * root sh /usr/local/etc/nod32ms/manual_start.sh (вместо /usr/local/etc/nod32ms/ укажите свой путь до файла manual_start.sh, после записи сделайте переход на следующую строку, иначе ваш крон выдаст ошибку)

  7. Проверяем работу скрипта
  8. Заходим в корень скрипта и в зависимости от системы и меняем пути до файла php.exe и\или update.php в файлах manual_star.bat или manual_start.sh, потом запускаем и ждем до тех пор пока скрипт не отработает


>>Ветка форума<<

ВложениеРазмер
nod32ms_3.0.0_beta5.rar566.85 КБ

Агрегация каналов (Link aggregation, trunking)

В процессе своей работы я заменил 2 сервера на один. В итоге у меня в наличие оказалось 2 кабель канала, две сетевые карты 3com по 100мб каждая, один сервер и свитч D-Link DES-3028. И я задумал увеличить пропускную способность сервера путем создания агрегации каналов.

Содержание:

  • Введение
  • Типы агригации
  • Настройка
  • Стартап
  • Свитч
  • Заключение
  • Ссылки

Введение

Агрегация каналов (англ. Link aggregation, trunking) или IEEE 802.3ad — технология объединения нескольких физических каналов в один логический. Это способствует не только значительному увеличению пропускной способности магистральных каналов коммутатор—коммутатор или коммутатор—сервер, но и повышению их надежности. Хотя уже существует стандарт IEEE 802.3ad, многие компании еще используют для своих продуктов патентованные или закрытые технологии.

Главное преимущество агрегации каналов в том, что радикально повышается скорость — суммируется скорость всех используемых адаптеров. В случае отказа адаптера трафик посылается следующему работающему адаптеру, без прерывания сервиса. Если же адаптер вновь начинает работать, то через него опять посылают данные.

Использование в параллель несколько Ethernet-адаптеров выглядит так. Допустим есть два адаптера Ethernet: eth0 и eth1. Их можно объединить в псевдо-Ethernet-адаптер eth3. Система распознает эти агрегированные адаптеры как один. Все агрегированные адаптеры настраиваются на один MAC-адрес, поэтому удалённые серверы обращаются с ними как с одним адаптером. eth3 можно настроить на один IP адрес, как любой Ethernet адаптер. Из-за этого программы обращаются к нему как к самому обычному адаптеру, скорость которого в два раза выше.

Для реализации на FreeBSD мы будем использовать lagg - агрегация линков и интерфейс отказоустойчивый линков. Интерфейс lagg позволяет агрегировать нескольких сетевых интерфейсов, как один виртуальный интерфейс, тем самым обеспечивается отказоустойчивость и увеличение высокоскоростной связи.
Интерфейс lagg может быть создан с помощью команды ifconfig laggN create. Вы можете использовать различные типы агрегирования протоколов, указанной с помощью параметра proto laggproto. Дочерние интерфейсы могут быть добавлены с помощью laggport child-iface option и удалены с помощью параметра -laggport child-iface option.

Типы агригации

В настоящее время драйвер поддерживает агрегирования протоколов

  • failover (по умолчанию)
  • fec
  • lacp
  • loadbalance
  • roundrobin

Протоколы определяют, какие порты используются для исходящего трафика или конкретный порт принимает входящий трафик. Состояние интерфейса используется для проверки линка является ли он активным или нет.

Режимы работы:
Failover [failover] - Это режим по умолчанию. В этом режиме один из портов является мастер портом и все данные, получаются через этот порт. В случае отказа мастер порта будет использован следующий активный порт.

Cisco® Fast EtherChannel® - Cisco FAST EtherChannel [fec] - это статическая настройка и не согласовывает агрегацию или обмена кадрами и не следить за линком. Если коммутатор поддерживает LACP, то следует использовать LACP вместо FEC.

FEC балансировка исходящий трафик через активных портов, на основе информации, заголовка хешированного протокола и принимает входящий трафик через любой активный порт. Хеш-значение включает Ethernet адреса источника и назначения и если таковые имеются то и VLAN тег, IPv4/IPv6 адреса источника и назначения.

LACP [lacp]- IEEE® 802.3ad Link Aggregation Control Protocol (LACP) и протокол маркера. LACP проведет согласования и набор агрегатных линков в одну или несколько Link Aggregated Groups (LAG). Каждый LAG состоит из портов с одинаковой скоростью и установленной full-duplex операцией. Трафик будет сбалансированным через порты в LAG с наибольшим общей скоростью, в большинстве случаев будет существовать только один LAG, который будет содержать все порты. В случае возникновения изменений в физического подключения каналов связи LACP будет быстро изменять работу к новой конфигурации.
LACP балансировка исходящего трафика через активные порты, на основе информации, заголовка по хешированному протоколу и принимает входящий трафик с любого активного порта. Хеш-значение включает Ethernet адреса источника и назначения и, если таковые имеются, VLAN тег и IPv4/IPv6 адреса источника и назначения.

Loadbalance [loadbalance] - Является псевдонимом FEC режим.

Round-robin [roundrobin] - Распространяет исходящий трафик, с помощью планировщика циклически через все активные порты и принимает входящий трафик из любого активного порта. Этот режим является нарушением кадра Ethernet и следует использовать с особой осторожностью.

None [none] - Этот протокол предназначен чтобы ничего не делать: он отключает любой трафик без отключения lagg интерфейса.

Настройка

Для начало необходимо подключить модуль есть два варианта.
1. в loader.conf добавить строчку if_lagg_load="YES" и перезагрузится или вручную подгрузить модуль.

# echo 'if_lagg_load="YES"' >> /boot/loader.conf
# reboot

Если вы хотите без перезагрузки системы то выполните следующее:
kldload if_lagg

2. или включить поддержку lagg в ядро и пересобрать его с последующей перезагрузкой

device lagg

Пример LACP

Создадим 802.3ad линк агрегирования с помощью LACP с двумя em интерфейсами:

# ifconfig lagg0 create
# ifconfig em0 up
# ifconfig em1 up
# ifconfig lagg0 laggproto lacp laggport em0 laggport em1 \
192.168.1.1 netmask 255.255.255.0

Пример Failover

Создадим отказоустойчивый режим который можно использовать для перехода на вторичный интерфейс при потери связи на основном интерфейсе. Создадим и настроим интерфейс lagg0, с em0 как основной интерфейс и em1 как дополнительный интерфейс:

# ifconfig lagg0 create
# ifconfig lagg0 up laggproto failover laggport em0 laggport em1


Интерфейс будет выглядеть следующим образом, и основные различия будут в MAC-адресе и имени устройства:
# ifconfig lagg0
lagg0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=8<VLAN_MTU>
        ether 00:05:5d:71:8d:b8
        media: Ethernet autoselect
        status: active
        laggproto failover
        laggport: em1 flags=0<>
        laggport: em0 flags=5<MASTER,ACTIVE>


Трафик будет передано и полученных по em0. Если связь теряется на em0 то em1 становится активным линком. Если связь восстанавливается на интерфейсе мастера то снова em0 станет активным линком.

Пример Failover роуминга

В следующем примере используется активный отказоустойчивый интерфейс для настройки роуминга между проводными и беспроводными сетями, используя два сетевых устройств. И всякий раз, когда проводной master интерфейс не подключен, беспроводной интерфейс будет использоваться:

# ifconfig em0 up
# ifconfig ath0 nwid my_net up
# ifconfig lagg0 laggproto failover laggport em0 laggport ath0 \
192.168.1.1 netmask 255.255.255.0

Стартап

Настроим запуск агрегации LACP при перегрузки системы:

# echo 'ifconfig_xl0="up"' >> /etc/rc.conf
# echo 'ifconfig_xl1="up"' >> /etc/rc.conf
# echo 'cloned_interfaces="lagg0"' >> /etc/rc.conf
# echo 'ifconfig_lagg0="laggproto lacp laggport xl0 laggport xl1 192.168.0.1 netmask 255.255.255.0"' >> /etc/rc.conf
# reboot

Проверим

# ifconfig
xl0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=9<RXCSUM,VLAN_MTU>
        ether 00:04:79:66:4b:ae
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
        lagg: laggdev lagg0
xl1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=8<VLAN_MTU>
        ether 00:04:79:66:4b:ae
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
        lagg: laggdev lagg0
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
        inet6 fe80::1 prefixlen 64 scopeid 0x3
        inet6 ::1 prefixlen 128
        inet 127.0.0.1 netmask 0xff000000
lagg0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=8<VLAN_MTU>
        ether 00:04:79:66:4b:ae
        inet 192.168.0.1 netmask 0xffffff00 broadcast 192.168.0.255
        media: Ethernet autoselect
        status: active
        laggproto lacp
        laggport: xl1 flags=1c<ACTIVE,COLLECTING,DISTRIBUTING>
        laggport: xl0 flags=1c<ACTIVE,COLLECTING,DISTRIBUTING>

Свитч

Настроим работу коммутатор 2го уровня D-Link DES-3028.

DES-3028:4#config lacp_port 1-2 mode active
DES-3028:4#create link_aggregation group_id 1 type lacp
DES-3028:4#config link_aggregation group_id 1 master_port 1 ports 1-2 state enable

Заключение

Смотрим systat и скорость копирования.

                    /0   /1   /2   /3   /4   /5   /6   /7   /8   /9   /10
     Load Average   |
 
                    /0%  /10  /20  /30  /40  /50  /60  /70  /80  /90  /100
root     idle: cpu0 XXXXXXXXXXXXXXXXX
root     irq19: xl1 XXXXXXXXXXXXX
ftp         proftpd XX
root     irq18: xl0 XXXX

В итоге обе сетевые карты работают, скорость определенно возрастает с нашим настроением =).

Есть ограничения в работе агрегации см. ITworld.com - Link Aggregation with 802.3ad.

  • Все порты при агрегации должны быть одного типа (CAT-5E/6, SM или MM и тп).
  • Порты должны действовать на одной скорости.
  • Агрегировать канал можно до скорости 8-гигабит/сек.
  • Свитч может поддерживать 802.3ad. (но можно и без этого если сетевые карты такой режим поддерживают)

Ссылки

  • Man lagg
  • Link Aggregation and Failover
  • Wiki
  • WISEKUMA
  • Агрегирование каналов

Дополнительные материалы
Ссылки: 
>>ВЕТКА ФОРУМА<<
Ваша оценка: Нет Средняя: 4.5 (19 голосов)

Источник (получено 16/06/2025 - 00:53): http://www.ignix.ru/book/freebsd/network