Zabbix_migration.md

Zabbix_migration.md Хостинг

Today I’ve solved the problem of one server being to slow to handle the growth of my zabbix configuration.
I’m using zabbix-server 2.2.2 with MySQL/Debian backend and around 20 zabbix-agents with Debian installed.

Let’s say old Zabbix server IP is: A. B. C. D and new is: U. X. Y. Z.
The domain name for the instalation will be: http://zbx.newmachine.com

Below you will find all steps to migrate your configuration:

Ensure all agents will accept connections from the new IP
Modify each agent configuration file (in debian: /etc/zabbix/zabbix_agentd.conf) and add new IP

 Server=127.0.0.1,A.B.C.D,U.X.Y.Z 

You can leave the old one for now.

Restart all agents so you can forget about them. Run on all agent server:

 /etc/init.d/zabbix-agent restart 

It’s time to install zabbix on the new machine:

 apt-get install zabbix-server-mysql zabbix-frontend-php 

Do not start the server for now.

Stop zabbix-server on the old machine:

 /etc/init.d/zabbix-server stop 
 mysqldump -u zabbix -p zabbix > /tmp/zabbix_db_dump 

I can take a while — mine was around 1,5GB

 create database zabbix 
 create user 'zabbix'@'localhost' identified by 'PASSWORD';
use zabbix;
grant all privileges on zabbix.* to 'zabbix'@'localhost'; 

Copy database to the new machine using compression:

 scp -C /tmp/zabbix_db_dump Username@U.X.Y.Z:/tmp 

Import zabbix db on the new machine:

 mysql -u zabbix -p zabbix < /tmp/zabbix_db_dump 

Now you can setup DNS and virtual host for the new installation. After that run:

 http://zbx.newmachine.com in your browser  

to check whether all web server requirements for zabbix are fullfilled.

Proceed with zabbix instalation until the end. After that you sould be able to login:

 http://zbx.newmachine.com with your old credentials 

Overwrite zabbix configuration with the old one if you use the same version on both machines
or just setup database password in file (/etc/zabbix/zabbix_agentd.conf):

 DBPassword=PASSWORD 

Switch zabbix-server to on in /etc/default/zabbix-server:

 START=yes 

Start new zabbix server:

 /etc/init.d/zabbix-server start 

Check if everything is running fine 🙂

Extra steps:
If you’re running a smtp relay for zabbix email notifications, don’t forget to adjust your MTA
configuration to relay from IP: U. X. Y. Z
You can now modify agents configuration to stop answering to the old IP
and remove old zabbix setup.

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

закон­чи­лась под­держ­ка Centos 8 и я пере­ез­жаю поти­хонь­ку на Debian. Во-вто­рых, в Centos 7 под­держ­ка Zabbix Server пре­кра­ще­на, начи­ная с вер­сии 5.4. То есть до 5.4 вы не обно­ви­тесь, не пере­ехав на дру­гую систему.

под­держ­ка самой систе­мы 7-й вер­сии будет до 2023 года. По идее, она всё еще акту­аль­но. Но это в тео­рии, на прак­ти­ке есть про­бле­мы. При­чин у коман­ды Zabbix несколько:

  1. Ста­рая вер­сия php 5.4, а надо мини­мум 7.2 для ново­го веб интерфейса.
  2. под­клю­че­ния к базе дан­ных не под­дер­жи­ва­ют­ся в Centos 7.
  3. Ста­рые паке­ты OpenSSL не под­дер­жи­ва­ют 1.3.
Читайте также:  Пошаговое руководство: безопасное изменение пароля администратора WordPress

Все эти про­бле­мы так или ина­че мож­но решить, но ребя­та из Zabbix реши­ли, что оно не сто­ит того. Слиш­ком мно­го хло­пот с этой уже уста­рев­шей систе­мой. И я их пре­крас­но пони­маю, так как сам устал от подоб­ных про­блем со ста­ры­ми пакетами.

В ито­ге для даль­ней­ше­го обнов­ле­ния Zabbix Server нуж­но мигри­ро­вать с Centos 7 на какую-то дру­гую систе­му. Я выбрал в каче­стве такой систе­мы Debian 11.

Пер­вое, что вам нуж­но сде­лать для пере­но­са Zabbix Server — уста­но­вить  точ­но такую же вер­сию
 на новый сер­вер. Если пере­но­си­те Zabbix Server 5.0, то на новый сер­вер уста­нав­ли­ва­е­те тоже 5.0

Вам нуж­но не толь­ко уста­но­вить и под­го­то­вить сам сер­вер, но и пере­не­сти все кон­фи­гу­ра­ци­он­ные фай­лы и скрип­ты со ста­ро­го сер­ве­ра на новый. Мож­но про­сто ско­пи­ро­вать с пере­за­пи­сью дефолт­ных кон­фи­гов. А так же создать базу дан­ных MySQL или PostgreSQL, в зави­си­мо­сти от того, что исполь­зу­е­те, с таким же име­нем, поль­зо­ва­те­лем и паро­лем, как на ста­ром сер­ве­ре. Это не обя­за­тель­но, но так будет удоб­нее. Не при­дёт­ся кон­фиг сер­ве­ра менять.

