lsyncdのログをsystemdへ出力しない

どうも、こんにちは、ディーネットの山田です。
今回はlsyncdのログがsystemdに標準出力されるのを抑制する方法について紹介します。
はまったこととしては、lsyncdで定期的にファイルの同期を行うように設定したのはいいが
lsyncd用のログファイルとは別にlsyncdがsystemdにログを標準出力するためmessages
にも同じログが埋まっていきログを肥大化させることがありました。
この事象は、systemdが使われているCentOS7系で発生しCentOS6系では起きていなくて
対処方法について記載します。

現状の確認からやってきます

環境情報

  • OS: CentOS Linux release 7.4.1708 (Core)
  • lsyncd: lsyncd-2.2.2-1.el7.x86_64

    設定ファイル

    # cat /etc/lsyncd.conf
    settings {
    logfile         = "/var/log/lsyncd/lsyncd.log",
    statusFile      = "/var/tmp/lsyncd",
    maxProcesses    = 4,
    nodaemon        = false,
    statusInterval  = 1,
    insist          = 1
    }
    sync {
    default.rsync,
    source          = "/demo1/",
    target          = "/demo2/",
    delete          = false,
    rsync           = {
    archive = true,
    verbose = true,
    owner = true,
    group = true,
    perms = true,
    times = true
    }
    }
    

    ⇒"/demo1/"配下を"/demo2/"配下に同期するような設定です。

    lsyncdのログ確認

    # cat /var/log/lsyncd/lsyncd.log
    Wed Jun  6 09:52:07 2018 Normal: Calling rsync with filter-list of new/modified files/dirs
    /hogehoge2
    /
    Wed Jun  6 09:52:07 2018 Normal: Finished a list after exitcode: 0
    

    ⇒同期されたことが確認出来ますね

    systemdにも標準出力されることを確認

    # systemctl status lsyncd
    ● lsyncd.service - Live Syncing (Mirror) Daemon
    Loaded: loaded (/usr/lib/systemd/system/lsyncd.service; disabled; vendor preset: disabled)
    Active: active (running) since 火 2018-06-05 18:17:51 JST; 15h ago
    Main PID: 4783 (lsyncd)
    CGroup: /system.slice/lsyncd.service
    mq4783 /usr/bin/lsyncd -nodaemon /etc/lsyncd.conf
    6月 06 09:52:07 localhost lsyncd[4783]: sending incremental file list
    6月 06 09:52:07 localhost lsyncd[4783]: ./
    6月 06 09:52:07 localhost lsyncd[4783]: hogehoge2
    6月 06 09:52:07 localhost lsyncd[4783]: sent 86 bytes  received 34 bytes  240.00 bytes/sec
    6月 06 09:52:07 localhost lsyncd[4783]: total size is 0  speedup is 0.00
    
    # cat /var/log/messages | grep "lsyncd:"
    Jun  6 09:52:07 localhost lsyncd: sending incremental file list
    Jun  6 09:52:07 localhost lsyncd: ./
    Jun  6 09:52:07 localhost lsyncd: hogehoge2
    Jun  6 09:52:07 localhost lsyncd: sent 86 bytes  received 34 bytes  240.00 bytes/sec
    Jun  6 09:52:07 localhost lsyncd: total size is 0  speedup is 0.00
    

    ⇒ログを見るのが楽しい人ならいいけど、不要な人は少しでも省きたい。

    systemdに出力しない方法は?

  • lsyncdのserviceファイルに手を加えていきます

    変更箇所

    # vi /usr/lib/systemd/system/lsyncd.service
    [Unit]
    Description=Live Syncing (Mirror) Daemon
    After=network.target
    [Service]
    Type=simple
    EnvironmentFile=-/etc/sysconfig/lsyncd
    ExecStart=/usr/bin/lsyncd -nodaemon $LSYNCD_OPTIONS
    StandardOutput=null
    [Install]
    WantedBy=multi-user.target
    

    ⇒"StandardOutput=null"を追記して下さい。

    設定の再読み込み

    # systemctl daemon-reload
    

    lsyncdの再起動

    # systemctl restart lsyncd
    

    これで、systemdには標準出力されなくなったはずなので、実際のログを確認していきましょう。

    設定変更後のログ確認

    lsyncdのログ確認

    # cat /var/log/lsyncd/lsyncd.log
    Wed Jun  6 10:10:47 2018 Normal: Calling rsync with filter-list of new/modified files/dirs
    /hogehoge3
    /
    Wed Jun  6 10:10:47 2018 Normal: Finished a list after exitcode: 0
    

    ⇒こちらのログは、抑制対象外なので出力されているので問題なし

    systemdにも標準出力されることを確認

    # systemctl status lsyncd
    ● lsyncd.service - Live Syncing (Mirror) Daemon
    Loaded: loaded (/usr/lib/systemd/system/lsyncd.service; disabled; vendor preset: disabled)
    Active: active (running) since 水 2018-06-06 10:07:16 JST; 4min 5s ago
    Main PID: 6474 (lsyncd)
    CGroup: /system.slice/lsyncd.service
    mq6474 /usr/bin/lsyncd -nodaemon /etc/lsyncd.conf
    6月 06 10:07:16 localhost systemd[1]: Started Live Syncing (Mirror) Daemon.
    6月 06 10:07:16 localhost systemd[1]: Starting Live Syncing (Mirror) Daemon...
    
    # cat /var/log/messages | grep "lsyncd:"
    

    ⇒怖いぐらい何も出なくなりましたね

    備考

    あっそうそう、運用上の経験からですが"lsyncd-2.1.5-6.el7.x86_64"の場合
    systemdにログが出力されないように、shellで無理やりlsyncdからの標準出力を
    捨てているみたいです。
    がしかし、lsyncdでのファイル同期が頻繁過ぎるとshellで扱えるメモリを超過したり
    メモリリークが発生することが見受けられるので、悩んでいる方はまず最新版にアップ
    デートしましょう。
    バグレポートが報告されてます。
    https://bugzilla.redhat.com/show_bug.cgi?id=1369274

    sh: /usr/bin/sh: xrealloc: cannot allocate 18446744071562067968 bytes (24576 bytes allocated)
    

    のようなログが出てlsyncdがプロセスダウンする方は必見です。。。

返信を残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA