суббота, 13 июня 2015 г.

Установка Zabbix 2.4 в CentOS 6.5

1. Устанавливаем базовые пакеты, требующиеся для дальнейшей работы:
# yum install wget nano net-tools unzip mc nano telnet
# yum -y install perl-CPAN
# yum install gcc*
# yum install binutils*

2. Отключаем SELinux, iptables и перезагружаемся.
# nano /etc/sysconfig/selinux
Комментируем все, вставляем строчку
SELINUX=disabled
# nano /etc/sysconfig/iptables
Комментируем все строчки, определяющие правила (начинаются с -A)
# reboot

3. Установливаем MySQL и добавляем в автозагрузку
# yum install mysql mysql-server
# chkconfig --levels 235 mysqld on
Запускаем MySQL
# /etc/init.d/mysqld start
Задаем пароль root для сервера MySQL
# mysql_secure_installation
Сначала вводим на первый вопрос просто <Enter>, затем на вопрос
Set root password? [Y/n], вводим y и задаем пароль root для MySQL
На следующие вопросы yes (по умолчанию)

4. Установливаем Web-сервер apache и добавляем его в автозагрузку
# yum install httpd
# chkconfig --levels 235 httpd on
В файле конфигурации apache httpd.conf вписываем строчку, задающую имя сервера
# nano /etc/httpd/conf/httpd.conf
ServerName zabmar.ru:80
Затем прописываем это имя в файле hosts, что бы сервер знал, что имя zabmar.ru - это он сам.
# nano /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4 zabmar.ru
Наконец запускаем сервер Apache
# /etc/init.d/httpd start

