آپگرید زبیکس از ور‌ژن *.4 به 5

آپگرید زبیکس از ور‌ژن *.4 به 5
در این پست می‌خوانید:

زبیکس ۵ بسیاری از ویژگی های جدید را نسبت به ورژن های قبلی ارایه میدهد ، شما می توانید در مورد این ویژگی ها به سایت رسمی خود زبیکس به آدرس زیر سر بزنید سایت رسمی . با این حال ، لازم به ذکر است که این بروزرسانی نیازمند تغییرات جدید روی PHP و پایگاه داده است که می بایست مد نظر گرفته شود.

نکته اصلی این است که از نسخه 5.0 ، Zabbix دیگر از نسخه های PHP قدیمی تر از 7.2 پشتیبانی نمی کند. سیستم عامل های جدیدتر از PHP 7.2+ پشتیبانی می کنند بنابراین می توانید Zabbix را به 5.0 بدون هیچ مشکلی در این توزیع های لینوکس ارتقا دهید:

  • Ubuntu 20.04 (Focal) / 18.04 (Bionic)
  • CentOS 8 / RHEL 8
  • Debian 10 (Buster)
  • Rasbian 10 (Rasberry Pi)

اما اگر توزیع قدیمی تری داشته باشید که PHP 7.2+ نداشته باشد چه ؟ روش رسمی دریافت PHP 7.2 یا بالاتر در نسخه های قدیمی دبیان / اوبونتو ، ارتقا به نسخه های جدید این توزیع ها یعنی Buster / Focal است.

زبیکس 5.0 علاوه بر حذف پشتیبانی از نسخه های قدیمی PHP ، نیازهای پایگاه داده را هم سخت تر کرده است. در اینجا حداقل نسخه های پایگاه داده ای که Zabbix جدید پشتیبانی می کند اشاره شده است:

  • MySQL 5.5.62
  • MariaDB 10.0.37
  • PostgreSQL 9.2.24
  • Oracle 11.2

نسخه پایگاه داده خود را بررسی کنید و در صورت پایین بودن ورژن از موارد ذکر شده بالا ، ابتدا باید قبل از ادامه هر کاری پایگاه داده رو ارتقا بدین.

مرور حداقل ها و نیازهای برای زبیکس 5

  • حداقل ورژن php 7.2.0
  • عدم پیشتیبانی از IBM DB2 به عنوان دیتابیس زبیکس
  • عدم پیشتیبانی از IE11 برای نمایش frontend
  • عدم پیشتیبانی از کتابخانه mbedTLS (PolarSSL) crypto و فقط از کتابخونه های GnuTLS و OpenSSL پشتیبانی میکند
  • برخی از مکان های فایل ها هم جابه جا شده که اهمیت چندانی ندارد

مراحل بروزسانی زبیکس

در ادامه به مراحل آپگرید زبیکس ۵ می پردازیم. نکته ی قابل ذکر این است که نصب زبیکس ۵ روی یک سیستم خشک مدنظر نبوده و فرض بر این است که یک نمونه زبیکس در حال اجرا می باشد.

این آموزش برای سیستم عامل دبیان 10 و دیتابیس زبیکس mysql و به صورت لوکال در نظر گرفته شده است.

مرحله اول- استاپ کردن سرویس زبیکس سرور

ابتدا باید سرور Zabbix را متوقف کنیم تا هنگام انجام ارتقا ، پایگاه داده، داده ی جدیدی دریافت نکند.

 

systemctl stop zabbix-server

مرحله دوم- بک آپ گیری از بخش های زبیکس سرور

ارتقا Zabbix بدون مشکل انجام میشود اما این جمله معروف وجود دارد که میگه «better safe than sorry» بنابراین ، از داده های خود نسخه پشتیبان تهیه کنید و تمام فایل های مربوط به Zabbix را در دایرکتوری پشتیبان خود کپی کنید! این گزینه به شما امکان بازیابی به نسخه قبلی در صورت بروز مشکل در بروزرسانی به نسخه جدید Zabbix را می دهد.

برای گرفتن بک آپ می تونین از رویه زیر استفاده کنید:

