web-dev-qa-db-ja.com

syslogにログをリダイレクトまたはコピーするsystemdユニットを取得するにはどうすればよいですか?

Node.jsサービスでUbuntu 16.04サーバーを実行しています。古き良きsyslogのように、ログをファイルに書き込む必要があります:)

私は半夜グーグルをしてきましたが、何も起きていません。

この奇妙なニーズの背後にある理由は、filebeatを介してログを収集し、ElasticSearchクラスターに送信することです。

3
Nicky Larstrup

ログを取得する必要があるサービスを開始した直後に、systemdを使用してjournalctlを実行する回避策が見つかりました。

Systemdサービススクリプトを追加して、「MyService」/etc/systemd/system/multi-user.target.wants/MyService-journalctl-to-log.serviceのログファイルを作成します。

[Unit]
Description=MyService journalctl parser to filebeat
#I needed to get a log file for filebeat to read
#Wants=filebeat.service
#After=filebeat.service

[Service]
Restart=always
RestartSec=5
ExecStart=/bin/sh -c '/bin/journalctl --no-tail -f -u MyService.service  > /var/log/MyService.log 2>&1'
ExecStartPre=/bin/journalctl --vacuum-size=10M

[Install]
WantedBy=multi-user.target

新しいsystemdサービスを有効にして開始します

systemctl enable MyService-journalctl-to-log.service
systemctl start MyService-journalctl-to-log.service
2
Nicky Larstrup