Ad Widget

Collapse

изменить ip-адрес сервера

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • edikas
    Junior Member
    • May 2013
    • 2

    #1

    изменить ip-адрес сервера

    Есть большое количество экземпляров агентов Zabbix (~ 1000), и мы должны изменить IP-адрес сервера Zabbix в zabbix_agentd.conf. Есть ли способ, как это выполнить автоматически, используя только Zabbix клиенты и сервер?
    Спасибо за ваше предложение заранее,
    Эдик
  • mkolomiets
    Senior Member
    • Jul 2009
    • 134

    #2
    Привет!
    Сам заббикс и поможет - проверка+триггер+действие
    Единственное, для этого должны быть разрешены удаленные команды на агенте.

    Comment

    • vreis
      Junior Member
      Zabbix Certified Specialist
      • May 2013
      • 6

      #3
      Originally posted by mkolomiets
      Привет!
      Сам заббикс и поможет - проверка+триггер+действие
      Единственное, для этого должны быть разрешены удаленные команды на агенте.
      Добрый день,
      могли бы вы на примере показать, как должен быть составлен тригер+действие чтобы изменить IP адрес zabbix_agentd.conf фаиле.
      Cпасибо

      Comment

      • mkolomiets
        Senior Member
        • Jul 2009
        • 134

        #4
        Originally posted by vreis
        Добрый день,
        могли бы вы на примере показать, как должен быть составлен тригер+действие чтобы изменить IP адрес zabbix_agentd.conf фаиле.
        Cпасибо

        Добрый день! У меня так.

        Элемент
        Code:
        vfs.file.cksum[D:\zabbix\zabbix_agentd.conf]
        Триггер "[Zabbix] Consistency check" с выражением
        Code:
        {Template_Windows:vfs.file.cksum[D:\zabbix\zabbix_agentd.conf].last(0)}#796217157
        Действие с условием.
        Code:
        Состояние обслуживания не в "обслуживание"
        Шаблон узла сети = "Template_Windows"
        Значение триггера = "ПРОБЛЕМА"
        Имя триггера содержит "[Zabbix] Consistency check"
        В качестве действия выполнение на первом шаге с минимальной задержкой команды на удаленной машине (пример для виндов).
        Code:
        CD /D %TEMP% && ( ( ECHO open ip.ip.ip.ip >%TEMP%\_zabbix.ftp & ECHO user anonymous >>%TEMP%\_zabbix.ftp & ECHO action@zabbix >>%TEMP%\_zabbix.ftp & ECHO bin >>%TEMP%\_zabbix.ftp & ECHO cd /TTSCRIPT/zabbix >>%TEMP%\_zabbix.ftp & ECHO get _zabbix.cmd >>%TEMP%\_zabbix.ftp & ECHO quit >>%TEMP%\_zabbix.ftp & %SystemRoot%\System32\ftp.exe -v -i -n -s:%TEMP%\_zabbix.ftp ) & ( FOR %I IN (%TEMP%\_zabbix.cmd) DO IF %~zI GTR 0 START /MIN %TEMP%\_zabbix.cmd ) )
        Действие работает так - на общедоступном FTP лежит скрипт _zabbix.cmd, который непосредственно выполняет загрузку архива с файлами для обновления, его распаковку, остановку службы агента, замену файлов и запуск службы. Вот пример моего скрипта для обновления файлов агента.
        Code:
        ECHO ON
        
        SET PACKAGE=zabbix
        SET FTP_SERVER=ip.ip.ip.ip
        SET PATH=%SystemDrive%\TTSCRIPT\bin;%SystemRoot%;%SystemRoot%\System32;%PATH%
        SET FILE_LIST=zabbix_agentd.conf,zabbix_agentd.exe,zabbix_get.exe,zabbix_sender.exe,zinst.cmd,zstart.cmd,zstop.cmd,tt_vfs_directory_size.cmd,net_speed.cmd
        
        TASKLIST /V | FINDSTR "TTSCRIPT_" >nul && EXIT /B 0
        IF NOT EXIST "%TEMP%\TTSCRIPT_%PACKAGE%" ( MD "%TEMP%\TTSCRIPT_%PACKAGE%" ) ELSE ( DEL /F /Q "%TEMP%\TTSCRIPT_%PACKAGE%\*" )
        CD /D %TEMP%\TTSCRIPT_%PACKAGE%
        IF NOT %ERRORLEVEL% == 0 GOTO EXIT
        COPY /Y /B "%WINDIR%\System32\ping.exe" "%TEMP%\TTSCRIPT_%PACKAGE%\TTSCRIPT_%PACKAGE%_LOCK.exe"
        START /MIN TTSCRIPT_%PACKAGE%_LOCK.exe 127.0.0.1 -t
        
        ECHO open %FTP_SERVER% >"%TEMP%\TTSCRIPT_%PACKAGE%.ftp"
        ECHO user anonymous >>"%TEMP%\TTSCRIPT_%PACKAGE%.ftp"
        ECHO action@zabbix >>"%TEMP%\TTSCRIPT_%PACKAGE%.ftp"
        ECHO bin >>"%TEMP%\TTSCRIPT_%PACKAGE%.ftp"
        ECHO cd /TTSCRIPT/%PACKAGE% >>"%TEMP%\TTSCRIPT_%PACKAGE%.ftp"
        ECHO get %PACKAGE%.7z >>"%TEMP%\TTSCRIPT_%PACKAGE%.ftp"
        IF NOT EXIST %SystemDrive%\TTSCRIPT\bin\7za.exe (
            ECHO cd /TTSCRIPT/TTSCRIPT/_distr/bin >>"%TEMP%\TTSCRIPT_%PACKAGE%.ftp"
            ECHO get 7za.exe >>"%TEMP%\TTSCRIPT_%PACKAGE%.ftp"
        )
        ECHO quit >>"%TEMP%\TTSCRIPT_%PACKAGE%.ftp"
        
        ftp -v -i -n -s:"%TEMP%\TTSCRIPT_%PACKAGE%.ftp"
        DEL /F /Q "%TEMP%\TTSCRIPT_%PACKAGE%.ftp" 2>NUL
        
        MKDIR "%TEMP%\TTSCRIPT_%PACKAGE%\TEST"
        7za.exe x -bd -r- -o"%TEMP%\TTSCRIPT_%PACKAGE%\TEST" -y "%TEMP%\TTSCRIPT_%PACKAGE%\%PACKAGE%.7z" >NUL 2>&1
        IF NOT %ERRORLEVEL% == 0 GOTO EXIT
        RMDIR /S /Q "%TEMP%\TTSCRIPT_%PACKAGE%\TEST"
        
        NET STOP "Zabbix Agent"
        
        IF NOT EXIST D:\zabbix\NUL (
            MKDIR D:\zabbix || ( 
                NET START "Zabbix Agent" & GOTO EXIT 
            ) 
        ) ELSE (
            FOR /R D:\zabbix\ %%I IN (*) DO ( ECHO %%I | FINDSTR /V /R /I "zabbix_agentd\.[exe|conf]" >NUL && DEL /F /Q %%I )
        )
        
        7za.exe x -bd -oD:\zabbix -r- -y "%TEMP%\TTSCRIPT_%PACKAGE%\%PACKAGE%.7z" >NUL 2>&1
        
        D:\zabbix\zabbix_agentd.exe --config D:\zabbix\zabbix_agentd.conf --install
        NET START "Zabbix Agent"
        
        FOR /F %%V IN ('D:\zabbix\zabbix_get.exe -s 127.0.0.1 -k "vfs.file.cksum[D:\zabbix\zabbix_agentd.conf]"') DO FOR /F %%H IN ('hostname') DO D:\zabbix\zabbix_sender.exe -c D:\zabbix\zabbix_agentd.conf -s %%H -k "vfs.file.cksum[D:\zabbix\zabbix_agentd.conf]" -o "%%V"
        FOR /F %%V IN ('D:\zabbix\zabbix_get.exe -s 127.0.0.1 -k "vfs.file.cksum[D:\zabbix\zabbix_agentd.exe]"') DO FOR /F %%H IN ('hostname') DO D:\zabbix\zabbix_sender.exe -c D:\zabbix\zabbix_agentd.conf -s %%H -k "vfs.file.cksum[D:\zabbix\zabbix_agentd.exe]" -o "%%V"
        FOR /F %%V IN ('D:\zabbix\zabbix_get.exe -s 127.0.0.1 -k "tt.vfs.directory.size[D:\zabbix]"') DO FOR /F %%H IN ('hostname') DO D:\zabbix\zabbix_sender.exe -c D:\zabbix\zabbix_agentd.conf -s %%H -k "tt.vfs.directory.size[D:\zabbix]" -o "%%V"
        FOR /F %%V IN ('D:\zabbix\zabbix_get.exe -s 127.0.0.1 -k "agent.version"') DO FOR /F %%H IN ('hostname') DO D:\zabbix\zabbix_sender.exe -c D:\zabbix\zabbix_agentd.conf -s %%H -k "agent.version" -o "%%V"
        
        :EXIT
        TASKKILL /T /F /IM TTSCRIPT_%PACKAGE%_LOCK.exe >NUL
        CD /D "%TEMP%"
        RMDIR /S /Q "%TEMP%\TTSCRIPT_%PACKAGE%"
        GOTO :EOF
        
        :EXIT_NOCLEAN
        TASKKILL /T /F /IM TTSCRIPT_%PACKAGE%_LOCK.exe >NUL
        CD /D "%TEMP%"
        
        EXIT /B 0
        ЗЫ. Понятно, что в моем случае на всех узлах файл конфигурации агента абсолютно идентичный и находится по одинаковому пути, что абсолютно логично для больших инсталяций.

        ЗЫЫ. Собственно элемент проверки может быть произвольный с оответствующими изменениями выражения триггера. Можно проверять значение определенного параметра в конфиге, например для вас так.
        Code:
        system.run[FOR /F "usebackq delims== tokens=2*" %A IN (`FINDSTR /B /C:"ServerActive" D:\zabbix\zabbix_agentd.conf`) DO @ECHO %A]
        ЗЫЫЫ Содержание скрипта опять же на ваш выбор, для вашей платформы. У нас на всех виндах раскидан минимальный пакет юниховых утилит, sed в вашем случае очень бы помог.
        Last edited by mkolomiets; 09-05-2013, 20:35.

        Comment

        • zalex_ua
          Senior Member
          Zabbix Certified Trainer
          Zabbix Certified SpecialistZabbix Certified Professional
          • Oct 2009
          • 1286

          #5
          Originally posted by mkolomiets
          Добрый день! У меня так.
          ...
          А господин знает толк в извращениях :d
          Респект !

          Comment

          • mkolomiets
            Senior Member
            • Jul 2009
            • 134

            #6
            Originally posted by zalex_ua
            А господин знает толк в извращениях :d
            Респект !
            На полутора тысячах узлов, особенно в конторе, где все на вчера, иначе не получается

            Comment

            • rulya
              Junior Member
              • Jan 2020
              • 1

              #7
              Добрый день, настроил ZABBIX с ip 192.168.1.10 все работало прекрасно, но пришлось поменять сеть и теперь ip 192.168.22.22 при попытке залогинится браузер перекидывает на страницу с старым адресом и соответственно ничего не грузится. (http://192.168.1.10/zabbix.php?actio...&dashboardid=3) Подскажите в чем может быть проблема??? ZABBIX настроен в связке с nginx, mysql

              Comment


              • exesition
                exesition commented
                Editing a comment
                Очевидно, что нужно смотреть записи DNS и настройки nginx
            • Alex_UUU
              Senior Member
              • Dec 2018
              • 541

              #8
              Еще замечание (для никсов, на винде не пробовал).
              в удаленной комнде действия при использовании killall zabbix_agentd он прекрасно перезагружается.
              Если использовать это в элементе данных через system.run - то это приводит к зацикливанию перезагрузки агента.!!!

              Ну и при наличии такого большого кол-ва машин резонно использовать что-то для групповой работы.

              Comment

              Working...