Журнал настройки сервера sysmonitor.ru

Устанавливаем часовой пояс

Наш выбор - Etc/UTC. Т.е. время на серверах - универсальное.
# dpkg-reconfigure tzdata

Устанавливаем имя хоста

Кластер серверов у нас состоит из двух узлов Zabbix. Сколько их будет в будущем - неизвестно, поэтому называем узлы бесхитростно - node1 и node2. Имя указываем в файле /etc/hostname:
Имя IP-адрес
node1 178.63.190.230
node2 212.124.121.130

Настройка синхронизации времени

Установка пакета ntpdate

# apt-get install ntpdate

Задаем параметры запуска ntpdate-debian

# vi /etc/default/ntpdate
NTPOPTIONS="-sB"

Настраиваем периодический запуск ntpdate-debian

# touch /etc/cron.hourly/ntpdate-debian
# chmod +x /etc/cron.hourly/ntpdate-debian
# vi /etc/cron.hourly/ntpdate-debian
#!/bin/sh
/usr/sbin/ntpdate-debian
exit 0
# end of file

Настройка автоматического обновления системы

Установка необходимые пакеты

# apt-get install cron-apt

Настройка cron-apt

По умолчанию cron-apt не устанавливает пакеты, а только скачивает их и рассылает уведомление пользователю root о появлении обновлений для инсталляции. Пока оставляю его в этом режиме.

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

# apt-get install mc less tcpdump screen telnet

# apt-get install bind9
# vi /etc/resolv.conf
search sysmonitoring.net
nameserver 127.0.0.1

# apt-get install git

# useradd -m -c "Zabbix Monitor" -s /bin/false zabbix

Сборка

# apt-get install gcc make postgresql-server-dev-8.4 libiksemel-dev libcurl4-openssl-dev \
    libsnmp-dev libopenipmi-dev
# tar zxf zabbix-1.8.6.tar.gz
# cd zabbix-1.8.6
# ./configure --prefix=/opt/zabbix-1.8.6 --enable-server --enable-agent --enable-ipv6 --with-pgsql \
   --with-jabber --with-libcurl --with-net-snmp --with-ssh2 --with-openipmi --with-ldap
# make
# make install
# cd ..

Подготовка архива

Формирование структуры каталогов

# mkdir -p zabbix-server-1.8.6/opt/zabbix-1.8.6/bin
# mkdir -p zabbix-server-1.8.6/opt/zabbix-1.8.6/share/doc
# mkdir -p zabbix-server-1.8.6/etc/init.d
# mkdir -p zabbix-server-1.8.6/etc/zabbix/externalscripts
# mkdir -p zabbix-server-1.8.6/etc/zabbix/keys
# mkdir -p zabbix-server-1.8.6/etc/zabbix/zabbix_agentd.conf.d
# mkdir -p zabbix-server-1.8.6/etc/zabbix/zabbix_server.conf.d
# mkdir -p zabbix-server-1.8.6/var/log/zabbix
# mkdir -p zabbix-server-1.8.6/var/run/zabbix

Копируем файлы

# cp -a /opt/zabbix-1.8.6 zabbix-server-1.8.6/opt/
# cp -a zabbix-1.8.6/misc/init.d/debian/zabbix-server zabbix-server-1.8.6/etc/init.d
# cp -a zabbix-1.8.6/create zabbix-server-1.8.6/opt/zabbix-1.8.6/share/doc

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

# vi zabbix-server-1.8.6/etc/zabbix/zabbix_server.conf
NodeID=1
ListenPort=10051
LogFile=/var/log/zabbix/zabbix_server.log
LogFileSize=50
DebugLevel=3
PidFile=/var/run/zabbix/zabbix_server.pid

DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=Ghjcntymrbq
#DBSocket=/var/run/mysqld/mysqld.sock
DBPort=5432

StartPollers=1
StartIPMIPollers=1
StartTrappers=30
StartPingers=1
StartDiscoverers=1
StartHTTPPollers=1

HousekeepingFrequency=1
MaxHousekeeperDelete=500
DisableHousekeeping=0
SenderFrequency=30
CacheSize=4M
CacheUpdateFrequency=60

StartDBSyncers=4
HistoryCacheSize=4M
TrendCacheSize=4M
HistoryTextCacheSize=8M
NodeNoEvents=0
NodeNoHistory=0
Timeout=15
TrapperTimeout=30
UnreachablePeriod=45
UnavailableDelay=60
AlertScriptsPath=/opt/zabbix-1.8.6/bin/
ExternalScripts=/etc/zabbix/externalscripts
FpingLocation=/usr/sbin/fping
Fping6Location=/usr/sbin/fping6
SSHKeyLocation=/etc/zabbix/keys
TmpDir=/tmp