Когда закон­чи­те, може­те запу­стить Zabbix Server на новом сер­ве­ре и зай­ти в веб интер­фейс. Если вас встре­тит уста­нов­щик, зна­чит всё сде­ла­ли пра­виль­но. Мож­но выпол­нить чистую уста­нов­ку и убе­дить­ся, что всё гото­во, веб интер­фейс рабо­та­ет. В это же вре­мя сове­тую вни­ма­тель­но посмот­реть и пере­не­сти со ста­ро­го сер­ве­ра всё, что может при­го­дить­ся — external scripts, зада­чи cron, настрой­ки sudoers и мно­гое дру­гое, что мог­ло исполь­зо­вать­ся в про­цес­се эксплуатации.

Если вы исполь­зу­е­те рус­ский язык в веб интер­фей­се, то в Debian или Ubuntu не забудь­те доба­вить локаль ru_RU:

# dpkg-reconfigure locales

И далее добавь­те ru_RU. Ста­вить по умол­ча­нию её не обязательно.

Video Lecture

Description

Move Zabbix Server from One Cloud Provider to Another.

In my case, it was Digital Ocean to Hetzner

My Zabbix Server configuration is using Ubuntu 18.04 and MySQL

TODO:

  • Reinstall Zabbix Server Code (server processes and PHP front end code)
  • Database (MySQL, Create a SQL dump file and copy to new server)
  • Custom Scripts (Alertscripts, and CheckSSL script)
  • Repoint the domains A name record to the new IP from the new cloud provider
  • Get a new SSL cert
  • Reinstall Postfix

Reinstall Zabbix Server

Server Processes

   wget https://repo.zabbix.com/zabbix/4.4/ubuntu/pool/main/z/zabbix-release/zabbix-release_4.4-1+bionic_all.deb
dpkg -i zabbix-release_4.4-1+bionic_all.deb
apt update 

Front End PHP

   apt -y install zabbix-server-mysql zabbix-frontend-php zabbix-apache-conf zabbix-agent  

Configs

   sudo nano /etc/zabbix/zabbix_server.conf 

In server config file Set,

Читайте также:  Демистификация файлов Bat TMP: комплексное руководство по эффективной работе с файлами

   sudo nano /etc/zabbix/apache.conf 

In apache config change to your region. I changed Riga
to London
,

   php_value date.timezone Europe/Riga  

Restart and Enable After Reboot

$ systemctl restart zabbix-server zabbix-agent apache2
$ systemctl enable zabbix-server zabbix-agent apache2

Copy Custom Scripts

Copy the secret.psk
, and checkssl.sh
scripts. Give the checkssl.sh
script execute permissions (0755)

   sudo chmod a+x checkssl.sh 

Copy alert scripts sendsms.sh
and slackalert.sh
anb give execute permissions (0755)

   sudo chmod a+x sendsms.sh
sudo chmod a+x slackalert.sh 

Setup and Copy Database

On new server ensure mysql is already installed.

   sudo apt-get install mysql-server 

On old server create a snapshot of the DB.

   mysqldump --quick zabbix gzip > zabbix.gz
mysqladmin -uroot create zabbix
gunzip < zabbix.gz mysql -uroot zabbix 

Copy the file zabbix.gz
to new server

                

Repoint Domain Name

Log onto your domain name provider and update your domain name A name record to the new ip address.

Install SSL Certificate

   sudo apt-get install certbot
sudo apt-get install python-certbot-apache
sudo certbot --apache -d zabbix.seanwasere.com 

Install Postfix

   sudo apt install mailutils
sudo nano /etc/postfix/main.cf 

Change value

   ...
inet_interfaces = loopback-only
inet_protocols = ipv4
... 
   sudo service postfix reload 

Reconfigure the Zabbix Agent which is also running on the new server.

   sudo nano /etc/zabbix/zabbix_agentd.conf 

Since I also use scripts, I need to enable remote commands, and to update the agent to require PSK encryption, and then restart.

   sudo service zabbix-agent restart 

Zabbix_migration.md

In the series “why wouldn’t I put this out public instead of just saving it to my own notes”
: Moving the Zabbix database to a new database server.

  • Old server: Debian Linux 9, running MariaDB 10.1.48
  • New server: Debian Linux 11, running MariaDB 10.5.12 (from Debian packaging)
  • Zabbix (5.0.19 LTS) frontend is running on Apache

Step 1: Dumping the current database

 # mysqldump --single-transaction zabbix | gzip > /mnt/zbx-dump.sql.gz 

