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

Примеры из жизни как развернуть и настроить систему мониторинга zabbix
Ответить
RomA
Сообщения: 358
Зарегистрирован: 05 авг 2008, 14:53
Контактная информация:

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

Сообщение RomA »

MAC OS X
Клиента я ставил через утилиту port - тут проблем не возникло - клиент успешно поставился, а вот дальше пришлось гуглить, о чём, собственно, и запись.

Настройка:
Конфиг находится тут /opt/local/etc/zabbix

Автозапуск:
Файлик автозапуска обнаружился тут /opt/local/etc/LaunchDaemons/org.macports.zabbix2-agentd и назывался org.macports.zabbix2-agentd.plist ссылка на него должна лежать тут /Library/LaunchDaemons - это область, из которой программа запускается в качестве демона при загрузке системы.
Естественно совсем не обязательно перегружаться и можно запустить заббикс из командной строки

Код: Выделить всё

# launchctl load -w /Library/LaunchDaemons/org.macports.zabbix2-agentd.plist
FreeNAS
Вот тут всё сложнее - у меня стоит 9.2-RELEASE-p9 и на ftp фри только 2.0 заббикс для этой версии, а сервер у меня уже 2.2.5 - поиском удалось найти собранный дистрибутив 2.2.2, что в принципе может и устроить, итак - доверимся инструкции на сайте - скачиваем дистрибутив и ложим на сетевую шару фринаса
Переходим в директорию и распаковываем

Код: Выделить всё

tar -xzf FreeNAS_Zabbix_Agent_2_2_2.tar.gz
Теперь надо включить запись на корневой раздел FreeNAS, ибо выключино сое по умолчанию

Код: Выделить всё

mount -uw /
Копируем файлы из дистрибутива в нашу систему

Код: Выделить всё

# cp ./usr/local/sbin/zabbix_agentd /usr/local/sbin/
дальше отклонюсь от манула, ибо хотелось воссоздать заббикс как он работает на любой другой фре, дабы не искать потом отличия. К сожалению файл /etc/rc.conf перезаливается при старте системы, потому данные надо добавить в тот файл, с которого он перезаливается - в /conf/base/etc/rc.conf добавляем сюда строку автозапуска

Код: Выделить всё

#ZABBIX
zabbix_agentd_enable="YES"
После перезагрузки эта строка окажется в /etc/rc.conf
Теперь надо прописать скрипт запуска и очередное сожаление - директория /usr/local/etc/rc.d для этого опять же не подходит, потому скрипт разместим недалеко от конфига

Код: Выделить всё

[roman@freenas] /# cd /conf/base/etc/rc.d/
[roman@freenas] /conf/base/etc/rc.d# touch zabbix_agentd
[roman@freenas] /conf/base/etc/rc.d# chmod +x zabbix_agentd
[roman@freenas] /conf/base/etc/rc.d# ee zabbix_agentd
Содержание файла я взял с другой машины, только поменял пусть до конфига, ибо помним, стандартный нам не подходит и добавил флаг с конфигом - таким образом у меня получилось следующее содержание
#!/bin/sh

# PROVIDE: zabbix_agentd
# REQUIRE: DAEMON
# KEYWORD: shutdown
#
# Add the following lines to /etc/rc.conf.local or /etc/rc.conf to
# enable zabbix_agentd:
#
# zabbix_agentd_enable (bool): Set to NO by default. Set it to YES to
# enable zabbix_agentd.
#

. /etc/rc.subr

name="zabbix_agentd"
rcvar=zabbix_agentd_enable

command="/usr/local/sbin/${name}"
flags="-c /etc/zabbix22/zabbix_agentd.conf"
required_files="/etc/zabbix22/${name}.conf"

load_rc_config $name

: ${zabbix_agentd_enable="NO"}

run_rc_command "$1"
Теперь займёмся создание самого конфига

Код: Выделить всё

