Обновление Zabbix 5.0 до 5.2

Thank you for reading this post, don't forget to subscribe!

26 октяб­ря 2020 года состо­ял­ся релиз вер­сии 5.2 попу­ляр­ной систе­мы мони­то­рин­га Zabbix

Что нового в Zabbix 5.2?

Все ново­вве­де­ния све­жей вер­сии Zabbix 5.2 вы може­те про­чи­тать в офи­ци­аль­ном рели­зе - https://www.zabbix.com/ru/release_notes. Я сре­ди них выде­лил следующие:

  1. Появил­ся новый тип эле­мен­та дан­ных - script. С его помо­щью мож­но суще­ствен­но рас­ши­рить воз­мож­но­сти мони­то­рин­га. Напри­мер, при наблю­де­нии за мик­ро­сер­ви­са­ми и при­ло­же­ни­я­ми. Отрад­но видеть такие изме­не­ния. Явно вид­но, что Zabbix ста­ра­ет­ся идти в ногу со временем.
  2. Ком­плекс­ные экра­ны пол­но­стью заме­ня­ют­ся даш­бор­да­ми. Их теперь мож­но будет созда­вать в шаб­ло­нах (нако­нец-то). Суще­ству­ю­щие экра­ны будут транс­фор­ми­ро­ва­ны в даш­бор­ды автоматически.
  3. Появи­лись новые функ­ции триг­ге­ров для рабо­ты с исто­ри­че­ски­ми дан­ны­ми. В доку­мен­та­ции еще не вижу подроб­но­стей. На одном из скри­нов видел функ­цию trendavg. Надо ждать обнов­ле­ние доков с подроб­но­стя­ми использования.
  4. Улуч­ши­ли роле­вую модель прав поль­зо­ва­те­лей для гра­ну­ляр­но­го управ­ле­ния пра­ва­ми. Не понял, о чем речь, не раз­би­рал­ся еще. Думаю, про­сто более гиб­ко мож­но настра­и­вать пра­ва на объ­ек­ты и эле­мен­ты мониторинга.
  5. Появи­лись гото­вые шаб­ло­ны для мони­то­рин­га Asterisk, DB Oracle, Ceph, Squid, Php-fpm. Мно­гие косты­ли, кото­рые я горо­дил мно­го лет для мони­то­рин­га всех этих про­грамм, ста­но­вят­ся не акту­аль­ны­ми. Напо­ми­наю, что чуть рань­ше появил­ся шаб­лон для мони­то­рин­га mssql server.
  6. Появи­лась встро­ен­ная под­держ­ка про­то­ко­ла modbus. Я как раз недав­но настра­и­вал подоб­ное. Для это­го тре­бо­ва­лась ком­пи­ля­ция и уста­нов­ка внеш­не­го моду­ля. Теперь все рабо­та­ет из коробки.
  7. В каче­стве стан­дарт­но­го фор­ма­та для шаб­ло­нов ста­но­вит­ся YAML вме­сто XML.
  8. Настрой­ки язы­ка и часо­во­го поя­са вынес­ли нако­нец-то в веб интер­фейс. Их мож­но гло­баль­но ука­зать во вре­мя уста­нов­ки сер­ве­ра или отдель­но в настрой­ках пользователя.
  9. Теперь хосты мож­но созда­вать вооб­ще без ука­за­ния интер­фей­са и адре­са на нем. Рань­ше при­хо­ди­лось ука­зы­вать какой-то несу­ще­ству­ю­щий адрес, если у вас был чисто тех­ни­че­ский хост, напри­мер, с http аген­том, кото­рый сам по себе может соби­рать данные.

Ну и мно­го дру­гих более мел­ких изме­не­ний. Я про­бе­жал­ся гла­за­ми по release_notes и пере­вел то, что пока­за­лось наи­бо­лее инте­рес­ным. Еще нако­нец-то почи­ни­ли баг в Latest Data с отоб­ра­же­ни­ем списков.

В общем, Zabbix не сто­ит на месте, раз­ви­ва­ет­ся. Свою нишу в мони­то­рин­ге удер­жи­ва­ет твердо

Подготовка к обновлению

Важ­ная инфор­ма­ция перед обнов­ле­ни­ем. Вер­сия 5.2 без дли­тель­ной под­держ­ки. Через пол года к ней пере­ста­нут выхо­дить обнов­ле­ния, так что вам обя­за­тель­но при­дет­ся обнов­лять­ся на сле­ду­ю­щую вер­сию. Если для вас не кри­тич­ны ново­вве­де­ния это­го рели­за, про­пус­кай­те его и жди­те новой LTS версии.

Перед обнов­ле­ни­ем, сде­ла­ем на вся­кий слу­чай бэкап базы дан­ных. Для это­го пред­ва­ри­тель­но оста­но­вим сер­вер с агентом.

