CentOS 7’den Oracle Linux 8.10’a:Grafana & InfluxDB Yükseltme Rehberi

CentOS 7'den Oracle Linux 8.10'a Grafana ve InfluxDB yükseltme süreci

InfluxDB Üzerine Grafana Kurulumu yazısında bu altyapıyı CentOS 7 üzerinde sıfırdan nasıl kurduğumuzu anlatmıştım. Bu yazıda ise aynı sistemi EOL durumuna düşmüş CentOS 7’nin Oracle Linux 8.10 yükseltme sürecini ele alıyorum. Bunun yanı sıra, Grafana 8.x güvenlik açıkları da dahil olmak üzere in-place yöntemle gerçekleştirirken karşılaştığımız sorunları ve çözümleri gerçek komut çıktılarıyla aktarıyorum.

Altyapı ve Başlangıç Durumu

Yurt içi ve Avrupa olmak üzere iki farklı coğrafi bölgede toplamda 4 sunucudan oluşan bir monitoring altyapısını yükselttik. Bunun yanı sıra her bölgede bir Grafana sunucusu ve bir InfluxDB sunucusu çalışıyor. Dolayısıyla yükseltme sürecini her iki bölge için ayrı ayrı planladık ve uyguladık.

⚠ Neden Acil?

CentOS 7, Haziran 2024 itibarıyla End of Life durumuna girdi. Güvenlik güncellemesi almayan bu sistemlerde Grafana 8.x için de aktif CVE’ler açıktı. Yükseltme artık ertelenebilir değildi.

Yükseltme Stratejisi

Doğrudan CentOS 7’den Oracle Linux 8’e atlamak mümkün değil. Oracle’ın önerdiği in-place yükseltme iki aşamada gerçekleşiyor:

Yükseltme Yolu
CentOS 7.9 ── [centos2ol.sh] ──► Oracle Linux 7.9
[leapp upgrade]
Oracle Linux 8.10

Grafana tarafında ise 8.2.2 → 13.x doğrudan atlama yapılamaz. Bunun nedeni, major sürümler arasında DB migration’larının zorunlu olmasıdır. Bununla birlikte OS yükseltmesi sırasında Grafana repo aktif olduğundan yükseltme otomatik gerçekleşti ve ardından yalnızca SQLite şema düzeltmesi yapılması yetti. Dolayısıyla ayrı bir adım gerekmedi.

Hazırlık: Backup ve Snapshot

Her sunucu için yükseltme öncesinde üç katmanlı koruma aldık. Öncelikle hypervisor seviyesinde snapshot, ardından uygulama yedekleri ve son olarak InfluxDB portable backup gerçekleştirildi.

01

Hypervisor Seviyesi Snapshot

VMware üzerinden tüm disk’in anlık görüntüsü. Herhangi bir aşamada sorun çıkarsa tek tıkla geri dönüş imkânı.

02

InfluxDB Portable Backup

Yaklaşık 155GB veri içeren telegraf database’inin tamamı influxd backup -portable komutuyla alındı. Bu format, olası bir restore senaryosunda farklı bir InfluxDB instance’ına bile aktarılabilir.

03

Grafana Uygulama Yedeği

grafana.db (SQLite veritabanı) ve grafana.ini (konfigürasyon) manuel olarak yedeklendi. Dashboard, datasource ve alert kurallarının tamamı bu iki dosyada.

BASH — INFLUXDB BACKUP
# InfluxDB portable backup
mkdir -p /root/influxdb-backup
influxd backup -portable /root/influxdb-backup/
du -sh /root/influxdb-backup/
# 155G  /root/influxdb-backup/

# Grafana backup
cp /var/lib/grafana/grafana.db /var/lib/grafana/grafana.db.backup
cp /etc/grafana/grafana.ini /etc/grafana/grafana.ini.backup

CentOS’tan Oracle Linux’a Yükseltme

Oracle’ın centos2ol.sh scripti, CentOS paket depolarını Oracle Linux depoları ile değiştirerek sistemin kimliğini dönüştürüyor. Bunun yanı sıra disk verisine kesinlikle dokunmuyor; yalnızca paket metadata’sı güncelleniyor. Dolayısıyla mevcut veriler ve konfigürasyonlar olduğu gibi korunuyor.

BASH — CENTOS → ORACLE LINUX 7.9
# Scripti indir (internet erişimi kısıtlıysa SCP ile aktar)
wget --no-check-certificate \
  https://raw.githubusercontent.com/oracle/centos2ol/main/centos2ol.sh

# Çalıştır
bash -x centos2ol.sh

# Paket senkronizasyonu
yum distro-sync -y

# Yeniden başlat
reboot now

# Doğrula
cat /etc/oracle-release
# Oracle Linux Server release 7.9
💡 İpucu

Script başarıyla tamamlansa bile son adımda 3rd party repo GPG hatası nedeniyle hata verebilir. Bu durumda cat /etc/oracle-release ile OS’un zaten Oracle Linux olduğunu doğrulayabilirsiniz. Script’in asıl işi tamamlanmıştır.

Oracle Linux 7.9 → Oracle Linux 8.10

OL7’den OL8’e geçiş için Oracle’ın leapp aracı kullanılıyor. Önce preupgrade ile sistem analizi yapılıyor, sorunlar gideriliyor, ardından upgrade ile yükseltme gerçekleştiriliyor.

BASH — LEAPP KURULUM VE PREUPGRADE
# leapp kur
yum install -y leapp-upgrade --enablerepo ol7_leapp,ol7_latest

# Sistem analizi
leapp preupgrade --oraclelinux

# Zorunlu onayı ver
leapp answer --section remove_pam_pkcs11_module_check.confirm=True

# Dynamic linker çakışmalarını temizle
rm -f /etc/ld.so.conf.d/mariadb-x86_64.conf
rm -f /etc/ld.so.conf.d/dyninst-x86_64.conf
ldconfig

# Yükseltmeyi başlat
leapp upgrade --oraclelinux

# Sistem otomatik reboot yapar, ~15-20 dk bekle
# Sonra doğrula:
cat /etc/oracle-release
# Oracle Linux Server release 8.10
uname -r
# 5.4.17-2136.354.4.1.el8uek.x86_64

Grafana 8.x → 13.x Yükseltmesi

OS yükseltmesi sırasında Grafana repo aktif olduğundan, yükseltme otomatik olarak gerçekleşti. Dolayısıyla ayrı bir müdahaleye gerek kalmadı. Bununla birlikte Grafana 13, SQLite DB şemasında yeni kolonlar bekliyor ve bu nedenle eski DB ile başlayamıyor.

playlist tablosu migration hatası

Grafana 13 başlatıldığında SQL logic error: no such column: p.uid hatası alındı. Çözüm: eksik kolonları manuel olarak eklemek.

BASH — SQLite migration fix
# Mevcut şemayı kontrol et
sqlite3 /var/lib/grafana/grafana.db ".schema playlist"

# Eksik kolonları ekle
sqlite3 /var/lib/grafana/grafana.db << 'EOF'
ALTER TABLE playlist ADD COLUMN uid TEXT;
ALTER TABLE playlist ADD COLUMN created_at INTEGER DEFAULT 0;
ALTER TABLE playlist ADD COLUMN updated_at INTEGER DEFAULT 0;
.quit
EOF

# Grafana'yı başlat
systemctl start grafana-server
systemctl status grafana-server | head -5
grafana-server -v
# Version 13.0.1 (commit: a100054f, branch: release-13.0.1)
⚠ Grafana 9 araya girerse

OL8 yükseltmesi sonrası bazı sistemlerde Grafana 9.x kurulmuş olabilir (Oracle’ın appstream reposundan). Bu durumda uid kolonunu zaten eklemiş olursunuz. Grafana 13’e yükseltince “duplicate column” hatası alırsınız. Çözüm: uid kolonu olmayan yeni bir tablo oluşturup rename etmek.

BASH — duplicate column fix
# uid kolonunu kaldırıp Grafana 13'ün kendisi eklesin
sqlite3 /var/lib/grafana/grafana.db << 'EOF'
CREATE TABLE playlist_new AS
  SELECT id, name, interval, org_id, created_at, updated_at
  FROM playlist;
DROP TABLE playlist;
ALTER TABLE playlist_new RENAME TO playlist;
.quit
EOF

InfluxDB Durumu

InfluxDB 1.8.10, 1.x serisinin son kararlı sürümüdür. Bunun yanı sıra OS yükseltmesinden etkilenmeden çalışmaya devam etti. Dolayısıyla herhangi bir uygulama seviyesinde yükseltme yapılmasına gerek kalmadı.

ℹ InfluxDB 2.x Neden Kapsam Dışı?

InfluxDB 2.x, Flux query language ve tamamen farklı bir API kullanıyor. Tüm Grafana dashboard’larının ve Telegraf konfigürasyonlarının yeniden yazılmasını gerektiriyor. Bu ayrı bir proje kapsamında değerlendirilmeli.

Karşılaşılan Sorunlar ve Çözümler

Yükseltme sürecinde birkaç tekrarlayan sorunla karşılaştık. Bunları belgelemek sonraki yükseltmeler için büyük zaman tasarrufu sağlıyor.

🔴
python-six / sysvinit-tools çakışması

leapp upgrade sırasında python-six ve sysvinit-tools paketleri OL8 paketleriyle çakışıyordu.

Çözüm: rpm -e --nodeps sysvinit-tools ile kaldır. python-six için ise RPM kaydını kaldır ama six.py dosyasını diskte tut — leapp bu dosyayı çalışmak için kullanıyor.

🔴
pkg_resources: six bulunamıyor

rpm -e sonrası leapp çalışmıyor: DistributionNotFound: six. Python’un pkg_resources modülü dosya varlığını değil egg-info metadata’sını arıyor.

Çözüm: Manuel olarak egg-info dizini oluştur:

mkdir -p /usr/lib/python2.7/site-packages/six-1.9.0.egg-info
cat > /usr/lib/python2.7/site-packages/six-1.9.0.egg-info/PKG-INFO << 'EOF'
Metadata-Version: 1.1
Name: six
Version: 1.9.0
EOF
echo "six" > \
  /usr/lib/python2.7/site-packages/six-1.9.0.egg-info/top_level.txt
🟡
leapp repo: IOError — dosya bulunamadı

Avrupa sunucularında leapp, /etc/yum.repos.d/leapp_upgrade_repositories.repo dosyasını arıyordu. Dosya /etc/leapp/files/ altındaydı.

Çözüm: cp /etc/leapp/files/leapp_upgrade_repositories.repo /etc/yum.repos.d/

🟡
GPG key — UsedTargetRepositories bulunamadı

Repo dosyası mevcut olmasına rağmen ol8_UEKR6 repo’su eksikti. leapp bu repo’yu zorunlu tutuyordu.

Çözüm: Repo dosyasına [ol8_UEKR6] bölümünü manuel ekle ve rpm --import ile Oracle GPG key’i yükle.

🟡
grafana-selinux çakışması

OL8 appstream reposunda grafana-9.x paketi mevcut. yum update grafana komutu grafana-selinux bağımlılığı nedeniyle çalışmıyordu.

Çözüm: rpm -e --nodeps grafana-selinux ile kaldır, ardından yükselt.

🟢
nginx servisi OL8’de çalışmıyor

Avrupa Grafana sunucusunda leapp upgrade sonrası nginx paketi kaybolmuştu. Sadece nginx-filesystem kuruluydu.

Çözüm: yum install -y nginx ile yeniden kur, systemctl enable --now nginx.

Sonuç

Dört sunucuda toplam yaklaşık 8 saat süren çalışmanın sonunda, CentOS Oracle Linux yükseltme süreci başarıyla tamamlandı. Dolayısıyla tüm altyapı, güvenlik açıkları kapatılmış ve uzun vadeli destek garantili bir platforma taşınmış oldu. Bunun yanı sıra tüm servisler eksiksiz ayağa kalktı ve altyapı sorunsuz çalışır hale geldi.

mon-grafana-01 ✓ Aktif
OS Oracle Linux 8.10
Grafana 13.0.1
Kernel 5.4.17 UEK
mon-influx-01 ✓ Aktif
OS Oracle Linux 8.10
InfluxDB 1.8.10 (son)
Veri Telegraf ✓
eu-grafana-01 ✓ Aktif
OS Oracle Linux 8.10
Grafana 13.0.1
nginx Yeniden kuruldu ✓
eu-influx-01 ✓ Aktif
OS Oracle Linux 8.10
InfluxDB 1.8.10 (son)
Veri Telegraf ✓
✓ Önemli Çıkarımlar

centos2ol scripti güvenilir — GPG hatası ile sonlansa bile OS geçişini tamamlıyor.

leapp, 3rd party paketlere karşı hassas — yükseltme öncesi tüm üçüncü parti repoları devre dışı bırakmak süreci çok daha sorunsuz hale getiriyor.

Grafana SQLite migration hatalarını bilmek kritikplaylist tablosu sorunu Grafana 8→13 yükseltmelerinde tekrar eden bir problem.

Özet

Bu yazıda, CentOS Oracle Linux yükseltme sürecini dört sunucu üzerinde adım adım ele alıyoruz. Öncelikle EOL durumuna düşmüş CentOS 7 sistemlerini centos2ol scripti ile Oracle Linux 7.9’a taşıdık. Ardından leapp upgrade aracı ile Oracle Linux 8.10’a yükselttik. Bunun yanı sıra, Grafana 8.x sürümünü 13.0.1’e güncelledik ve InfluxDB 1.8.10’un 1.x serisinin son kararlı sürümü olduğunu doğruladık. Sonuç olarak tüm sistemler sorunsuz çalışır hale geldi. Bununla birlikte süreç boyunca python-six çakışması, leapp repo hataları ve Grafana SQLite migration sorunları gibi engellerle karşılaştık; bu yazıda her birini nasıl aştığımızı da paylaşıyoruz.

Umarım bu rehber, CentOS Oracle Linux yükseltme konusunda sizlere yol gösterici olmuştur. Bunun yanı sıra, karşılaştığınız sorunlarda bu yazıyı referans olarak kullanabilirsiniz. Sonuç olarak sorularınız veya eklemek istedikleriniz varsa iletişim bölümünde buluşalım. Bir sonraki makalede tekrar görüşmek dileğiyle!