Из порта:
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
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.
после чего перезагружаем 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
Ставим:
Из порта:
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
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
Хотя в 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
Прошло 1,5 года с момента написания этой статьи (на ресурсе Lissyara.su). И надо ее обновить с учетом всех возникших за эти годы поправок, созданных в реальной работе. После ввода в эксплуатацию она принесла мне много положительного, например экономия моего времени, а именно - проще стало проводить инвентаризацию, управлять договорами, обрабатывать и учитывать заявки пользователей, вести учет лицензий и ПО, и так же многое другое.
И так, что же такое GLPI и как этот продукт поможет нам в тяжелых буднях?
GLPI - это веб-приложение, разработанное на PHP для работы с ним необходим только доступ к серверу и браузер.
Среди его возможностей:
Кроме того, 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/
# 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. *****************************************************************
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 httpd.conf внесем следующее:
Alias /glpi "/usr/local/www/glpi" <Directory /usr/local/www/glpi> AllowOverride Options FileInfo </Directory>
# 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 для учетной записи публикатора Вы можете изменить или удалить эти учетные записи также как и первые записи в БД.
Необходим для технических работ к примеру для проверки почты, отправки уведомлений и т.п.
# crontab -l |grep glpi */5 * * * * /usr/local/bin/php /usr/local/www/glpi/front/cron.php > /dev/null 2>&1
Это очень удобная вещь даже для самих администраторов. К примеру вам надо не забыть, что то сделать или пользователь не имеет возможность зайти в тикет систему по веб интерфейсу. Вам нужно будет всего лишь отправить по нужному е-майлу письмо с вопросом. И оно уже автоматически попадет в тикет систему. И если у вас сделано, что за пользователем закреплен е-майл то GLPI автоматически свяжет его с этим сообщением.
Вам необходимо настроить почтовую учетную запись приемника почты. Пример:
Основная панель > Установки > Приемник почты
Отправьте на е-майл заявку и в приемнике почты нажмите на кнопку "Получить заявки сейчас". Если все получилось то двигаемся дальше, если нет то ищем где ошиблись.
Я привык чтобы учетные записи пользователей были в одном месте и все службы брали от туда необходимую им информацию. Как и все я использую LDAP каталоги это может быть как OLDAP так и Active Directory Microsoft. Для примера будем подключаться к Active Directory. Для этого необходимо создать технического пользователя и настроить на получение информации с LDAP. Думаю с пользователем проблем не возникнет (у меня он services), а подключить необходимо так:
Основная панель > Установки > Аутентификация
Выбрать Внешняя аутентификация - 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 сервере не забывайте синхронизировать и в GLPI.
Установка плагинов производится в директорию /glpi/plugins
К примеру установим плагин 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 файл.
В. Проблема с читаемостью PDF файлов. Все русские слова отображаются закорючками.
О. Это не баг, а фича разработчики GLPI знают и пока ничем не могут помочь. Единственное есть возможность обхода.
1. Экспортировать в CVS.
2. Открыть файл с помощью OpenOffice, указав кодировку открываемого файла UTF-8.
В. Как пользователям облегчить доступ к веб интерфейсу GLPI?
О. Я создал алиас help и теперь пользователи набрав это слово сразу попадают в GLPI.
DHCP - это расширение протокола BOOTP, который был придуман для того, чтобы бездисковые станции UNIX могли загружаться по сети. Подсистема BOOTP предоставляет клиентам IP-адреса, сетевые маски, стандартные шлюзы, а так же информацию, касающуюся начальной загрузки через TFTP. Протокол DHCP не ограничивается этими параметрами, вводя понятие аренды. Хватит пока теории - на практике любому сетевику средних и больших сетей необходима управляемая сетевая структура которая, будет динамично управляться и обновляться при необходимости. Для этого мы и используем протокол DHCP.
Воспользуемся эталонным ПО в реализации DHCP - демон организации Internet Systems Consortium. Мы опишем конфигурацию обеспечивающую, динамическое распределение указанного диапазона IP-адресов, фиксирование IP-адресов за сетевым устройствами, а также передачу клиентам разнообразных параметров необходимых, для работы в сети TCP/IP. А так же реализуем дополнительные трюки, к примеру - запуск в нескольких подсетях, ограничивание неизвестных клиентов, и, живя в эпоху сетевых дикарей, мы будем повышать безопасность демона путем запуска в песочнице (изменение корневого каталога chroot) и работой от имени непривилегированного пользователя. Но и на старуху бывает порнуха - предохраняйтесь и обновляетесь. =)
Установка проста, но не забывайте сначала обновить систему портов. Найдем необходимый нам порт.
# 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; } }
Из этого вам уже понятно, что мы сформировали две группы (для удобства работы и можно добавлять больше групп или вообще без них работать)
Для автоматического запуска при перезагрузке сервера внесем в /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" # необходимо для полного корня
#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" # доп. сетевой интерфейс через пробел
Иногда необходимо ограничивать работу неизвестных клиентов, о которых нет упоминания в dhcp.conf, или использовать разные конфигурации сетей в зависимости от клиента - это делается двумя параметрами.
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; } } }
И так эта версия протокола накладывает свои ограничения на работу 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
В: Где DHCP хранит списки выданных адресов?
О: У DHCP есть файл базы данных по арендуемым параметрам называемый dhcp.leases также демон периодически делает резервную копию этого файла dhcp.leases~. И при проблемах с основным файлом вы можете его заменить резервным.
Я подумал о создании социальной сети для своего родного города в которой можно смотреть ролики, создавать музыкальные альбомы, слушать музыку он-лайн и так далее. Для начала необходимо создать платформу для нее. С последующей установкой (в следующей статье будет рассмотрена его установка) socengine 3.20. Приступим к установке необходимого программного обеспечения для будущей работы socengine.
Обновляем исходные коды и порты встроенной утилитой 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
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 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:
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"
Соберем данный модуль.
/usr/ports/www/mod_rpaf2 && make install clean
Установим и настроим 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, но тут появились проблемы.
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/
/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:
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; } }
Ставим ускоритель.
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
Redmine — открытое серверное веб-приложение для управления проектами и отслеживания ошибок. Redmine написан Ruby и представляет собой приложение на основе широко известного веб-фреймворка Ruby on Rails.
Данный продукт предоставляет следующие возможности:
Я буду устанавливать на "голую" FreeBSD 8.0 i386 и поэтому у меня будет больше запросов по установке, а у вас соответственно меньше.
Установим классически из портов:
# 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 -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:
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-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 хранит данные сессии в куках по умолчанию, который требует секрета и мы его создадим. Это можно сделать командой:
# 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 и в браузере вводим _http://test.site.local
Вводим учетную запись администратора
Логин: admin
Пароль: admin
В своем профиле меняем язык на Русский. И обязательно меняем дофолтовый пароль на свой.
Настроим систему рассылки сообщений.
# 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/
# 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) =============================
# 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, позволяющие получать уведомления посредством этой технологии, также уведомления рассылаются с помощью электронной почты.
В. Проблема после обновления
О. Выполните
# 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
Статей про 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 зайти Настройки->Действия с указанием об отправке уведомлений и по СМС.
Вот и все.
Для многих устройств нет шаблонов в Zabbix, но я начал создавать свои шаблоны. Все они представлены ниже прикрепленные к статье. По каким требуются пояснения я буду писать. Так же я научу создавать шаблоны и так начнем.
Скрипт на 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
Дальше в шаблоне удалите ненужные элементы данных, триггеры и при необходимости создайте свои графики и подключайте к нужным сетевым устройствам.
Шаблон скачиваем ниже статьи, но требуются следующие движения. Для мониторинга 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
==
+ - добавлено
^ - обновлено
Приходит к нам осень.
Упали все листья -
Пора мониторить.
Хайку.
В один из дней я захотел узнавать о неполадках в сетевой инфраструктуре\серверов\сервисов\сайтов и тп не через пользователей или пока сам не споткнусь. А был бы своевременно предупрежден через sms\mail\jabber в ту же минуту когда начались неполадки. Мог посмотреть и визуально контролировать карты моей инфраструктуры удаленных серверов и сервисов и видеть в какой части сети или линии произошел сбой и\или какой сервис стал недоступным. И задумался о системе мониторинга, оповещения и отслеживания статусов разнообразных сервисов в компьютерной сети, серверов и сетевого оборудования.
Долго выбирал из таких систем как Nagios, Zenoss, Zabbix, GroundWork, OpenNMS и Opsview.
Читал информацию по каждой системе, тестировал и сравнивал каждую. Отказывался от проектов по разным причинам например нет нужного функционала или он есть, но не в базовой бесплатной поставке, а в ее коммерческом варианте. Так же в виду неудобной эксплуатации, отсутствие грамотной документации, поддержки, работой серверной части на всякой экзотики типа Zope\Python и тп.
Остановился я на системе Zabbix в виду того что:
Содержание:
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/
# 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
# 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
Устанавливается легко и непринужденно.
# 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'.
Для начала:
Запомните, настройку вы делаете один раз и от этого будет зависит как вы в дальнейшем поедете. Дальнейшая работа сведется к просмотру графиков нагрузки, добавлению хостов и отслеживанию параметров.
Чтобы настроить zabbix нам необходимо понять его терминологию и чем он оперирует при сборе и анализе данных. Терминов не много.
И так поехали.
У хостов есть определенные параметры и мы их должны контролировать. Иногда, когда они переходят заданную нами границу и срабатывают триггеры которые мы установили или выбрали по шаблону, что вызывает собой необходимые действия например отправка вам на телефон sms с текстом «Ваш сервант в Африке навернулся ;)». Так же рисуются графики показателей их можно обьеденить в экран.
Узлы сети - Здесь вы можете создать узел связи и включить в группу узлов связи которую вы можете так же создать. При создание узла связи (хоста) задается его имя наименование группы в которой ему необходимо быть включенным, IP адрес или доменное имя, порт агента, состояние и связь с шаблоном (схема сбора данных).
Группы узлов в сети — логическое объединение устройств. Например все сервера в группу Servers все сайты в Web и тп.
Элементы данных - показателем может быть любой системный параметр, значение которого может вычислить zabbix-агент. Показатель может быть как «встроенным» (например объем свободной памяти, загрузка CPU) так и пользовательским. При создании показателя можно указать достаточно много параметров, важнейшие из которых: тип, ключ ,интервал обновления, приложение и группа. Интервалы можно задавать весьма гибко.
Триггеры - триггер создается по какому то определению, если какой-то из показателей перешел через граничное значение. Например можно указать что при отсутствие пинга на определенном хосте активироваться. (создан темплар в котором создан тест пинга и темплар присвоен хосту. И в триггерах создано правило(триггер) для хоста при отсутствие оного активироваться).
Действие — при активации триггера необходимо выполнить определенное действие. Например отправить смс или написать письмо. Вы корректируете эти действия и убираете ненужные. А так же а пользователях указываете кому отправлять сообщения.
Графики - чтобы увидеть график, надо задать его имя, размеры для прорисовки, и показатель, который мы хотим отобразить. Для показателя задается дополнительно цвет и вид заливки. На одном графике может быть сведено несколько показателей. Для изменения существующего графика нажмите напротив него ссылку «Изменить».
Комплексные отчеты — тут сводим все графики в один экран. Тут указываем количество строк и колонок. Для изменения существующего отчета нажмите напротив него ссылку «Изменить». Каждый график можно проматывать во времени, а также менять масштаб временной оси (1 час, 8 часов, сутки, неделя, месяц, год).
Карты сети - тут вы создаете кары или меняете существующую. На данный момент у вас там определен только один хост это ваш сервер. И вам необходимо будет добавить новые элементы (хосты) и связать их между собой связями зависящими от триггеров.
Должно получится что то похожее:
Эту систему я использую уже давно и она продолжает меня радовать единственное при обновлениях старательно сохраните существующую БД и файлы тк разработчики в новых ветках знатно косячат. Да и настроите чтобы система не так сильно стремалась по каждому не пройденному тесту пинга и не отправляла вам e-mail по мелочам. Особенно касается это удаленных серверов стоящих, где нибуть на островах. =)
Добрый день, сегодня хотел бы рассказать всем о так сказать почти всех способах оповещения системы Мониторинга Zabbix. В данной статье пойдёт речь о таких системах мгновенных сообщений как: SMS, Jabber, ICQ, email
Содержание:
Все действия делались на системе FreeBSD 8.2 i386 и будем считать, что сервер Zabbix стоит и уже работает, а как развернуть и настроить сервер в этой статье описываться не будет. Для этого вы можете прочитать статью Zabbix - мониторим и отслеживаем
Начнём с самого простого Email
Для начала идём в порты и ставим очень удобную программку sendEmail
cd /usr/ports/net/sendemail/ && make install clean
?????????????????????????????????????????????????????????????????????? ? 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
Я использовал смсшлюз ТурбоСМС Он очень удобен так как у него есть возможность отправки СМС через 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
Возможно есть и другие способы, с помощю ПХП ботов, или ещё чего, но я выбрал путь с помощью консольного клиента 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/
chmod +x zabbix_icqsend
И делаем такой запросик
./zabbix_icqsend UIN MSG
./zabbix_icqsend 123456789 Helo World
И вам придёт сообщение.
Есть пару нюансов, надо что бы вы были авторизированы у этого номера, и что бы он у вас тоже.
Так же есть фаерволом не закрыть порт 33000 то можоно по телнету подключиться и слать сообщения )
Русский только в UTF-8
Ну вот собственно и всё, писал на скорую руку, так что вопросы в студию, поправлю чё надо, и дорасскажу чего не хватает
Всем спасибо, все свободны.
Скрипт обновлений называется nod32 mirror script и предназначен для создания собственного зеркала обновлений для сети, офиса, или другой группы компьютеров. На сегодняшний момент, а это 25.09.2011 существует стабильная версия скрипта nod32ms_3.0.0_beta1 успешно протестированная под разными платформами.
Что требуется для работы скрипта:
Что умеет скрипт:
Как установить скрипт обновлений nod32ms?
temp_dir = путь до temp директории (например /etc/nod32/temp) web_dir = путь до пользовательской директории обновления (например /var/www/localhost/htdocs)
59 * * * * root sh /usr/local/etc/nod32ms/manual_start.sh (вместо /usr/local/etc/nod32ms/ укажите свой путь до файла manual_start.sh, после записи сделайте переход на следующую строку, иначе ваш крон выдаст ошибку)
Заходим в корень скрипта и в зависимости от системы и меняем пути до файла php.exe и\или update.php в файлах manual_star.bat или manual_start.sh, потом запускаем и ждем до тех пор пока скрипт не отработает
Вложение | Размер |
---|---|
nod32ms_3.0.0_beta5.rar | 566.85 КБ |
В процессе своей работы я заменил 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 [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
Создадим 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
Создадим отказоустойчивый режим который можно использовать для перехода на вторичный интерфейс при потери связи на основном интерфейсе. Создадим и настроим интерфейс lagg0, с em0 как основной интерфейс и em1 как дополнительный интерфейс:
# ifconfig lagg0 create # ifconfig lagg0 up laggproto failover laggport em0 laggport em1
# 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>
В следующем примере используется активный отказоустойчивый интерфейс для настройки роуминга между проводными и беспроводными сетями, используя два сетевых устройств. И всякий раз, когда проводной 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.