الف) ساخت دایرکتوری برای بک آپ زبیکس

دایرکتوری های پشتیبان را برای فایلهای باینری ، پیکربندی ، داک ، وب و پایگاه داده ایجاد کنید.


mkdir -p /opt/zabbix_backup/bin_files /opt/zabbix_backup/conf_files /opt/zabbix_backup/doc_files
mkdir -p /opt/zabbix_backup/web_files /opt/zabbix_backup/db_files
 
ب) گرفتن کپی از فایل ها به درون دایرکتوری های ساخته شده در مرحله الف

در این مرحله ، فایلهای باینری ، doc و پیکربندی Zabbix را کپی کنید. بسته به اینکه از چه سروری استفاده می کنید (Apache یا NGINX) برخی از دایرکتوری ها ممکن است موجود نباشد ، بنابراین برای نادیده گرفتن خطاهای کپی ، از «2> / dev / null» استفاده خواهم کرد.

cp -rp /etc/zabbix/zabbix_server.conf /opt/zabbix_backup/conf_files
cp -rp /usr/sbin/zabbix_server /opt/zabbix_backup/bin_files
cp -rp /usr/share/doc/zabbix-* /opt/zabbix_backup/doc_files
cp -rp /etc/httpd/conf.d/zabbix.conf /opt/zabbix_backup/conf_files 2>/dev/null
cp -rp /etc/apache2/conf-enabled/zabbix.conf /opt/zabbix_backup/conf_files 2>/dev/null
cp -rp /etc/zabbix/php-fpm.conf /opt/zabbix_backup/conf_files 2>/dev/null
ج) گرفتن کپی از فایل ها وب (frontend) به درون دایرکتوری ساخته شده در مرحله الف
cp -rp /usr/share/zabbix/ /opt/zabbix_backup/web_files
د) گرفتن بک آپ از دیتابیس زبیکس

در این مثال فرض شده دیتابیس زبیکس به صورت لوکال است برای دیتابیس های خارجی مکان متفاوت در نظر بگیرید با دونستن اینکه opt/ فضای کافی برای بک آپ دیتابیس را دارد از دستور زیر استفاده میکنیم

mysqldump -h localhost -u'DB_USER' -p'DB_PASS' --single-transaction 'DB_NAME' | gzip > /opt/zabbix_backup/db_files/zabbix_backup.sql.gz

شایان به ذکر است که مقادیر DB_PASS DB_USER DB_NMAE می بایست اصلاح شود. این دستور یک بک آپ کلی از دیتابیس zabbix می گیرد. این مرحله می تونه زمان بر باشه.

 

مرحله سوم- به روزرسانی زبیکس سرور و frontend

ابتدا رپازیتوری قدیمی زبیکس را پاک و رپازیتوری جدید را اضافه میکنیم.

dpkg --purge zabbix-release sudo wget https://repo.zabbix.com/zabbix/5.0/debian/pool/main/z/zabbix-release/zabbix-release_5.0-1+$(lsb_release -sc)_all.deb
sudo dpkg -i zabbix-release_5.0-1+$(lsb_release -sc)_all.deb
apt update
apt install -y --only-upgrade zabbix-server-mysql zabbix-frontend-php

اگر که از آپاچی استفاده می کنید که پیکیج زیر رو هم نصب کنید.

apt-get install -y zabbix-apache-conf

مرحله چهارم- استارت سرویس زبیکس سرور و انجام مراحل دیتابیس آپگرید

سرور و frontend Zabbix با موفقیت ارتقا یافتند! با این حال ، پایگاه داده Zabbix هنوز در نسخه قدیمی است زیرا ما آن را ارتقا ندادیم. این امر به ویژه در هنگام اتصال به frontend مشهود است زیرا با پیام «The frontend does not match Zabbix database» از شما استقبال می شود.

خوشبختانه ، ارتقا پایگاه داده Zabbix قسمت ساده ای است ، فقط سرویس Zabbix را شروع کنید و به طور خودکار ارتقا می یابد:

systemctl start zabbix-server

