Open Source

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]

Muhammed Kerim Koç

1996 yılında Giresun Şebinkarahisarda dünyaya geldim. İlk ve orta öğretimi Şebinkarahisarda tamamladım. Liseyi Şebinkarahisar Anadolu Teknik ve Endüstri Meslek Lisesinde bitirdim. Üniversite için de Şebinkarahisar Teknik Bilimler Meslek Yüksek Okulunda Bilgisayar programcılığını okudum. Üniversite stajı için gelmiş olduğum özel bir firmada işe başladım. 5,5 yıl bu firmadan çalıştıktan sonra farklı bir sektör olan inşaat sektöründe Bilgi teknolojileri Uzmanı olarak 8 ay çalıştım. Daha sonra özel bir şirkette Sistem Network Sorumlusu olarak 4 ay çalıştıktan sonra proje sonlandırılmasından dolayı işten ayrıldım. Tekrar dan 5.5 yıl çalışmış olduğum firmaya Sistem ve Network Yöneticisi olarak geri döndüm ve çalışmaya başladım. Kendimi geliştirmek için Bilge Adam Akademi den Sistem Uzmanlığı eğitimi aldım. Sanallaştırma ve Ağ tarafında kendimi sürekli olarak geliştiriyorum.

İlgili Makaleler

Başa dön tuşu