У меня что-то актив­но писа­лось в базу, поэто­му сер­вер выклю­чал­ся дол­го. Я про­ве­рил лог zabbix-server, что­бы убе­дить­ся в кор­рект­ном выклю­че­нии. Там все нор­маль­но было, сер­вер штат­но завер­шил рабо­ту, допи­сав то, что у него там нако­пи­лось. Так что бэкапим.

zabbix назва­ние базы дан­ных заббикса
-uzabbix ключ -u и даль­ше имя поль­зо­ва­те­ля базы данных
-p'password' ключ -p и даль­ше пароль поль­зо­ва­те­ля бд, если в паро­ле есть спец­сим­во­лы, экра­ни­руй­те их оди­ноч­ны­ми кавычками

На вся­кий слу­чай сохра­ним php скрип­ты админ­ки, что­бы мож­но было опе­ра­тив­но запу­стить ста­рую вер­сию в слу­чае нештат­ной ситу­а­ции. Хотя лич­но я сде­лал сне­пшот вир­ту­ал­ки перед обнов­ле­ни­ем, что­бы отка­тить­ся назад в слу­чае проблем.

Centos 7

Под­клю­ча­ем репо­зи­то­рий вер­сии zabbix 5.0:

Centos 8

Очи­ща­ем и пере­со­зда­ем кэш yum:

Debian 10

Уда­ля­ем пакет теку­ще­го репозитория:

Под­клю­ча­ем новый:

Обнов­ля­ем инфор­ма­цию о репозиториях:

Ubuntu 18

Уда­ля­ем пакет теку­ще­го репозитория:

Под­клю­ча­ем новый:

Обнов­ля­ем инфор­ма­цию о репозиториях:

Ubuntu 20

Уда­ля­ем пакет теку­ще­го репозитория:

Под­клю­ча­ем новый:

Обнов­ля­ем инфор­ма­цию о репозиториях:

Если у вас дру­гие вер­сии систем, то про­стой най­ди­те ссыл­ки паке­тов под свою вер­сию в офи­ци­аль­ном репо­зи­то­рии — https://repo.zabbix.com/zabbix/5.2/ Даль­ней­шее обнов­ле­ние не будет отли­чать­ся от текущего.

К обнов­ле­нию под­го­то­ви­лись, мож­но приступать.

Установка обновления zabbix 5.0 до 5.2

Centos 7, 8

Для нача­ла про­ве­рим спи­сок уста­нов­лен­ных паке­тов zabbix в систе­ме. Их назва­ние может быть раз­ным в зави­си­мо­сти от исполь­зу­е­мых репо­зи­то­ри­ев. К при­ме­ру, в centos 7 у паке­тов может быть допол­не­ние в виде scl к назва­нию пакета.

Centos 7:

Centos 8:

Уста­нав­ли­ва­ем обнов­ле­ние zabbix на сер­вер Centos 8, выби­рая уста­нов­лен­ные у вас пакеты:

Для centos 7 будет такой список:

Обра­щаю вни­ма­ние, что на момент напи­са­ния дан­ной ста­тья, паке­тов 5.2 для Centos 7 в репо­зи­то­ри­ях нет. В офи­ци­аль­ных инструк­ци­ях их тоже нет и не понят­но, будут ли. Как толь­ко появят­ся, я допол­ню статью.

После завер­ше­ния обнов­ле­ния, запус­ка­ем zabbix-server.

Про­ве­ря­ем лог сер­ве­ра. Необ­хо­ди­мо дождать­ся обнов­ле­ния базы дан­ных. Важ­но не тро­гать в этот момент сер­вер, не пре­ры­вать обнов­ле­ние, не пытать­ся его пере­за­пу­стить. Если база боль­шая, обнов­ле­ние может длить­ся очень дол­го. Реко­мен­дую сна­ча­ла где-то про­те­сти­ро­вать этот про­цесс, преж­де чем обнов­лять прод.

# tail -f /var/log/zabbix/zabbix_server.log

В кон­це долж­ны полу­чить сообщение:

Есть нену­ле­вой шанс, что будет какая-то ошиб­ка с базой. Чаще все­го воз­ни­ка­ют про­бле­мы с какой-то нестан­дарт­ной запи­сью в таб­ли­це. Туда может попасть какой-то необыч­ный сим­вол, или с коди­ров­кой про­бле­мы. В этих слу­ча­ях уда­ляй­те про­блем­ные запи­си, меняй­те коди­ров­ку базы zabbix.  ниже описание:

Ошибка в Zabbix - Неподдерживаемая кодовая страница

