Contents

Apa itu Red X?
Pernahkah kalian mendapati beberapa service zimbra berstatus tidak aktif di halaman admin console, padahal jika kalian cek menggunakan perintah “zmcontrol status” lewat CLI, service-service tersebut sudah aktif berjalan.
Bahkan sudah kalian coba untuk merestart service-service tersebut, namun tetap saja service-service tersebut terlihat tidak aktif di halaman admin console.
Itulah yang disebut sebagai Red X. Sebenarnya permasalahan Red X Services ini tidak akan mengganggu fungsi-fungsi utama zimbra, karena sebenarnya service-service yang terlihat tidak aktif tersebut sudah aktif dan berjalan dengan normal.
Pemahaman
Sebelum memulai troubleshoot ada baiknya kita pahami dahulu alur zimbra dalam mengambil status dari tiap-tiap service.
By default proses status logging dijadwalkan berjalan setiap 2 menit sekali dalam crontab, mengeksekusi perintah zmstatuslog untuk mendapatkan laporan service status dari tiap server menggunakan zmcontrol status. kemudian laporan tersebut akan diteruskan ke syslog untuk di-log ke facility level1 (/var/log/zimbra-stats.log).
Proses selanjutnya dilanjutkan oleh zmlogger yang dijalankan melalui zmloggerctl untuk kemudian mem-parse informasi dari zimbramon dan mailboxd yang terdapat pada file /var/log/zimbra-stats.log, zmlogger membaca sqlite database untuk menentukan tipe dari tiap stat counter dan mappings ke file database RRD yang telah ditentukan.
Troubleshooting
Eliminasi kesalahan-kesalahan umum
Ada beberapa faktor umum yang sering jadi penyebab terjadinya permasalahan ini, seperti:
1. Konfigurasi waktu dan timezone salah
Kesalahan dalam konfigurasi waktu dan timezone juga dapat menjadi masalah, mengingat peran waktu dan timezone sebagai penunjuk waktu dalam proses logging sangat penting.
Pastikan konfigurasi waktu dan timezone kalian benar
1 2 3 |
zdump /etc/localtime <zona-waktu> |
Jika belum terkonfigurasi dengan benar, konfigurasikan dengan perintah ini
1 2 3 |
timedatectl set-timezone <zona-waktu> |
Gunakan server NTP jika tersedia
1 2 3 |
timedatectl ntp-servers <server-ntp> && timedatectl set-ntp yes |
2. Konten crontab user zimbra kosong atau telah berubah
Seperti yang sudah kita bahas sebelumnya, banyak program di zimbra berjalan mengandalkan cron schedular termasuk proses status logging zmstatuslog.
Untuk melihat konten crontab user zimbra jalankan perintah ini
1 2 3 |
crontab -u zimbra -l |
Jika kalian menemukan konten dari crontab tersebut kosong atau telah diubah sebelumnya, kalian bisa menggunakan cara ini untuk mengembalikan konten dari crontab seperti semula (default)
Pertama-tama buat file cron.zimbra di direktori /tmp
1 2 3 |
touch /tmp/cron.zimbra |
Selanjutnya copy konten dari semua file di direktori /opt/zimbra/conf/crontabs/ ke file /tmp/cron.zimbra
1 2 3 |
for content in /opt/zimbra/conf/crontabs/crontab*; do cat "${content}" >> /tmp/cron.zimbra; done |
Terapkan file /tmp/cron.zimbra sebagai crontab yang baru
1 2 3 |
crontab -u zimbra /tmp/cron.zimbra |
1 2 3 |
zmschedulebackup -D |
Jangan lupa untuk merestart service cron-nya
1 2 3 |
systemctl restart cron.service |
3. Service syslog (rsyslog atau syslog) tidak aktif
Service syslog sangat dibutuhkan untuk proses system loging, untuk itu penting untuk memastikan servicenya telah aktif berjalan.
Jalankan perintah ini untuk melihat status dari service rsyslog atau syslog
1 2 3 |
systemctl status <rsyslog.service|syslog.service> |
Jika servicenya belum aktif, gunakan perintah ini untuk mengaktifkannya
1 2 3 |
systemctl enable --now <rsyslog.service|syslog.service> |
Selain itu, pastikan module imudp pada rsyslog atau syslog telah diaktifkan.
Uncomment baris di bawah ini untuk mengaktifkan module imudp jika kalian menggunakan rsyslog di distro berbasis Debian
1 2 3 4 |
module(load="imudp") input(type="imudp" port="514") |
Atau baris di bawah ini jika kalian menggunakan rsyslog di distro berbasis RedHat
1 2 3 4 |
$ModLoad imudp $UDPServerRun 514 |
Atau jika kalian menggunakan syslog, kalian bisa mengedit file /etc/sysconfig/syslog, lalu tambahkan “-r” pada pengaturan SYSLOGD_OPTIONS
1 2 3 |
SYSLOGD_OPTIONS="-r -m 0" |
Simpan perubahan, lalu restart service syslog atau rsyslognya
1 2 3 |
systemctl restart <syslog.service|rsyslog.service> |
Jika masalah belum teratasi, cobalah untuk menginisialisasi ulang database zimbra_logger dengan perintah ini
1 2 3 |
/opt/zimbra/libexec/zmloggerinit |
Jika kalian menjalankan multi-server, jalankan perintah ini di semua server untuk menginisialisasi ulang zimbra ssh key supaya antar server bisa saling berkomunikasi
1 2 3 |
zmsshkeygen |
1 2 3 |
zmupdateauthkeys |
Isolasi
Jika masalah masih belum terselesaikan, ada beberapa hal yang dapat kalian coba untuk dapat menemukan sumber masalah
1. Cek syslog atau rsyslog system
Pastikan zimbra dapat mem-parse data di log secara benar dan teratur. Cobalah untuk menjalankan perintah ini
1 2 3 |
watch zmsoap -z GetServiceStatusRequest |
Pastikan nilainya terus berubah, jika tidak artinya “data is stale”
2. Cek konfigurasi zimbraLogHostname
Jika kalian menjalankan multi-server, cek konfigurasi zimbraLogHostname dan pastikan valuenya mengarah ke server tempat zimbra logger diinstall
1 2 3 |
zmprov gacf | grep zimbraLogHostname |
Jika terdapat kesalahan konfigurasi pada salah satu atau beberapa server, jalankan perintah ini di server tersebut untuk mengubah value zimbraLogHostname
1 2 3 |
zmprov mcf zimbraLogHostname <nama-host-logger-monitor> |
jalankan perintah ini untuk menginisialisasi ulang zimbra ssh key supaya antar server bisa saling berkomunikasi
1 2 3 |
zmsshkeygen |
1 2 3 |
zmupdateauthkeys |
3. Gunakan system logger yang lain
Zimbra mensupport system logger syslog dan rsyslog, jadi cobalah untuk menggunakan system logger selain yang saat ini terinstal pada OS kalian. Karena terkadang salah satu system logger (syslog atau rsyslog) dapat bekerja lebih baik untuk salah satu OS.
Jangan lupa untuk mematikan salah satu system logger yang tidak terpakai.
1 2 3 |
systemctl stop <syslog.service|rsyslog.service> |
Jalankan perintah ini
1 2 3 |
/opt/zimbra/libexec/zmsyslogsetup |
4. Jalankan script secara manual
Cobalah untuk menjalankan script secara manual; dalam kasus ini zmstatuslog
1 2 3 |
/opt/zimbra/libexec/zmstatuslog |
Reproduce
Jika masalah berhasil teratasi, cobalah untuk memunculkan masalahnya kembali lalu perbaiki dengan cara yang sama. Praktik ini dilakukan untuk memastikan bahwa solusi yang diterapkan benar-benar dapat menyelesaikan masalah.