Solusi Untuk Masalah Logger pada Zimbra 6.0.6 & SLES 10

Project pribadi saya saat ini adalah membuat Zimbra Appliance baik versi 32 bit maupun 64 bit berbasis SLES/openSUSE.

Zimbra 6.0.6 tersedia untuk SUSE Linux Enterprise 11 dan dapat digunakan pada openSUSE 11.x namun binary yang tersedia adalah versi 64 bit, sesuai rencana dari Zimbra mendorong penggunaan server-server 64 bit untuk menjalankan Zimbra. Meski demikian, karena sebagian besar pengguna komputer di Indonesia menggunakan mesin-mesin 32 bit, saya membuat Zimbra Appliance berbasis SLES 10 32 bit.

Proses instalasi berjalan lancar namun ada masalah pada Zimbra status dan logger problem. Service Zimbra semuanya running seperti terlihat pada screenshot berikut :

Namun jika membuka Zimbra Admin | Server Status atau Statistics, keluar pesan error sebagai berikut :

zmsoap -z GetLoggerStatsRequest stats/@name=zmmtastats | head -20 ERROR: service.FAILURE (system failure: Unable to read logger stats)

Masalah ini tidak terjadi pada Zimbra 6.0.6 yang berjalan pada SUSE Linux Enterprise 11. Setelah diskusi di forum openSUSE dan cari-cari dokumentasi di Zimbra forum, berikut adalah solusinya :

  1. Pastikan zmlogger stop. Jalankan perintah berikut :
    [code language=’cpp’]
    su – zimbra
    zmloggerctl stop
    ps ax | grep zmlogger
    [/code]
    Kalau masih ada zmlogger yang berjalan, lihat PID number dan stop dengan hak akses root (exit dari posisi Zimbra user) :
    kill -9 PIDNumber atau killall zmlogger
  2. Buat ulang file  database sqlite secara manual. Menggunakan hak akses root jalankan perintah berikut :
    [code language=’cpp’]
    rm -rf /opt/zimbra/logger/db/*
    /opt/zimbra/libexec/zmfixperms
    [/code]
    Kemudian berikan perintah :
    [code language=’cpp’]
    su – zimbra
    /opt/zimbra/libexec/zmlogger&
    [/code]
  3. Non aktifkan lagi zmlogger karena kita akan memodifikasi file syslog :
    [code language=’cpp’]
    zmloggerctl stop
    ps ax | grep zmlogger
    [/code]
    Kalau masih ada service yang running, stop dengan perintah kill -9 PIDNumber atau killall zmlogger
  4. Perbaiki file /etc/syslog-ng/syslog-ng.conf dengan perintah berikut (hak akses root) :
    [code language=’cpp’]
    service syslog stop
    mv /etc/syslog-ng/syslog-ng.conf /etc/syslog-ng/syslog-ng-backup.conf
    vi /etc/syslog-ng/syslog-ng.conf
    [/code]
    Kemudian paste kode berikut ini :
    [code language=’cpp’]
    #
    # /etc/syslog-ng/syslog-ng.conf
    #
    # Automatically generated by SuSEconfig on Sat May 1 17:40:24 UTC 2010.
    #
    # PLEASE DO NOT EDIT THIS FILE!
    #
    # you can modify /etc/syslog-ng/syslog-ng.conf.in instead
    #
    #
    #
    # File format description can be found in syslog-ng.conf(5)
    # and /usr/share/doc/packages/syslog-ng/syslog-ng.txt.
    #

    #
    # Global options.
    #
    options { long_hostnames(off); sync(0); perm(0640); stats(3600); };

    #
    # ‘src’ is our main source definition. you can add
    # more sources driver definitions to it, or define
    # your own sources, i.e.:
    #
    #source my_src { …. };
    #
    source src {
    #
    # include internal syslog-ng messages
    # note: the internal() soure is required!
    #
    internal();

    #
    # the following line will be replaced by the
    # socket list generated by SuSEconfig using
    # variables from /etc/sysconfig/syslog:
    #
    unix-dgram(“/dev/log”);
    unix-dgram(“/var/lib/named/dev/log”);

    #
    # uncomment to process log messages from network:
    #
    #udp(ip(“0.0.0.0”) port(514));
    };

    #
    # Filter definitions
    #
    filter f_iptables { facility(kern) and match(“IN=”) and match(“OUT=”); };

    filter f_console { level(warn) and facility(kern) and not filter(f_iptables)
    or level(err) and not facility(authpriv); };

    filter f_newsnotice { level(notice) and facility(news); };
    filter f_newscrit { level(crit) and facility(news); };
    filter f_newserr { level(err) and facility(news); };
    filter f_news { facility(news); };

    filter f_mailinfo { level(info) and facility(mail); };
    filter f_mailwarn { level(warn) and facility(mail); };
    filter f_mailerr { level(err, crit) and facility(mail); };
    filter f_mail { facility(mail); };

    filter f_cron { facility(cron); };

    filter f_local { facility(local0, local1, local2, local3,
    local4, local5, local6, local7); };

    filter f_acpid { match(‘^\[acpid\]:’); };
    filter f_netmgm { match(‘^NetworkManager:’); };

    filter f_messages { not facility(news, mail) and not filter(f_iptables); };
    filter f_warn { level(warn, err, crit) and not filter(f_iptables); };
    filter f_alert { level(alert); };

    #
    # Most warning and errors on tty10 and on the xconsole pipe:
    #
    destination console { pipe(“/dev/tty10” group(tty) perm(0620)); };
    log { source(src); filter(f_console); destination(console); };

    destination xconsole { pipe(“/dev/xconsole” group(tty) perm(0400)); };
    log { source(src); filter(f_console); destination(xconsole); };

    # Enable this, if you want that root is informed immediately,
    # e.g. of logins:
    #
    #destination root { usertty(“root”); };
    #log { source(src); filter(f_alert); destination(root); };

    #
    # News-messages in separate files:
    #
    destination newscrit { file(“/var/log/news/news.crit”
    owner(news) group(news)); };
    log { source(src); filter(f_newscrit); destination(newscrit); };

    destination newserr { file(“/var/log/news/news.err”
    owner(news) group(news)); };
    log { source(src); filter(f_newserr); destination(newserr); };

    destination newsnotice { file(“/var/log/news/news.notice”
    owner(news) group(news)); };
    log { source(src); filter(f_newsnotice); destination(newsnotice); };

    #
    # and optionally also all in one file:
    # (don’t forget to provide logrotation config)
    #
    #destination news { file(“/var/log/news.all”); };
    #log { source(src); filter(f_news); destination(news); };

    #
    # Mail-messages in separate files:
    #
    #destination mailinfo { file(“/var/log/mail.info”); };
    #log { source(src); filter(f_mailinfo); destination(mailinfo); };

    #destination mailwarn { file(“/var/log/mail.warn”); };
    #log { source(src); filter(f_mailwarn); destination(mailwarn); };

    #destination mailerr { file(“/var/log/mail.err” fsync(yes)); };
    #log { source(src); filter(f_mailerr); destination(mailerr); };

    #
    # and also all in one file:
    #
    #destination mail { file(“/var/log/mail”); };
    #log { source(src); filter(f_mail); destination(mail); };

    #
    # acpid messages in one file:
    #
    destination acpid { file(“/var/log/acpid”); };
    log { source(src); filter(f_acpid); destination(acpid); flags(final); };

    #
    # NetworkManager messages in one file:
    #
    destination netmgm { file(“/var/log/NetworkManager”); };
    log { source(src); filter(f_netmgm); destination(netmgm); flags(final); };

    #
    # Cron-messages in one file:
    # (don’t forget to provide logrotation config)
    #
    #destination cron { file(“/var/log/cron”); };
    #log { source(src); filter(f_cron); destination(cron); };

    #
    # Some boot scripts use/require local[1-7]:
    #
    destination localmessages { file(“/var/log/localmessages”); };
    log { source(src); filter(f_local); destination(localmessages); };

    #
    # All messages except iptables and the facilities news and mail:
    #
    destination messages { file(“/var/log/messages”); };
    log { source(src); filter(f_messages); destination(messages); };

    #
    # Firewall (iptables) messages in one file:
    #
    destination firewall { file(“/var/log/firewall”); };
    log { source(src); filter(f_iptables); destination(firewall); };

    #
    # Warnings (except iptables) in one file:
    #
    destination warn { file(“/var/log/warn” fsync(yes)); };
    log { source(src); filter(f_warn); destination(warn); };

    #
    # Enable this, if you want to keep all messages in one file:
    # (don’t forget to provide logrotation config)
    #
    #destination allmessages { file(“/var/log/allmessages”); };
    #log { source(src); destination(allmessages); };

    #filter f_local0 { facility(local0); }; # zimbra
    #destination zmail { file(“/var/log/zimbra.log” owner(“zimbra”) ); }; # zimbra
    #log { source(src); filter(f_mail); destination(zmail); }; # zimbra
    #destination local0 { file(“/var/log/zimbra.log” owner(“zimbra”) ); }; # zimbra
    #log { source(src); filter(f_local0); destination(local0); }; # zimbra
    #filter f_auth { facility(auth); }; # zimbra
    #destination zmauth { file(“/var/log/zimbra.log” owner(“zimbra”) ); }; # zimbra
    #log { source(src); filter(f_auth); destination(zmauth); }; # zimbra

    filter f_local0 { facility(local0); }; # zimbra
    filter f_local1 { facility(local1); }; # zimbra
    destination zmail { file(“/var/log/zimbra.log” owner(“zimbra”) ); }; # zimbra
    destination zmstats { file(“/var/log/zimbra-stats.log” owner(“zimbra”) ); }; # zimbra
    log { source(src); filter(f_mail); destination(zmail); }; # zimbra
    destination local0 { file(“/var/log/zimbra.log” owner(“zimbra”) ); }; # zimbra
    log { source(src); filter(f_local0); destination(local0); }; # zimbra
    log { source(src); filter(f_local1); destination(zmstats); }; # zimbra
    filter f_auth { facility(auth); }; # zimbra
    destination zmauth { file(“/var/log/zimbra.log” owner(“zimbra”) ); }; # zimbra
    log { source(src); filter(f_auth); destination(zmauth); }; # zimbra
    [/code]
    Kemudian simpan dengan menekan tombol ESC, :wq. Teruskan dengan mengaktifkan syslog kembali dengan perintah : service syslog start.

    Jika anda terhubung ke internet, cara berikut lebih sederhana :
    [code language=’cpp’]
    service syslog stop
    mv /etc/syslog-ng/syslog-ng.conf /etc/syslog-ng/syslog-ng-backup.conf
    cd /etc/syslog-ng/
    wget -c https://www.vavai.com/wp-content/uploads/syslog-ng-sles10-ok.conf
    mv syslog-ng-sles10-ok.conf syslog-ng.conf
    service syslog start
    [/code]

  5. Restart service Zimbra dnegan perintah :
    [code language=’cpp’]
    zmcontrol stop
    zmcontrol start
    [/code]

Error logger mestinya sudah tidak ada. Untuk service status, biasanya butuh waktu beberapa saat sehingga tanda silang status pada Zimbra Admin berubah. Jika statistics Zimbra Admin tidak menimbulkan error saat diklik, mestinya masalahnya sudah OK.

5 thoughts on “Solusi Untuk Masalah Logger pada Zimbra 6.0.6 & SLES 10

  1. Terima Kasih Pak Vavai, beberapa waktu yang lalu saya mendapat pesan error seperti pada Postingan ini, saat ini sudah Solved dengan mengikuti perintah-perintah pada postingan ini. Terima kasih

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.