Include=/etc/zabbix/zabbix_server.conf.d/
StartProxyPollers=0
ProxyConfigFrequency=3600
ProxyDataFrequency=1
# end of file

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

# vi zabbix-server-1.8.6/etc/zabbix/zabbix_agentd.conf
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=50
DebugLevel=3
SourceIP=
EnableRemoteCommands=0
LogRemoteCommands=1
Server=127.0.0.1
Hostname=
#HostnameItem=system.hostname
ListenPort=10050
ListenIP=0.0.0.0
DisablePassive=0
DisableActive=1
ServerPort=10051
RefreshActiveChecks=120
BufferSend=5
BufferSize=100
MaxLinesPerSecond=100
AllowRoot=0

#Alias=
StartAgents=10
Timeout=30
Include=/etc/zabbix/zabbix_agentd.conf.d/
UnsafeUserParameters=0
#UserParameter=
# end of file

Создаем init-скрипт

# vi zabbix-server-1.8.6/etc/init.d/zabbix-server
#!/bin/sh
#
# Zabbix agent start/stop script.
#
# Written by Alexei Vladishev <alexei.vladishev@zabbix.com>.
# Updated by Vitaly Druzhinin <VitalkaDrug@gmail.com>.
#

### BEGIN INIT INFO
# Provides:             zabbix-server
# Required-Start:       $local_fs $remote_fs $network postgresql
# Required-Stop:        $local_fs $remote_fs $network postgresql
# Default-Start:        2 3 4 5
# Default-Stop:         0 1 6
# Short-Description:    Zabbix server daemon
### END INIT INFO

NAME=zabbix_agentd
DAEMON=/opt/zabbix-1.8.6/sbin/${NAME}
DESC="Zabbix agent daemon"
PID=/var/run/zabbix/$NAME.pid

test -f $DAEMON || exit 0

case "$1" in
  start)
        echo "Starting $DESC: $NAME"
        if test ! -d /var/run/zabbix
        then
            mkdir -p /var/run/zabbix
            chown zabbix:zabbix /var/run/zabbix
        fi
        start-stop-daemon --oknodo --start --pidfile $PID \
                --exec $DAEMON
        ;;
  stop)
        echo "Stopping $DESC: $NAME"
        start-stop-daemon --oknodo --stop  --pidfile $PID \
                --exec $DAEMON
        ;;
  restart|force-reload)
        $0 stop
        $0 start
        ;;
  *)
        N=/etc/init.d/$NAME
        echo "Usage: $N {start|stop|restart|force-reload}" >&2
        exit 1
        ;;
esac

exit 0
# end of file

# vi zabbix-server-1.8.6/etc/init.d/zabbix-agent
#!/bin/sh
#
# Zabbix agent start/stop script.
#
# Written by Alexei Vladishev <alexei.vladishev@zabbix.com>.
# Updated by Vitaly Druzhinin <VitalkaDrug@gmail.com>.
#

### BEGIN INIT INFO
# Provides:             zabbix-agent
# Required-Start:       $local_fs $network
# Required-Stop:        $local_fs $network
# Default-Start:        2 3 4 5
# Default-Stop:         0 1 6
# Short-Description:    Zabbix agent daemon
### END INIT INFO

NAME=zabbix_agentd
DAEMON=/opt/zabbix-1.8.6/sbin/${NAME}
DESC="Zabbix agent daemon"
PID=/var/run/zabbix/$NAME.pid

test -f $DAEMON || exit 0

case "$1" in
  start)
        echo "Starting $DESC: $NAME"
        if test ! -d /var/run/zabbix
        then
            mkdir -p /var/run/zabbix
            chown zabbix:zabbix /var/run/zabbix
        fi
        start-stop-daemon --oknodo --start --pidfile $PID \
                --exec $DAEMON
        ;;
  stop)
        echo "Stopping $DESC: $NAME"
        start-stop-daemon --oknodo --stop  --pidfile $PID \
                --exec $DAEMON
        ;;
  restart|force-reload)
        $0 stop
        $0 start
        ;;
  *)
        N=/etc/init.d/$NAME
        echo "Usage: $N {start|stop|restart|force-reload}" >&2
        exit 1
        ;;
esac

exit 0
# end of file

Устанавливаем права доступа

# chmod +x zabbix-server-1.8.6/etc/init.d/zabbix-server
# chmod +x zabbix-server-1.8.6/etc/init.d/zabbix-agent
# chmod 0600 zabbix-server-1.8.6/etc/zabbix/zabbix_server.conf
# chmod 0600 zabbix-server-1.8.6/etc/zabbix/zabbix_agentd.conf