[roman@freenas] /conf/base/etc/rc.d# cd /conf/base/etc/
[roman@freenas] /conf/base/etc/rc.d# mkdir zabbix22
[roman@freenas] /conf/base/etc# cd zabbix22
[roman@freenas] /conf/base/etc/zabbix22# mkdir zabbix_agentd.conf.d
[roman@freenas] /conf/base/etc/zabbix22# touch zabbix_agentd.conf
Файл конфига я взял с другой системы, но в общем и целом выглядит он так
PidFile=/var/run/zabbix_agentd.pid
LogFile=/var/log/zabbix_agentd.log
Server=192.168.10.6
ServerActive=192.168.10.6
Hostname=freenas.home.cz6.ru
AllowRoot=1
Include=/etc/zabbix22/zabbix_agentd.conf.d/
Ну вот и всё - перезагружаемся и видим что всё работает. Если не работает можно посмотреть логи, а так же попробовать запустить руками и увидеть ошибкеу в живую

Windows
Скачиваем дистрибутив агента с официального сайта и распаковываем
Затем создаём папку где будет храниться всё это дело, например c:\\zabbix
В которую копируем исполняемы файлы для нашей системы - 32-х или 64-х разрядные. Сюда же копируем и конфигурационный файл. По сути у меня он содержит следующие строки
DebugLevel=0
LogFile=C:\zabbix\zabbix_agentd.log
EnableRemoteCommands=1
Server=192.168.10.6
Hostname=gps.home.cz6.ru

Теперь надо как-то это дело запускать - давайте делать это как службу.

Код: Выделить всё

zabbix_agentd.exe -c c:\\zabbix\zabbix_agentd.win.conf -i
Всё. Программой можно управлять, запуская и останавливая через сервисы или с командной строки zabbix_agentd.exe -s
Kitsum
Сообщения: 15
Зарегистрирован: 01 окт 2014, 13:03
Откуда: далеко из-за мкада

Zabbix Agent Installer (Windows)

Сообщение Kitsum »

Доброе время суток.
Разговор пойдет на тему автоматизации установки Zabbix Agent на ОС Windows.

Основная задача, это написать небольшую программу которая будет заниматься основной рутиной:
  • - Работать в тихом режиме, ничего не спрашивать, не жаловаться и не привлекать внимание человека работающего на машине куда производится установка
    - Выбирать необходимый дистрибутив в зависимости от разрядности операционной системы (х86 или x64)
    - Создавать файл конфигурации zabbix_agentd.conf с необходимым содержимым по шаблону
    - Иметь возможность выбора каталога установки в автоматическом ("Program Files" или "Program Files (x86)") и ручном режиме ("C:\zabbix_agent", "D:\zab\agent" и т.п как душе угодно)
    - Уметь останавливать\удалять службу "Zabbix Agent" перед установкой, если таковая имеется и находится в работе
    - Обновлять текущие файлы, если установка идет повторно в тот же каталок (обновление версии агента)
    - Останавливать работу службы в "Автоматический" режим и запускать её
    - Вести лог при "крахе" во время установки