5. Устанавливаем PHP5
# yum install php
Установка модулей для связки PHP5 и Mysql
# yum install php-mysql php-gd php-imap php-ldap php-odbc
Перезапускаем web-сервер
# /etc/init.d/httpd restart
Создаем файл для проверки работы PHP
# nano /var/www/html/info.php
вписываем туда
<?php phpinfo();
?>
Теперь при запросе страницы Info.php (http://<ip-сервера>/info.php) можно увидеть информацию о модуле PHP.  Проверяем, что на странице имеется раздел MySQL.

6. Подключаем репозитарий EPEL, необходимый для установки PhpMyAdmin
# rpm --import https://fedoraproject.org/static/0608B895.txt
# wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
# rpm -ivh epel-release-6-8.noarch.rpm

7, Устанавливаем PhpMyAdmin
# yum install phpMyAdmin
Редактируем файл phpMyAdmin.conf
# nano /etc/httpd/conf.d/phpMyAdmin.conf
Везде добавляем к ip адресам
 ip 127.0.0.1 
дополнительные сети, с которых разрешено просматривать phpmyadmin
 ip 127.0.0.1 10.0.0.0/8 192.168.0.0/16
Правим файл конфигурации config.inc.php
# nano /etc/phpMyAdmin/config.inc.php 
Меняем в нем
$cfg['Servers'][$i]['auth_type']     = 'cookies';
на
$cfg['Servers'][$i]['auth_type']     = 'http';
Перезагружаем apache
# /etc/init.d/httpd restart
Набираем в браузере для просмотра phpmyadmin
http://<ip-адрес>/phpmyadmin/
Используем для доступа данные root и пароль, заданный при настройке MySQL

8. Копируем на машину исходные коды программ NET-SNMP и SNMPTT, скачанные с официальных сайтов:
net-snmp-5.7.3.zip (http://net-snmp.sourceforge.net/ ) и 
snmptt_1.4.tgz (http://snmptt.sourceforge.net/ )

9. Распаковываем архивы
# unzip net-snmp-5.7.3.zip
# tar -zxvf snmptt_1.4.tgz

10. Собираем и устанавливаем NET-SNMP
# cd net-snmp-5.7.3
Устанавливаем дополнительные пакеты PERL, которые нужны для работы NET-SNMP
# perl -MCPAN -e 'install Net::SNMP'
В появляющихся вопросах – соглашаемся со всем нажатием ENTER
Затем необходим еще один модуль PERL
# yum install perl-ExtUtils-Embed
Запускаем конфигуратор из папки с исходными кодами:
# ./configure --enable-embedded-perl --enable-shared
Запуститься диалог. Отвечаем на опросы так (показано красным):
Default version of SNMP to use (3): 2 / будем работать со 2ой версией /
System Contact Information (@@no.where): tech@yandex.ru / указываем e-mail /
System Location (Unknown): Samara / место расположения / 
Location to write logfile (/var/log/snmpd.log): /соглашаемся, нажав ENTER /
Location to write persistent information (/var/net-snmp): /соглашаемся, нажав ENTER /
Затем
# make
# make install

11. Запускаем демон SNMPD
Перед запуском snmpd создаем индивидуальный файл конфигурации
# mkdir /etc/snmp
# touch /etc/snmp/snmpd.conf
# nano /etc/snmp/snmpd.conf
rocommunity  public
syslocation  "Samara"
syscontact  tech@yandex.ru
Запуск snmpd
# /usr/local/sbin/snmpd -c /etc/snmp/snmpd.conf

12. Запускаем демон SNMPTRAPD
Создаем и правим файл конфигурации демона SNMPTRAP.
# touch /etc/snmp/snmptrapd.conf
# nano /etc/snmp/snmptrapd.conf
Вписываем в файл:
authCommunity   log,execute,net public
disableAuthorization yes
[snmp] logoption f /var/log/snmptrap.log 
(последнюю строчку закомментируем после отладки)
Запускаем SNMPTRAPD
# /usr/local/sbin/snmptrapd -On -c /etc/snmp/snmptrapd.conf

13. Проверяем, что демоны SNMPD и SNMPTRAPD запустились и порты активны и заняты правильными службами
# ps ax | grep snmp
19965 ?        S      0:00 /usr/local/sbin/snmpd -c /etc/snmp/snmpd.conf
19971 ?        Ss     0:00 /usr/local/sbin/snmptrapd -c /etc/snmp/snmptrapd.conf
19973 pts/0    S+     0:00 grep snmp
# netstat -ltupn | grep snmp
udp        0      0 0.0.0.0:161             0.0.0.0:*                           28877/snmpd
udp        0      0 0.0.0.0:162             0.0.0.0:*                           28889/snmptrapd
Проверяем прием трапов командой, генерирующий трап о падении порта:
# snmptrap -v 1 -c public  127.0.0.1 '.1.3.6.1.2.1.2.2.1.8.1' '10.200.72.43'  3 0 '557' .1.3.6.1.2.1.2.2.1.8.1 i 2
В файле /var/log/snmptrap.log должен отобразиться принятый трап.
Проверяем работу запросов snmp
# snmpwalk -v 2c -c public localhost IF-MIB::ifAdminStatus
В ответ должны получить информацию по статусам интерфейсов.

14. Проверяем, как установлен пакет NET-SNMP. Пригоден ли он для работы с SNMPTT в режиме Embedded handler
# snmptrapd -H 2>&1 | grep perl
    perl                     PERLCODE
    perlInitFile             string
Наличие первой строки сообщает, что требуемая поддержка имеется и возможно использование встроенного обработчика помимо стандартного обработчика трапов.

15. Устанавливаем пакеты необходимые для работы SNMPTT
# perl -MCPAN -e 'install Sys::Syslog' 
# perl -MCPAN -e 'install Perl::OSType'
# perl -MCPAN -e 'install Module::Build'
# perl -MCPAN -e 'install Config::IniFiles'
(если система будет задавать вопросы – соглашаемся со всем, нажимая ENTER)
# yum -y install perl-Time-HiRes

16. Устанавливаем SNMPTT
# cd ../snmptt_1.4
# cp snmptt /usr/local/sbin/
# chmod +x /usr/local/sbin/snmptt
# cp snmptthandler-embedded /usr/local/sbin/
# chmod +x /usr/local/sbin/snmptthandler-embedded
# cp snmptt.ini /etc/snmp/
В файле настроек snmptt.ini правим некоторые строки
# nano /etc/snmp/snmptt.ini
mode = daemon
net_snmp_perl_enable = 1
log_system_enable = 1 (включаем логирование ошибок)
date_time_format = %H:%M:%S %Y/%m/%d
daemon_uid = root
Определяем правило ротации логов:
# cp snmptt.logrotate /etc/logrotate.d/snmptt
Файл правил обработки SNMP трапов у SNMPTT - examples/snmptt.conf.generic. С файлом нужно ознакомиться и понять его формат. Затем создаем файл своих правил:
# touch /etc/snmp/snmptt.conf
Правим файл:
# nano /etc/snmp/snmptt.conf
Вписываем в файл для примера:
EVENT SamaraAlarm .1.* "all" Normal
FORMAT $+* TEST $aA $1
Создать каталоги, необходимые для работы SNMPTT
# mkdir /var/log/snmptt/
# mkdir /var/spool/snmptt/
Создать файл логов
# touch /var/log/snmptt/snmptt.log
# chmod 777 /var/log/snmptt/snmptt.log

17. Запускаем SNMPTT
# cp snmptt-init.d /etc/rc.d/init.d/snmptt
# chkconfig --add snmptt
# chkconfig --level 2345 snmptt on
# ln -s /usr/local/sbin/snmptt /usr/sbin/snmptt
# service snmptt start
В процессах должно появится два запущенных процесса SNMPTT
# ps ax | grep snmptt
12963 ?        Ss     0:00 /usr/bin/perl /usr/sbin/snmptt --daemon
12965 ?        Ss     0:00 /usr/bin/perl /usr/sbin/snmptt --daemon
12967 pts/0    S+     0:00 grep snmptt

18. Связываем SNMPTRAPD и SNMPTT
Вносим изменения в файл snmptrapd.conf
# nano /etc/snmp/snmptrapd.conf
Дописываем в конец
perl do "/usr/local/sbin/snmptthandler-embedded"; 
(Cтрока включает встроенный обработчик транслирующий трапы)
(Если вдруг есть такая строчка traphandle default /usr/sbin/snmptthandler – удаляем ее)
(Строчку [snmp] logoption f /var/log/snmptrap.log тоже можно удалить или закомментировать, что бы не собирались лишние логи)
Останавливаем демон SNMPTRAPD. Например с помощью Kill.
Теперь запускаем SNMPTRAPD вот так:
# /usr/local/sbin/snmptrapd -On -c /etc/snmp/snmptrapd.conf
После запуска snmptrap будет предупреждение
Loaded the SNMPTT embedded snmptrapd handler
Значит, все верно запущено – SNMPTRAPD будет работать с SNMPTT в Embedded handler режиме.
Проверяем:
# snmptrap -v 1 -c public  127.0.0.1 '.1.3.6.1.2.1.2.2.1.8.1' '10.200.72.43'  3 0 '557' .1.3.6.1.2.1.2.2.1.8.1 i 2
В файле /var/log/snmptt/snmptt.log должен отобразиться принятый трап.
Для дальнейшего запуска демона SNMPD и SNMPTT использовать:
# /usr/local/sbin/snmpd -c /etc/snmp/snmpd.conf
# /usr/local/sbin/snmptrapd -On -c /etc/snmp/snmptrapd.conf
Эти команды лучше добавить в файл /etc/rc.local
# nano /etc/rc.local
Добавляем в конец файла:
/usr/local/sbin/snmpd -c /etc/snmp/snmpd.conf
/usr/local/sbin/snmptrapd -On -c /etc/snmp/snmptrapd.conf

19. Устанавливаем репозитарий для установки Zabbix 2.4
#  rpm -ivh http://repo.zabbix.com/zabbix/2.4/rhel/6/x86_64/zabbix-release-2.4-1.el6.noarch.rpm
Производим установку пакетов zabbix
# yum install zabbix-server-mysql zabbix-web-mysql
# yum install zabbix-agent

20. Подготавливаем базу данных MySQL для работы с zabbix. Создаем базу данных и пользователя zabbix, который будет работать с базой данных. Заливаем схемы таблиц в базу данных
# mysql -uroot -p
mysql> create database zabbix character set utf8;
mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';
(пользователь zabbix с паролем zabbix будет работать с базой данных zabbix)
mysql> exit
# cd /usr/share/doc/zabbix-server-mysql-2.4.5/create/
# mysql -uroot -p zabbix < schema.sql
# mysql -uroot -p zabbix < images.sql
# mysql -uroot -p zabbix < data.sql

21. Вносим корректировки в файл конфигурации Zabbix-сервера zabbix_server.conf
# nano /etc/zabbix/zabbix_server.conf
Правим следующие строки:
DBHost=localhost (установлено по умолчанию)
DBName=zabbix (установлено по умолчанию)
DBUser=zabbix (установлено по умолчанию)
DBPassword=zabbix (по умолчанию пусто)

22. Запускаем Zabbix сервер и добавляем в автоконфигурацию
# service zabbix-server start
# chkconfig zabbix-server on

23. Вносим изменения в файл /etc/httpd/conf.d/zabbix.conf, определяющий работу WEB-интерфейса Zabbix в сервере apache
# nano /etc/httpd/conf.d/zabbix.conf
Ищем строчку
# php_value date.timezone Europe/Riga
раскомментируем ее и меняем на
php_value date.timezone Europe/Moscow 
Рестартуем сервис Apache
# service httpd restart

24. Все, Zabbix установлен. Теперь можно обратиться к нему по адресу http://<ip адрес>/zabbix и выполнить первоначальную конфигурацию.

  

Нажимаем Next >>
Здесь проверяем, что бы не было никаких сообщений о ошибках. Нажимаем Next >>
Выбираем базу MySQL, вводим имя базы – zabbix, пользователя zabbix и пароль zabbix.
Нажимаем кнопку «Test connection»
 
Зеленым должно появиться сообщение «ОК». Нажимаем Next >>
Пишем какое-нибудь имя (например, svttk) в поле Name и нажимаем кнопку Next >>
Нажимаем кнопку Next >>
Нажимаем кнопку Finish >> и видим интерфейс входа в систему zabbix. 
Входим в web-интерфейс Zabbix. Параметры доступа по умолчанию - Admin/zabbix и радуемся

25. Запускаем Zabbix агент на сервере (иначе сервер Zabbix не сможет мониторить сам себя)
Открываем файл zabbix_agentd.conf и вносим в него правки
# nano /etc/zabbix/zabbix_agentd.conf
Ищем строку Server= и вписываем туда IP адрес
Server=127.0.0.1 (по умолчанию должно быть уже так)
Запускаем службу zabbix агента и добавляем ее в автозапуск
# service zabbix-agent start
# chkconfig zabbix-agent on
# service zabbix-server restart

26. Для того что бы Zabbix работал с утилитой ping (а вернее fping) выполняем следующее
# yum install fping
Ищем, куда установился fping
# find / | grep fping
У меня получилось - /usr/sbin/fping
Далее даем zabbix права на работу с fping
# chown root:zabbix /usr/sbin/fping
# chmod 710 /usr/sbin/fping
# chmod ug+s /usr/sbin/fping
Открываем файл zabbix_server.conf и проверяем в файле путь к утилите fping, найденный ранее.
# nano /etc/zabbix/zabbix_server.conf
Раскоментируем эту строчку:
FpingLocation=/usr/sbin/fping 
Рестартуем сервер zabbix
# service zabbix-server restart

27. Для того что бы в Zabbix работали внешние скрипты, (созданные нами) выполняем следующее:
Открываем файл /etc/zabbix/zabbix_server.conf и узнаем там, куда нужно положить внешний скрипт:
# nano /etc/zabbix/zabbix_server.conf
Ищем строку, начинающуюся с ExternalScripts:
ExternalScripts=/usr/lib/zabbix/externalscripts
Видим, что искомый пусть – это /usr/lib/zabbix/externalscripts
Помещаем туда скрипт, например скрипт sakura2_alarm.php
# cp /mnt/sakura2/sakura2_alarm.php /usr/lib/zabbix/externalscripts/
Даем права Zabbix-у работать с эти скриптом:
# chown root:zabbix /usr/lib/zabbix/externalscripts/sakura2_alarm.php
# chmod ug+s /usr/lib/zabbix/externalscripts/sakura2_alarm.php
# chmod 755 /usr/lib/zabbix/externalscripts/sakura2_alarm.php
Теперь этот скрипт можно добавить в Zabbix в раздел Администрирование – Скрипты.

28. Для того что бы Zabbix работал с SNMP trap-ами необходимо следующее:
Открываем файл /etc/zabbix/zabbix_server.conf и ищем там разделы SNMP
# nano /etc/zabbix/zabbix_server.conf
### Option: SNMPTrapperFile
#Temporary file used for passing data from SNMP trap daemon to the server.
#Must be the same as in zabbix_trap_receiver.pl or SNMPTT configuration file.
#
# Mandatory: no
# Default:
# SNMPTrapperFile=/tmp/zabbix_traps.tmp

SNMPTrapperFile=/var/log/snmptt/snmptt.log

### Option: StartSNMPTrapper
# If 1, SNMP trapper process is started.
#
# Mandatory: no
# Range: 0-1
# Default:
# StartSNMPTrapper=0
StartSNMPTrapper=1
Обращаем внимание на путь к логам SNMP -  /var/log/snmptt/snmptt.log
Этот путь к логам сервиса SNMPTT.
Затем добавляем строчку
StartSNMPTrapper=1
Рестартуем сервер zabbix
# service zabbix-server restart

ПРИМЕЧАНИЕ: для того что бы Zabbix корректно читал SNMP trap-ы падения и поднятия портов, формат логов нужно задать в файле /etc/snmp/snmptt.conf
# nano /etc/snmp/snmptt.conf
Вписываем туда:
EVENT LinkDown .1.3.6.1.6.3.1.1.5.3 "LinkDown" Normal
FORMAT ZBXTRAP $aA $1 port
EVENT LinkUp .1.3.6.1.6.3.1.1.5.4 "LinkUp" Normal
FORMAT ZBXTRAP $aA $1 port
Строки, собирающие все трапы комментируем:
# EVENT SamaraAlarm .1.* "all" Normal
# FORMAT $+* TEST $aA $1
Рестартуем SNMPTT
# service snmptt restart
Теперь при падении и поднятии 3 порта на свиче 10.200.72.43 в логах (файл /var/log/snmptt/snmptt.log) должно появиться:
22:08:19 2015/06/05 .1.3.6.1.6.3.1.1.5.3 Normal "LinkDown" 10.200.72.43 - ZBXTRAP 10.200.72.43 3 port
22:08:41 2015/06/05 .1.3.6.1.6.3.1.1.5.4 Normal "LinkUp" 10.200.72.43 - ZBXTRAP 10.200.72.43 3 port
Этот формат удовлетворителен, для чтения трапов zabbix-ом.

==========================

Для увеличения быстродействия сервера Zabbix выполнить:

В файле конфига etc/zabbix/zabbix_server.conf были раскоментированны и изменены следующие параметры
StartPingers=25 Старое значение 1
CacheSize=512M Старое знаечение 8M
StartPollersUnreachable=5 сатрое значение 1

==========================

Для мониторинга всяких китайских железок необходимо, чтобы флаг DF (флаг фрагментации) в IP пакете не ставился. 
В linux этот флаг ставится по умолчанию.
Необходимо запретить установку флага DF командой:
echo 1 > /proc/sys/net/ipv4/ip_no_pmtu_disc
и записать эту команду в файл /etc/rc.local


=============================================

Уменьшаем размер файла /var/log/messages на сервер Zabbix

1. Для отключения логирования SNMPtrap-ов в это файл запусаем демон SNMPTRAPD с опцией Ln

/usr/local/sbin/snmptrapd -On -Ln -c /etc/snmp/snmptrapd.conf
Добавляем эту строчку в /etc/rc.local

2. В настройках демона SNMPTT выключаем логирование в файлы syslog и messages:
nano /etc/snmp/snmptt.ini
syslog_enable = 0
Не забываем рестартовать snmptt
service snmptt restart

3. Настраиваем, что бы глобальный лог /var/log/messages хранился только 2 недели (по умолчанию -4)
Открываем файл
nano /etc/logrotate.conf
Исправляем строчку
с
rotate 4
на

rotate 2

Комментариев нет:

Отправить комментарий