به روزرسانی پایگاه داده بسته به اندازه پایگاه داده می تواند زمان زیادی را بگیرد. می توان با دستور زیر روند پیشرفت آن را از لاگ دنبال کرد.

cat /var/log/zabbix/zabbix_server.log | grep database

خروجی مانند زیر است

 cat /var/log/zabbix/zabbix_server.log | grep database

output -->
14585:20200408:193300.684 current database version (mandatory/optional): 04040000/04040001
14585:20200408:193300.684 starting automatic database upgrade
14585:20200408:193300.686 completed 100% of database upgrade
14585:20200408:193300.686 database upgrade fully completed
590:20200408:193748.973 current database version (mandatory/optional): 04040000/04040002
1794:20200408:200607.700 current database version (mandatory/optional): 04040000/04040002
1794:20200408:200607.700 starting automatic database upgrade
1794:20200408:200607.706 completed 1% of database upgrade
1794:20200408:200607.728 completed 2% of database upgrade
1794:20200408:200608.092 completed 4% of database upgrade
1794:20200408:200608.750 completed 8% of database upgrade
1794:20200408:200608.804 completed 10% of database upgrade
....
....
....
1794:20200408:200613.074 completed 89% of database upgrade
1794:20200408:200613.080 completed 92% of database upgrade
1794:20200408:200613.092 completed 94% of database upgrade
1794:20200408:200613.111 completed 98% of database upgrade
1794:20200408:200613.123 completed 100% of database upgrade
1794:20200408:200613.123 database upgrade fully completed
1794:20200408:200613.136 database is not upgraded to use double precision values
 

هنگامی که پیام «database upgrade fully completed » را مشاهده کردین می تونین مطمین باشین که دیتابیس با موفقیت به روز شده است.

 

مرحله پنجم- حذف کش مرورگر و بررسی ور‌ژن زبیکس

ممکن است پس از به روزرسانی Zabbix ظاهر بسیار عجیب به نظر برسد زیرا حافظه کش را در مرورگر خود پاک نکرده اید! حافظه پنهان مرورگر را پاک کرده و وارد Zabbix شوید.

برای بررسی ورژن زبیکس سرور از دستور زیر می توان استفاده کرد

# zabbix_server -V
zabbix_server (Zabbix) 5.0.0

همچنین در پایین صفحه frontend هم می توان آن را بررسی کرد مانند تصویر زیر:

 

مرحله ششم -پچ کردن دیتابیس و اصلاح وارنینگ ها

ممکن است در بخش System information برای قسمت Database history tables upgraded مقدار قرمز رنگ NO را مشاهده کنین

 

 

در Zabbix 5.0 نوع داده شناور یا float از دقت تقریبی 15 رقمی و یا بزرگتر پشتیبانی می کند. این به صورت پیش فرض برای نصب های جدید بر روی سیستم های خشک است ، اما اگر در حال ارتقا هستید ، باید پچ ارتقا دستی برای دیتابیس اعمال کنید.

قبل از استفاده از پچ ، بیایید description جدول فعلی را بررسی کنیم (مطمئن شوید که نام db ، کاربر و رمز عبور را با نام خود تغییر دهید):