Формируем архив

# cd zabbix-server-1.8.6
# tar czf zabbix-server-1.8.6.tar.gz *

Инсталляция сервера

Копируем на сервер архив, сформированный ранее.

Распаковка архива

# tar zxf zabbix-server-1.8.6.tar.gz -C /

Установка требуемых прав

# chown zabbix:zabbix /var/log/zabbix
# chown zabbix:zabbix /var/run/zabbix

Установка необходимых библиотек и утилит

# apt-get install libiksemel3 libcurl3 libsnmp15 libopenipmi0 fping

Инсталляция сервера СУБД

В качестве СУБД ориентируемся на PostgreSQL

Установка сервера СУБД из пакетов

# apt-get install postgresql

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

Отключаем предупреждения, а то достанут:
# vi /etc/postgresql/8.4/main/postgresql.conf
escape_string_warning = off

Устанавливаем для пользователя zabbix тип авторизации по паролю на базу zabbix. Важно разместить эту строчку выше строчки, описывающей тип авторизации для всех пользователей и всех баз...
# vi /etc/postgresql/8.4/main/pg_hba.conf
# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD
local   zabbix      zabbix                            md5

Перечитываем конфигурацию

# /etc/init.d/postgresql reload

Создание базы данных

# su postgres
$ psql
postgres=# CREATE ROLE zabbix LOGIN;
CREATE ROLE
postgres=# CREATE DATABASE zabbix OWNER zabbix;
CREATE DATABASE
postgres=# \q
$ exit

Установка пароля пользователя БД

# su postgres
$ psql
postgres=# ALTER USER zabbix WITH PASSWORD 'Ghjcntymrbq';
ALTER ROLE
postgres=# \q
$ exit
exit
#

Инициализация базы данных

# su -s /bin/dash zabbix
$ psql
zabbix=> \c zabbix
psql (8.4.8)
You are now connected to database "zabbix".
zabbix=> \i /opt/zabbix-1.8.6/share/doc/create/schema/postgresql.sql
zabbix=> \i /opt/zabbix-1.8.6/share/doc/create/data/data.sql
zabbix=> \i /opt/zabbix-1.8.6/share/doc/create/data/images_pgsql.sql
zabbix=> \q
$ exit
#

Изменения параметров сервера

У каждого сервера мониторинга указывается ряд уникальных параметров в конфигурационных файлах:
  • /etc/zabbix/zabbix_server.conf
    1. Node - 1, 2 и т.д.
    2. DBPassword - ну, какой придумаю для хоста. Пока у всех будет 'Ghjcntymrbq'
  • /etc/zabbix/zabbix_agent.conf
    • Hostname - node1, node2 и т.д.

Инициализация данных кластера

При работе в кластере база данных должна быть соответствующим образом подготовлена. Это выполняется ОДИН раз, перед первым запуском сервера, выполнением команды:
# /opt/zabbix-1.8.6/sbin/zabbix_server -n <nodeid>
Эту команду необходимо запускать на каждом сервере кластера со своим значением NodeId, указанное в конфиге этого сервера.

Добавляем сервисы в автозагрузку

Агент:
# insserv -v zabbix-agent

Сервер:
# insserv -v zabbix-server

Настройка Web-интерфейса

Установка пакетов

# apt-get install libapache2-mod-php5 php5-gd php5-pgsql

vi /etc/php5/apache2/php.ini
max_execution_time = 600
max_input_time = 600
memory_limit = 256M
post_max_size = 32M
upload_max_filesize = 16M
date.timezone = "Etc/UCT"

Тюнинг

Отключаем лишние сервисы

update-rc.d mpt-statusd remove
update-rc.d atd remove
update-rc.d nfs-common remove
update-rc.d portmap remove

Установка почтовой системы

Инсталляция необходимых пакетов

# apt-get install exim4-daemon-light

Установка системных алиасов

В файле /etc/aliases указываем алиас для пользователя root:
root: vitalkadrug@gmail.com

Настройка параметров запуска exim

# vi /etc/defaults/exim4
QUEUEINTERVAL='3m'

Настройка параметров работы exim

# dpkg-reconfigure exim4-config

  • internet site
  • mail name - node2.sysmonitoring.net
  • IP for incoming connections - 127.0.0.1 ; ::1
  • local-domains - debian.dedicated.digitalone.com
  • domains to relay mail for - empty
  • machines to relay mail for - empty
  • keep number of DNS minimal - no
  • delivery method for local mail - mbox in /var/mail
  • splitconfiguration into small files - yes

-- VitalyDruzhinin - 07 Aug 2011
Topic revision: r5 - 2016-05-10, VitalyDruzhinin
 

This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding Foswiki? Send feedback