Copy the (huge) file to the new database server.

Step 2: Preparing the new database

Use the password you are using in Zabbix server configurations.

Do not import any SQL schema at this point, we want an empty database to start with.

Step 3: Importing the database on the new server

 $ zcat zbx-dump.sql.gz | mysql -u zabbix -p zabbix 

This can take a lot of time. (Пример: база данных размером 50 ГБ была импортирована примерно за два часа.)

Шаг 4: Реконфигурация Zabbix для использования новой базы данных

Править /etc/zabbix/zabbix_server.conf
: Набор DBHost
на новый адрес сервера базы данных.

Перезапустите сервер Zabbix: sudo systemctl restart zabbix-server

Перезапустите Apache: sudo systemctl restart apache2

Шаг 5: Тестирование

Посмотрите интерфейс Zabbix (графический интерфейс), все выглядит нормально и производительно. Смотрите лог сервера Zabbix ( /var/log/zabbix/zabbix_server.log
) ничего странного.

Читайте также:  - Хостинг игровых серверов в России

Обратите внимание, что между шагами 1 и 4 в новой базе данных нет данных, это ожидаемо, поэтому вы увидите некоторый пробел в графиках и списках событий.

Если вы столкнулись с непредвиденными проблемами, проверьте журнал сервера Zabbix или журнал MariaDB. Если больше ничего не помогает, откатитесь, отменив изменения, сделанные на предыдущем шаге. Существующие данные в старой базе данных все еще там.

Если устранение неполадок занимает много времени и вы хотите минимизировать интервал для потерянных данных в Zabbix, вы можете снова начать с шага 1. В этом случае не забудьте сбросить новый
zabbix
базу данных на новом сервере (иначе вы получите ошибку при создании базы данных на шаге 4).

Шаг 6: Установите обслуживание секционирования базы данных

Если база данных была разделена (см., например, этот пост в блоге Zabbix
), разделение таблицы есть, но нет системы, используемой для создания новых разделов. Повторно внедрите системные скрипты на новый сервер базы данных (задание cron или подобное), или, если используются хранимые процедуры, вы можете настроить их заново (см. сообщение в блоге Zabbix) или скопировать из старой базы данных:

 # mysqldump --single-transaction --routines --no-data --no-create-info zabbix > /mnt/zabbix-partitioning.sql 

Скопируйте файл на новый сервер. Затем импортируйте его на новый сервер:

 # cat zabbix-partitioning.sql | mysql zabbix 

Воссоздайте событие разделения, например:

# mysql
(Вставьте это)
РАЗДЕЛИТЕЛЬ $
СОЗДАТЬ СОБЫТИЕ `e_zbx_part_mgmt` ПО РАСПИСАНИЮ КАЖДЫЙ ДЕНЬ НАЧИНАЕТСЯ '2021-12-30 00:00:00' ПО ЗАВЕРШЕНИЮ СОХРАНИТЬ ДАВАТЬ ВОЗМОЖНОСТЬ КОММЕНТАРИЙ 'Создание и удаление разделов' НАЧНИТЕ ВЫЗОВ zabbix.drop_partitions('zabbix'); ВЫЗОВ zabbix.create_next_partitions('zabbix'); END$
РАЗДЕЛИТЕЛЬ ;

Шаг 7: Мониторинг

Наконец, проверьте наличие всех необходимых средств мониторинга, таких как общий мониторинг MariaDB и мониторинг разделов.

Перенос Zabbix Server

Теперь можно перейти к переносу мониторинга сервера. Для этого остановите старый сервер:

# systemctl остановить zabbix-server zabbix-agent

Делаем дамбы базы данных. В нем обнаруживается всякая информация по мониторингу, которую необходимо обнаружить.

Этот дампинг необходимо передавать на новый сервер. Может использоваться любой привычный для вас способ. В обычных случаях я предпочитаю SCP:

10.1.3.19 — ip адрес нового сервера, на который переносим Zabbix. На старом уровне использования zabbix-server больше не запускается.

Переходим на новый сервер, распаковываем новый архив данных:

# gunzip ~/zabbix.sql.gz

Открываем консоль MySQL и восстанавливаем дамп в базе данных Zabbix:

# mysql -u root -p

> использовать заббикс;

> источник ~/zabbix.sql;

Дожидаемся окончания заливки. Это может длиться очень долго, если база большая.

После того, как загрузится дамп, можно зайти в веб-интерфейс нового сервера и убедиться, что всё восстановлено и сервер выглядит также, как на старом месте. Если всё ОК, то выключайте старый сервер мониторинга и больше не включайте с этим . Настройте новый адрес старого и тоже для верности перезагрузите.

После того, как новый сервер с перенесённым Zabbix загрузится, все агенты отправят на него информацию, так как для них ничего не поменялось. ограничение на этот перенос закончено.

Оцените статью
Хостинги