mysql -u'zabbix' -p'zabbixDBpass' zabbix -e "show create table history;"
| history | CREATE TABLE history (
itemid bigint(20) unsigned NOT NULL,
clock int(11) NOT NULL DEFAULT '0',
value double(16,4) NOT NULL DEFAULT '0.0000',
ns int(11) NOT NULL DEFAULT '0',
KEY history_1 (itemid,clock)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin |

پچ MySQL / MariaDB «double.sql» را دانلود کرده و آن را اعمال کنید (کاربران PostGreSql باید «mysql» را با «postgresql» در مسیر URL تغییر دهند):

wget https://git.zabbix.com/projects/ZBX/repos/zabbix/raw/database/mysql/double.sql
mysql -u'zabbix' -p'zabbixDBpass' zabbix < double.sql

حال description جدول را مشاهده میکنیم

mysql -u'zabbix' -p'zabbixDBpass' zabbix -e "show create table history;"
history | CREATE TABLE history (
itemid bigint(20) unsigned NOT NULL,
clock int(11) NOT NULL DEFAULT '0',
value double NOT NULL DEFAULT '0',
ns int(11) NOT NULL DEFAULT '0',
KEY history_1 (itemid,clock)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin |


اکنون باید خط زیر را به «zabbix.conf.php» با ویرایشگر متن («nano /etc/zabbix/web/zabbix.conf.php») اضافه کنیم تا پیام هشدار را از قسمت جلو حذف کنیم:

$DB['DOUBLE_IEEE754'] = 'true';

تبریک ارتقا را تمام کردیم —- خوب حالا ی چنتا نکته با هم بررسی کنیم

نکته 1: برای بروزرسانی بین minor version ها نیاز به کار خاصی نیست و می توان از دستور زیر استفاده کرد

#########Ubuntu/Debian/Rasbian
apt install --only-upgrade 'zabbix.*'
#########CentOS / RHEL
dnf upgrade 'zabbix-*' 

#########Restart Zabbix server afterward:
systemctl restart zabbix-server

نکته 2: برای بروزرسانی Zabbix-Proxy مراحل مشابه فقط در قسمت نصب پکیج نام پیکج zabbix-proxy می شود

apt install -y --only-upgrade zabbix-proxy

نکته 3: برای بروزرسانی Zabbix-Agent بعد از اضافه کردن رپازیتوری پکیچ zabbix_agent نصب می شود

apt install -y --only-upgrade zabbix-agent

خطاهای احتمالی در حین بروزرسانی

ممکن است در حین بروزرسانی به چنتا خطا برخورد کنین

که در زیر ۲ تا از شایع ترین اونا رو با راه حل براتون میاریم

خطای 1 — Z3005] query failed: [1118] Row size too large]

اگر در حین بروز رسانی خطای زیر را دریافت کردید

[Z3005] query failed: [1118] Row size too large. The maximum row size for the used table type, not counting BLOBs, is 8126. This includes storage overhead, check the manual. You have to change some columns to TEXT or BLOBs ...

سعی کنید که گزینه innodb_strict_mode را غیرفعال کنید.

mysql -uroot -p'rootDBpass' zabbix -e "set global innodb_strict_mode='OFF';" 
systemctl restart zabbix-server

سپس با دستور زیرچک کنین اگه بروزرسانی درست بود مجدد تنظیمات را به حالت اول برگردانید.

cat /var/log/zabbix/zabbix_server.log | grep database
mysql -uroot -p'rootDBpass' zabbix -e "set global innodb_strict_mode='ON';"
خطای 2 — The frontend does not match Zabbix database

این خطا می تواند به دو دلیل رخ دهد : 1) زبیکس frontend بروز شده ولی دیتابیس هنوز بروز نشده است

در این حالت خطا ممکن است به شکل زیر باشد

The frontend does not match zabbix database. current database version (mandatory/optional): 4040000/4040002. required mandatory version: 5000000. contact your system administrator.

or

The frontend does not match Zabbix database. Current database version (mandatory/optional): 4000000/4000006.Required mandatory version: 4040000. Contact your system administrator. 

در این حالت اول فایل لاگ زبیکس را چک کنین ممکن است upgrade دیتابیس هنوز در حال اجرا باشد اگه تمام شده بود که سرویس زبیکس رو ریستارت کنین درست میشه.

systemctl restart zabbix-server

2) زبیکس frontend بروز نشده ولی دیتابیس بروز شده است

در این حالت خطا ممکن است به شکل زیر باشد

The frontend does not match Zabbix database. Current database version (mandatory/optional): 5000000/5000000. Required mandatory version: 4040000. Contact your system administrator.

or
The frontend does not match zabbix database. current database version (mandatory/optional): 5000000/5000000. required mandatory version: 4000000. contact your system administrator.

برای این مورد می بایست مطمین شوین frontend بروز شده است مرحله ۳ از بروزرسانی را چک و فقط پکیج zabbix-frontend-php را بروزرسانی کنید.

دیدگاه‌ها ۸
ارسال دیدگاه جدید