Неко­то­рое вре­мя назад столк­нул­ся с ошиб­кой в web интер­фей­се Zabbix после оче­ред­но­го обнов­ле­ния сер­ве­ра. Текст ошиб­ки в веб интер­фей­се - Непод­дер­жи­ва­е­мая кодо­вая стра­ни­ца или тип срав­не­ния для таб­лиц. То же самое было на англий­ском язы­ке в логе - character set name or collation name that is not supported by Zabbix found in 379 column(s) of database "zabbix", only character set "utf8" and collation "utf8_bin" should be used in database.

Выгля­де­ла ошиб­ка вот так.

В прин­ци­пе, по тек­сту ошиб­ки все понят­но. Таб­ли­цы в базе дан­ных поче­му-то име­ют не ту коди­ров­ку, кото­рая нуж­на. Рабо­та­ет при этом все нор­маль­но. Опе­ра­ци­он­ная систе­ма - Centos 8.
Стал решать про­бле­му в лоб. Взял и изме­нил коди­ров­ку у всех таб­лиц в базе дан­ных Zabbix. На деле это ока­за­лось не такой про­стой зада­чей, как виде­лось изна­чаль­но. В ито­ге посту­пил сле­ду­ю­щим обра­зом. Вво­дим в кон­со­ли Mysql сле­ду­ю­щую команду:

Рабо­та этой коман­ды сфор­ми­ру­ет на выхо­де набор из команд для пере­ко­ди­ров­ки каж­дой таб­ли­цы в отдель­но­сти. Их нуж­но все запу­стить. Если делать все через phpmyadmin, то не воз­ни­ка­ет про­блем. Все коман­ды копи­ру­ют­ся разом и испол­ня­ют­ся. Если буде­те делать через кон­соль сер­ве­ра, то при­дет­ся как-то обра­ба­ты­вать вывод, что­бы подать его потом на вход. Надо будет от лиш­них сим­во­лов очищать.

Не забудь­те сде­лать бэкап базы дан­ных перед тем, как нач­не­те с ней что-то делать.

 

После обнов­ле­ния пере­хо­ди­те в web интер­фейс и про­ве­ряй­те вер­сию Zabbix. Долж­на быть 5.2.

На этом обнов­ле­ния Zabbix до 5.2 на Centos завершено.

Debian / Ubuntu

Уста­нав­ли­ва­ем само обнов­ле­ние zabbix на сер­вер с Debian или Ubuntu сле­ду­ю­щей командой:

# apt upgrade zabbix-agent zabbix-frontend-php zabbix-nginx-conf zabbix-server-mysql

После завер­ше­ния обнов­ле­ния, запус­ка­ем сервер:

В момент запус­ка про­изой­дет обнов­ле­ние базы дан­ных. Для малень­кой базы (1-2 гб) это не зай­мет мно­го вре­ме­ни. Вы може­те даже не заме­тить про­цес­са. Если база боль­ше, то надо подо­ждать, пока не закон­чит­ся обнов­ле­ние. Сле­дить за ним мож­но с помо­щью про­смот­ра лог фай­ла zabbix сервера.

После завер­ше­ния обнов­ле­ния базы, сер­вер запу­стит­ся. После это­го мож­но запу­стить и агент.

В логах аген­та и сер­ве­ра мож­но посмот­реть вер­сию запу­щен­ных сервисов.

Теперь мож­но идти в веб интер­фейс и смот­реть на обнов­лен­ную вер­сию zabbix server. Перед этим почи­сти­те кэш бра­у­зе­ра и уда­ли­те куки от стра­ни­цы заб­бик­са. Если это­го не сде­лать, то могут быть про­бле­мы и ошиб­ки, с чем я не раз стал­ки­вал­ся. Если у вас в каче­стве веб сер­ве­ра исполь­зу­ет­ся nginx, не забудь­те поме­нять вла­дель­ца дирек­то­рии /etc/zabbix/web на nginx, в том слу­чае, если веб сер­вер рабо­та­ет от него. После обнов­ле­ния он будет при­над­ле­жать apache, а web интер­фейс не заработает.

Теперь може­те лице­зреть обнов­лен­ную вер­сию web интер­фей­са в браузере.

Напо­ми­наю, что с обнов­ле­ни­ем 5.2 появи­лись новые шаб­ло­ны. Они авто­ма­ти­че­ски не появят­ся у вас на сер­ве­ре. Их нуж­но будет ска­чать и импор­ти­ро­вать вруч­ную из репо­зи­то­рия - https://github.com/zabbix/zabbix/tree/master/templates. Это же каса­ет­ся и спо­со­бов опо­ве­ще­ния, кото­рый мно­го доба­ви­лось в 5-й вер­сии. Если не обно­ви­ли их вруч­ную при пере­хо­де на 5-ю вет­ку, то так же може­те забрать их из репы и импор­ти­ро­вать к себе на сервер