Pull to refresh

Установка Zabbix 2.4 на RedHat Openshift

Reading time5 min
Views11K
Недавно мне потребовался собственный «облачный» сервер мониторинга бюджетом в 0 рублей. В качестве решения был выбран zabbix на платформе openshift. Данный вариант подходит для резервного базового мониторинга или мониторинга небольшого портала с помошью web-scenarios и кастомных скриптов через UserParameter.

Решил поделиться данным экспериментом с сообществом, в том числе с целью получить конструктивную критику.

Первым делом, естественно, нужно зарегистрироваться на openshift. Для работы zabbix потребуется application с набором картриджей mysql и crontab. Выглядит это примерно следующим образом:



Тут же можно взять строку для соединения с сервером openshift, нажав на «Want to log in your application?». Надо разместить в хранилище публичных ключей openshift свой публичный ssh-ключ.

Скачать последнюю версию zabbix можно с официального сайта. На сервере openshift создаём каталог для сборки исполняемых файлов zabbix, заливаем туда исходники, распаковываем и собираем:

]\>mkdir -p /tmp/BUILD ; cd  /tmp/BUILD ; wget http://downloads.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/2.4.6/zabbix-2.4.6.tar.gz ; tar xf zabbix-2.4.6.tar.gz ; cd zabbix-2.4.6 ; >  mkdir /var/lib/openshift/$OPENSHIFT_APP_UUID/app-root/data/zabbix
]\>./configure --enable-server --enable-java  --with-mysql --with-libcurl --enable-agent --with-ssh2 --prefix=/var/lib/openshift/$OPENSHIFT_APP_UUID/app-root/data/zabbix
]\> make
]\> make install 

Настраиваем сервер и агент для работы в среде openshift. Тут надо будет в конфигурационном файле заменить $OPENSHIFT_APP_UUID и $OPENSHIFT_PHP_IP на соответствующий приложению:
]\> export  | grep OPENSHIFT_PHP_IP
declare -x OPENSHIFT_PHP_IP="127.13.151.129"
]\> export | grep OPENSHIFT_APP_UUID
declare -x OPENSHIFT_APP_UUID="55e9bc400c1e66a589000029"
]\>vi /var/lib/openshift/$OPENSHIFT_APP_UUID/app-root/data/zabbix/etc/zabbix_server.conf
ListenIP=$OPENSHIFT_PHP_IP
ListenPort=30051
LogFile=/tmp/zabbix_server.log
LogFileSize=5
DebugLevel=3
PidFile=/tmp/zabbix_server.pid
DBHost=localhost
DBName=zabbix
#DBSchema=zabbix
DBUser=zabbix
DBPassword=<ПАРОЛЬ>
DBSocket=/var/lib/openshift/$OPENSHIFT_APP_UUID/mysql/socket/mysql.sock

]\>vi /var/lib/openshift/$OPENSHIFT_APP_UUID/app-root/data/zabbix/etc/zabbix_agentd.conf
PidFile=/tmp/zabbix_agentd.pid
LogFile=/tmp/zabbix_agentd.log
LogFileSize=5
DebugLevel=3
Server=127.13.151.129
ServerActive=127.13.151.129:30051
ListenPort=30050
ListenIP=127.13.151.129
StartAgents=3
Hostname=Zabbix server

Запускаем для проверки:

/var/lib/openshift/$OPENSHIFT_APP_UUID/app-root/data/zabbix/sbin/zabbix_server -c /var/lib/openshift/$OPENSHIFT_APP_UUID/app-root/data/zabbix/etc/zabbix_server.conf
 /var/lib/openshift/$OPENSHIFT_APP_UUID/app-root/data/zabbix/sbin/zabbix_agentd -c  /var/lib/openshift/$OPENSHIFT_APP_UUID/app-root/data/zabbix/etc/zabbix_agentd.conf

Смотрим в логи:

[zabbix-chinacoolhacker.rhcloud.com zabbix]\> tail -3 /tmp/zabbix_server.log
 82320:20150904:153339.334 server #24 started [escalator #1]
 82321:20150904:153339.334 server #25 started [proxy poller #1]
 82323:20150904:153339.335 server #26 started [self-monitoring #1]
 
 [zabbix-chinacoolhacker.rhcloud.com zabbix]\> tail -2 /tmp/zabbix_agentd.log
111422:20150904:154248.644 agent #4 started [listener #3]
111423:20150904:154248.644 agent #5 started [active checks #1]

Исполняемый код работает, можно переходить к фронт-энду.

Тут я решил воспользоваться встроенным функционалом openshift — деплой через git. Клонировал себе на локалхост «болванку» сайта:

% git clone ssh://55e9bc400c1e66a589000029@zabbix-chinacoolhacker.rhcloud.com/~/git/zabbix.git/

Существует 2 варианта настройки фронт-энда zabbix- с помощью правки конфига и через удобный gui. Оба варианта рабочие, но при рестарте рискуем потерять изменения внесённые помимо гита — поэтому я делаю через конфиг, это не сложно. Скопировал содержимое фронт-энда из архива zabbix. Удаляю setup.php чтобы злоумышленники не смогли внести изменения в мою инсталляцию и правлю конфиг под свои нужды:

c@pentahon:~/ZABBIX/zabbix % rm -f setup.php
c@pentahon:~/ZABBIX/zabbix % cd conf
c@pentahon:~/ZABBIX/zabbix/conf % mv zabbix.conf.php.example zabbix.conf.php
c@pentahon:~/ZABBIX/zabbix/conf % vi zabbix.conf.php

// Zabbix GUI configuration file.
global $DB;

$DB["TYPE"]                             = 'MYSQL';
$DB["SERVER"]                   = 'localhost';
$DB["PORT"]                             = '0';
$DB["DATABASE"]                 = 'zabbix';
$DB["USER"]                             = 'zabbix';
$DB["PASSWORD"]                 = 'oDWp7akWrxWiMAIRCoYJ';
// Schema name. Used for IBM DB2 and PostgreSQL.
$DB["SCHEMA"]                   = '';

$ZBX_SERVER                             = '127.13.151.129';
$ZBX_SERVER_PORT                = '30051';
$ZBX_SERVER_NAME                = 'Overseer';

$IMAGE_FORMAT_DEFAULT   = IMAGE_FORMAT_PNG;
?>

Создаём .htaccess в корне сайта:

c@pentahon:~/ZABBIX/zabbix/conf % cd ..
c@pentahon:~/ZABBIX/zabbix % vi .htaccess

php_value upload_max_filesize 20M
php_value date.timezone Europe/Moscow
php_value post_max_size 20M
php_value max_execution_time 300
php_value max_input_time 300
php_value max_input_time 300
php_value mysql.default_socket "/var/lib/stickshift/$OPENSHIFT_APP_UUID/mysql-5.1/socket/mysql.sock"

Все в гит!

git add *
git add .htaccess
git commit -m "zabb"
git push

После удачного пуша можно заходить в веб-интерфейс (логин\пароль — admin\zabbix, не забудьте его сменить!) и настраивать мониторинг:



Чтобы заработал агент и начали собираться метрики необходимо изменить настройки ip и порта:



Теперь надо добавить несколько задач в крон — для рестарта приложений сервера и агента в случае их падения. Crontab расположен в /var/lib/openshift/55e9bc400c1e66a589000029/app-root/runtime/repo/.openshift/cron. Создаём файлы:

mkdir /tmp/status
]\> vi minutely/zabbixwatchog.sh
#!/bin/bash
### config
pidof_prog="/sbin/pidof"
###
zabbix_agentd_prog=/var/lib/openshift/$OPENSHIFT_APP_UUID/app-root/data/zabbix/sbin/zabbix_agentd
zabbix_agentd_conf=/var/lib/openshift/$OPENSHIFT_APP_UUID/app-root/data/zabbix/etc/zabbix_agentd.conf
zabbix_server_prog=/var/lib/openshift/$OPENSHIFT_APP_UUID/app-root/data/zabbix/sbin/zabbix_server
zabbix_server_conf=/var/lib/openshift/$OPENSHIFT_APP_UUID/app-root/data/zabbix/etc/zabbix_server.conf
###
agentstatlog=/tmp/status/agentstat.log
serverstatlog=/tmp/status/serverstat.log
###
### server lifekeeper ###
serverststat=`$pidof_prog $zabbix_server_prog`
if [ "$serverststat" ]
 then
    echo "`date` : server pids: $serverststat" >> $serverstatlog;
 else
    echo "restarting server at `date`"  >> $serverstatlog;
    $zabbix_server_prog -c $zabbix_server_conf;
    sleep 3
    echo "`date` SERVER started with pids: `$pidof_prog $zabbix_server_prog` " >> $serverstatlog;
fi

### agent lifekeeper ###
agentstat=`$pidof_prog $zabbix_agentd_prog`
if [ "$agentstat" ]
 then
    echo "`date` : agent pids: $agentstat" >> $agentstatlog;
 else
    echo "restarting agent at `date`"  >> $agentstatlog;
    $zabbix_agentd_prog -c $zabbix_agentd_conf;
    sleep 3
    echo "`date` agent started with pids: `$pidof_prog $zabbix_agentd_prog` " >> $agentstatlog;
fi
#
]\> vi daily/zabbix.sh
#!/bin/bash
cp /tmp/status/agentstat.log /tmp/status/agentstat.log.`date +%Y-%m-%d` && echo '' > /tmp/status/agentstat.log
cp /tmp/status/serverstat.log /tmp/status/serverstat.log.`date +%Y-%m-%d` && echo '' > /tmp/status/serverstat.log
find /tmp/status/ -mtime +7 -exec rm {} \;

Теперь в случае отсутствия в системе процессов zabbix они автоматически запустятся по крону.

P.S.
Данная инсталляция хорошо подходит для web-scenarios и кастомных проверок на основе UserParamater, запускаемых с агента, непосредственно установленного на сервер OpenShift.
Как правильно заметил Disen, по соображениям безопасности не рекомендуется выставлять порты zabbix-agent своих серверов в интернет!
Tags:
Hubs:
Total votes 10: ↑8 and ↓2+6
Comments10

Articles