Zabbix – En son sürüm 7.0 LTS’ye güncelleme
Hazırlık Adımları
- “Sürüm notlarını” okuyun [Zabix 7.0 LTS için resmi sürüm notları] .
- “Yükseltme notlarını” [Zabbix 7.0 LTS için resmi yükseltme notlarını] iyice okuyun .
- Satıcı önerilerine ve Zabbix bulut sunucusunun gereksinimlerine göre mevcut veritabanının performansını kontrol edin ve optimize edin.
- Tüm bileşenlerin sürümlerinin yeni Zabbix sürümünün uyumluluk matrisiyle eşleştiğinden emin olun.
- Zabbix sunucusunun ve Zabbix proxy’sinin yapılandırma dosyalarını yedekleyin.
- Zabbix sunucusunun ve varsa Zabbix proxy’sinin veritabanlarını yedekleyin.
- Zabbix düzeyinde manuel olarak yapılan tüm özel değişiklikleri yedekleyin.
Sürüm Kontrolü
İlk olarak, Zabbix 7.0’ın resmi uyumluluk matrisiyle tam olarak eşleştiğinden emin olmak için Zabbix’in ve parçalarının çalışmasının bağlı olduğu tüm bileşenlerin sürümlerini kontrol edeceğiz.
php-fpm -v
psql -V
Zabbix Yapılandırma Dosyalarının Yedeklenmesi
Sonraki adımlara geçmeden önce Zabbix sunucusunun ve Zabbix Proxy’nin tüm yapılandırma dosyalarını yedekleyeceğiz.
cp /etc/zabbix/zabbix_server.conf /<backup directory>/
cp /etc/zabbix/zabbix_agent2.conf /<backup directory>/
cp -R /usr/lib/zabbix/alertscripts/ /<backup directory>/
cp -R /usr/lib/zabbix/externalscripts/ /<backup directory>/
cp -R /usr/share/zabbix/ /<backup directory>/
cp /etc/httpd/conf/httpd.conf /<backup directory>/
cp /etc/httpd/conf.d/zabbix.conf /<backup directory>/
cp /etc/zabbix/web/zabbix.conf.php /<backup directory>/
Hizmetleri Durdurma
Öncelikle veritabanına daha fazla yazı yazılmasını önlemek için Zabbix sunucusunu ve web sunucusunu durduracağız.
systemctl stop zabbix-server
systemctl stop httpd
PHP Güncellemesi
Yeni sürüm Zabbix 7.0, 8.0.0 ile 8.3.x arasında değişen PHP sürümlerini gerektirir. Şu anda sunucumuzda 8.0 sürümü mevcut ancak yine de bir güncelleme gerçekleştireceğiz.
İşletim sistemi düzeyinde dnf kullanarak paket yönetim sistemi ayarlarını değiştirerek güncellemeyi gerçekleştireceğiz. Sondan bir önceki sürümle iyi deneyimler yaşadık, çünkü en son sürümü kullanmak doğrudan PHP’de bir hataya neden olabilir ve bu da kullanım sorunlarına neden olabilir.
dnf module switch-to php:8.2 -y
Veritabanı Güncellemesi
Öncelikle şu anda çalışan PostgreSQL hizmetini durduracağız:
systemctl stop postgresql-13
Daha sonra, özel olarak desteklenen sürümü (bizim durumumuzda PostgreSQL sürüm 16) yükleyeceğiz:
dnf install -y postgresql16-server
Daha sonra TimescaleDB eklentisini kuracağız ancak eski veritabanınızla aynı versiyona kurmamız gerekiyor! Aynı sürümde değilse yükseltme komutu çalışmayacaktır. Aşağıdaki komutu kullanarak PostgreSQL 13 için mevcut kurulu sürümü karşılaştırabilir ve PostgreSQL 16 için paketlerin aynı sürümünü yükleyebilirsiniz:
VERSION=$(rpm -qa | grep timescaledb-2-postgresql-13 | head -1 | sed -n 's/.*-\([0-9]\+\.[0-9]\+\.[0-9]\+\)-.*/\1/p') && dnf install -y timescaledb-2-loader-postgresql-16-$VERSION-0.el9.x86_64 timescaledb-2-postgresql-16-$VERSION-0.el9.x86_64
Not : TimescaleDB eklentisinin sürümü aynı değilse yükseltme sırasında aşağıdaki hatayı göreceksiniz:
Artık PostgreSQL veritabanının yeni sürümünün başlatılmasına devam edebiliriz:
/usr/pgsql-16/bin/postgresql-16-setup initdb
Tüm bağımlılıkları başarıyla yükledikten sonra, uyumluluğu kontrol edecek ve gerekirse sürümler arasındaki değişikliklere göre dahili tabloları ve şemaları düzeltecek (postgres kullanıcısı olarak) sağlanan güncelleme komut dosyasını çalıştıracağız:
su - postgres
İzinlerin yapılandırmasını (pg_hba.conf) eski sürümden yenisine aktaracağız:
cat /var/lib/pgsql/13/data/pg_hba.conf > /var/lib/pgsql/16/data/pg_hba.conf
İsteğe bağlı olarak, veritabanı sunucusunun konfigürasyonunu da aktaracağız (önceden sürümler arasındaki bireysel konfigürasyon direktiflerinin uyumluluğunu sağlayın):
cat /var/lib/pgsql/13/data/postgresql.conf > /var/lib/pgsql/16/data/postgresql.conf
Veritabanı geçişini başlatacağız.
/usr/pgsql-16/bin/pg_upgrade -b /usr/pgsql-13/bin -B /usr/pgsql-16/bin -d /var/lib/pgsql/13/data -D /var/lib/pgsql/16/data -k
Postgres kullanıcısından çıkış yapacağız:
logout
Artık eski hizmetin otomatik başlatılmasını devre dışı bırakabiliriz:
systemctl disable postgresql-13.service
Ve sistem önyüklemesinde otomatik olarak başlatılmasını sağlamak da dahil olmak üzere PostgreSQL veritabanı sunucusunun yeni sürümünü başlatın:
systemctl enable postgresql-16.service --now
PostgreSQL sunucusunu başarıyla başlattıktan sonra ilk adım, Zabbix veritabanındaki TimescaleDB’mizi kontrol etmek ve gerekirse güncellemektir:
su - postgres
psql -X
\c zabbix
Bir sonraki adımda PostgreSQL veritabanındaki durumu güncelleyeceğiz:
ALTER EXTENSION timescaledb UPDATE;
Başarılı güncellemeden sonra psql konsolundan güvenle çıkacağız:
exit
Başarılı güncellemeden sonra VACUUM gerçekleştirmenizi ve veritabanlarını yeniden indekslemenizi öneririz. Bu, aşağıdaki komutlarla yapılabilir:
/usr/pgsql-16/bin/vacuumdb --all --analyze-in-stages
reindexdb
Bir sonraki adım eski PostgreSQL kümesini silmek:
./delete_old_cluster.sh
rm -rf 13 delete_old_cluster.sh
Artık eski paket versiyonlarını kaldırabiliriz. Postgres kullanıcısından çıkış yapıp gereksiz paketleri kaldıracağız. TimescaleDB paketleri değiştirildi, dolayısıyla artık sistemde mevcut değiller ve kaldırılmaları gerekmiyor:
logout
dnf remove postgresql13-*
Son adımda eski sürümün konfigürasyon dosyalarını içeren klasörü silebiliriz:
rm -rf /usr/pgsql-13/
Zabbix’in güncellenmesi
Her şeyi başarıyla yedekledik ve tüm bağımlı bileşen sürümlerini, Zabbix’in yeni sürümü için resmi uyumluluk matrisine göre güncelledik.
Şimdi Zabbix’in kendisini ve tüm bileşenlerini güncellemeye devam edeceğiz.
Öncelikle yeni Zabbix sürümünün depoları için kurulum paketlerini indireceğiz ve kurulum önbelleğini temizleyeceğiz:
rpm -Uvh https://repo.zabbix.com/zabbix/7.0/centos/9/x86_64/zabbix-release-7.0-1.el9.noarch.rpm
dnf clean all
Bu adımdan sonra, yeni sürüm için depolarımız mevcut ve tüm Zabbix Proxy’leri de dahil olmak üzere diğer tüm Zabbix bileşenlerini sırayla güncelleyebiliriz:
dnf update zabbix-* -y
Zabbix veritabanımız TimescaleDB uzantısını kullandığından hipertabloları başlatmak için tekrar bir SQL betiği çalıştırmamız gerekir. Sürüm 7.0’daki yeni bir özellik hiper tablolu denetim günlüğü tablosudur.
cat /usr/share/zabbix-sql-scripts/postgresql/timescaledb/schema.sql | sudo -u zabbix psql zabbix
Zabbix sunucu paketlerinin ve tüm bileşenlerinin güncellemesini başarıyla tamamladıktan sonra hizmeti yeniden başlatabiliriz:
systemctl start zabbix-server.service
systemctl start httpd
Kademeli faaliyetler ve veritabanı şemasındaki değişiklikler de dahil olmak üzere tüm güncelleme süreci, Zabbix sunucu günlük dosyasından izlenebilir:
tail -f /var/log/zabbix/zabbix_server.log
Not: Zabbix sunucusunu yeniden başlattıktan sonra bir veritabanı uyumluluk hatası ortaya çıkarsa, Zabbix sunucusu yapılandırma dosyasında aşağıdaki yönergeyi ayarlamanız yeterlidir.
Zabbix’in bu sürümünde bu bir uyumluluk hatası değil, Zabbix kaynak kodunun kendisinde eksik olan TimescaleDB sürüm numarasıdır!
Veritabanının uygun sürümleri ve sizin sürümünüze yönelik uzantıları için her zaman resmi Zabbix belgelerindeki uyumluluk matrisine bakın.
Zabbix sunucusu yapılandırma dosyasını açın:
nano /etc/zabbix/zabbix_server.conf
Burada aşağıdaki parametreyi ayarlayacağız:
AllowUnsupportedDBVersions=1
Son olarak Zabbix sunucu hizmetini yeniden başlatacağız:
systemctl restart zabbix-server.service
Daha sonra Zabbix sunucusu veritabanı yapısı yükseltmesini başlatmalı ve başlatmalıdır:
tail -f /var/log/zabbix/zabbix_server.log
PostgreSQL Yükseltmesinden Sonra Performans Ayarlama
Zabbix sunucusunu başarıyla başlattıktan sonra, yükseltme sonrasında veritabanına ince ayar yapmak için timescaledb-tune betiğini tekrar çalıştırarak isteğe bağlı ek bir adım atabiliriz.
Bu komut için, PostgreSQL yapılandırma dosyasının yolunu belirleyeceğiz ve veritabanına gelen maksimum bağlantı sayısı sınırını artıracağız; bu, izleme ihtiyaçları için dolaylı olarak çok düşüktür:
timescaledb-tune --pg-config=/usr/pgsql-16/bin/pg_config --max-conns=100
Yeni ayarlanan yapılandırma parametrelerini uygulamak için PostgreSQL hizmetini yeniden başlatacağız (ideal olarak bu işlem sırasında Zabbix sunucusunu durdurun, ancak bu gerekli değildir):
systemctl restart postgresql-16.service
Son Adımlar
- Zabbix sunucusunun ve veritabanı sunucusunun doğru şekilde çalıştığını ve doğru sürüme sahip olduğunu doğrulayın.
- Tüm Zabbix proxy’lerinin çalıştığını ve doğru sürüme sahip olduğunu kontrol edin. (6.4 sürümünden itibaren geriye dönük uyumluluk mevcuttur, ancak yine de Zabbix sunucusuyla aynı sürümü kullanmanızı öneririz).
- Zabbix sunucusunun ve Zabbix proxy’lerinin durumunu kontrol edin (günlük dosyaları, desteklenmeyen öğeler, kuyruklar, izleme komut dosyaları vb.).
- Sunucularınıza resmi Zabbix şablonlarının en son sürümlerinin atandığından emin olun. [Zabbix GIT]