Данная программа у меня используется уже длительное время, но после общения с Виталием (http://forum.cz6.ru/memberlist.php?mode ... ofile&u=89) принято решение переписать проект под общие нужды т.к ранее вся конфигурационная информация хранилась в теле программы.
Для реализации понадобился уже знакомый мне велосипед на PHP (DevelStudio). Программа состоит из набора функций:

Код: Выделить всё

<?PHP
function error($message) {
    # Лог файл инсталлятора будет создан в корне системного диска
    file_put_contents($_ENV['USERPROFILE'].'\\zabbix_installer.log', date("d.m.Y H:i", time()).' ## '.$message."\r\n", FILE_APPEND);
    APP::close();
}
function read_config($file) {
    # Нет конфига
    if(!file_exists($file)) return false;
    # Формируем массив с настройками
    ini::open($file);
    ini::readSections($section);
    foreach($section as $id => $sec) {
        ini::readKeys($sec, $keys);
        foreach($keys as $id => $key) {
            ini::read($sec, $key, $settings[strtolower($sec)][strtolower($key)]);
        }
    }
    return $settings;
}
function checkService($name, $act = false) {
    $cimv2 = new COM('winmgmts:{impersonationLevel=impersonate}//./root/cimv2');
    $info = $cimv2->execQuery("SELECT * FROM Win32_Service WHERE Name='".$name."'");
    if($info->Count) {
        foreach($info as $obj) {
            if($act == 'delete') {
                if($obj->Started) $obj->StopService();
                $obj->Delete();
            }
            else {
                if($obj->StartMode != 'Auto') {
                    $act = $obj->ChangeStartMode("Automatic");
                };
                if(!$obj->Started) $obj->StartService();
            }
        }
        return true;
    }
    return false;
}
function _constructor() {
    err_no();
    # Читаем конфиг
    if(($settings = read_config('./install.ini')) == false) exit(error('file not found install.ini'));
    $install = &$settings['install']; # ссылка для повышения читаемости
    # Поиск конфигурационного файла
    if(!file_exists('./'.$install['config'])) error('configuration file zabbix agent not found '.$install['config']);
    # Определение архитектуры системы
    $architecture = ($_ENV['PROCESSOR_ARCHITEW6432'] == 'AMD64' or $_ENV['PROCESSOR_ARCHITECTURE'] == 'AMD64') ? 'win64' : 'win32';
    # Каталоги (корневой и bin)
    $dirRoot = ($install['dir'] == 'auto')? $_ENV['ProgramFiles'].'\\zabbix_agent' : $install['dir'];
    $dirFull = $dirRoot.'\\bin\\'.$architecture;
    # Удаляем сервис если он существует, это необходимо т.к может быть обновление агента, а не его установка
    checkService($install['service'], 'delete');
    # Копирование необходимых исполняемых файлов x86 или x64
    if(!mkdir($dirFull, 0700, true)) {
        if(!is_dir($dirFull)) error('Can not create directory');
        if(!file_put_contents($dirFull.'\\zabbix_installer.test', 'test')) error('insufficient privileges');
        unlink($dirFull.'\\zabbix_installer.test');
    }
    dir_copy(DOC_ROOT."bin\\".$architecture, $dirFull);
    # Читаем исходный конфиг
    if(($config = file_get_contents('./'.$install['config'])) == false) {
        error('can not read configuration file '.$install['config']);
    }
    # Преобразовываем макросы в их синонимы
    $macros = array(
        'key' => array('{DIR.AGENT}', '{HOST.NAME}'),
        'val' => array($dirRoot, $_ENV['COMPUTERNAME'])
    );
    # Создаем файл конфигурации в установочном каталоге
    if(!file_put_contents($dirRoot.'\\'.$install['config'], str_replace($macros['key'], $macros['val'], $config))) {
        error('can not record to a file '.$dirRoot.'\\'.$install['config']);
    }
    # Устанавливаем агента через PowerShell
    shell_exec('"'.$dirFull.'\\zabbix_agentd.exe" --config "'.$dirRoot.'\\'.$install['config'].'" --install');
    shell_exec('"'.$dirFull.'\\zabbix_agentd.exe" --config "'.$dirRoot.'\\'.$install['config'].'" --start');
    # На всякий случай проверяем, что сервис запускается автоматом и в случае необходимости повторно его запускаем
    checkService($install['service']);
    # Закрываем программу
    APP::close();
}
?>
В корне программы должны находиться следующие фалы и каталоги:
  • - Каталог bin с подкаталогами win32 и win64 (и их содержимым) поставляемые разработчиком Zabbix
    - Файл install.ini с конфигурацией для инсталлятора
    - Файл zabbix_agentd.conf с шаблоном конфигурации (файл может иметь и иное имя см. install.ini)
P1.png
P1.png (3.87 КБ) 6469 просмотров
Если с каталогом bin все ясно и не требует пояснений, то два других файла нуждаются в комментарии.

install.ini

Код: Выделить всё

[install]
dir=auto
service='Zabbix Agent'
config='zabbix_agentd.conf'
В секции install имеются следующие поля:
  • dir - указывает на путь к каталогу куда требуется произвести установку. Если выставлен параметр "auto", то установка будет произведена в "Program Files" или "Program Files (x86)". Если Вы решите использовать свой уникальный каталог (что не рекомендуется), то адрес должен быть указан в соответствие со стандартами Windows ("C:\zabbix_agent", "D:\zab\agent" и т.п), без обратного слэша в конце (хотя программа может съесть адрес в UNIX формате, проверяете на свой страх и риск).
    service - имя службы используемое Zabbiz агентом, по умолчанию "Zabbix Agent". Но учитывая то, что в будущих версиях самого агента оно может измениться, мы вынесли его в конфигурационный файл (рекомендуется не изменять это поле).
    config - имя конфигурационного файла самого агента, в нем содержится шаблон который будет использован при создании файла конфигурации в указанном для установке каталоге. По умолчанию и впредь в тексте мы будем использовать именно этот файл.
zabbix_agentd.conf
Файл с шаблоном конфигурации агента позволяет использовать два макроса.
  • - {DIR.AGENT} путь до каталога куда будет установлен агент
    - {HOST.NAME} имя компьютера на котором производится установка

Код: Выделить всё

## Пример шаблона

Server=192.168.0.100
Hostname={HOST.NAME}
ListenPort=10050
LogFile={DIR.AGENT}\zabbix_agentd.log
LogFileSize=10
HostMetadataItem=system.uname

## А вот так это будет выглядеть в конечном виде после установки

Server=192.168.0.100
Hostname=Kitsum
ListenPort=10050
LogFile=C:\Program Files (x86)\zabbix_agent\zabbix_agentd.log
LogFileSize=10
HostMetadataItem=system.uname
Если во время работы программы, что-то пойдет не так, то вся (а на самом деле вовсе и не вся, ведь у нас велосипед) информация будет сохранена в корне домашнего каталога пользователя Windows (под которым идет установка) в файле zabbix_installer.log
Вот пример лога:

Код: Выделить всё

09.10.2014 14:27 ## Can not create directory
09.10.2014 14:27 ## insufficient privileges
09.10.2014 14:27 ## can not record to a file C:\Program Files (x86)\zabbix_agent\zabbix_agentd.conf
ВАЖНО! Как видно из лога, программа была запущена под ограниченной учетной записью и соответственно у неё не хватает привилегий для установки. На этом стоит заострить внимание т.к просто изменить путь с системного каталога на любой доступный не достаточно, ведь программе необходимо работать со службами Windows (а у нормального администратора это позволено не всем). Работа со службами реализована через WMI (https://ru.wikipedia.org/wiki/WMI)
Если установка производится в ручную, то делаем это старым дедовским способом отточенным песком сыплющимся с этого же самого деда.
P2.png
P2.png (7.14 КБ) 6469 просмотров
У меня используется автоматическая установка с использованием kaspersky endpoint security и Kaspersky Security Center.
В Security Center на необходимых мне подгруппах создана задача "Установка Zabbix Agent", стартующая автоматически каждый день в час X. Запуск происходит от привилегированного пользователя. Таким образом при появлении нового хоста установка будет произведена не зависимо от того, присутствую я на рабочем месте или нет. Аналогичная ситуация и при выходе новой версии агента. Один раз меняется содержимое каталога bin и если необходимо редактируется zabbix_agentd.conf
И вся эта кухня продолжает работать в автоматическом режиме.
В самом Zabbix в "настройки"-> "обнаружение" созданы соответствующие правила для каждой подсети и каждые N часов происходит поиск и последующее добавление новых хостов в соответствующие группы.

Другой вариант, это использовать пакет PsTools от Microsoft (http://technet.microsoft.com/ru-ru/sysi ... 96649.aspx), но это уже изучаем самостоятельно.

Готовый к использованию пакет с zabbix agent v2.2.5 на борту: https://www.dropbox.com/s/vy326mbmwwvmr ... r.zip?dl=0
Исходник в формате DVS во вложении к посту.

Всем спасибо, все свободны.
Вложения
zabbix_agent_installer.zip
Исходник
(3.95 КБ) 511 скачиваний
Ответить