結局よくわからないままであるが何となく転送されたっぽいのでメモ
今、rsyslogでsyslogを転送しているのだが、もういい加減にsystemd-journalに移行したい。
でも転送方法がわからなくて色々やっていた。
systemd-jounarl-remote.serviceとsystemd-jounal-upload.serviceとか使えばよいのはわかっていたのだが、なんかうまくいってなかった。
受け取り側のサーバーにDNS名降っておく。syslog.daionet.gr.jpにしておく
両方のマシンにsystemd-journal-remoteをインストール
sudo apt install systemd-journal-remote
受け取り側で、
パッケージをローカル用にコピーして編集する。
systemctl edit systemd-journal-remote.service とかでもできそうな気がしたんだけど、overrideであって書き換えには向かないっぽい。
同じエントリが2つあると怒られてしまうので全部コピーして一部編集する。
# 直接/lib/systemd/system/を書き換えると、アップデートで全部消えるのでローカル用は/etc/systemdにコピーする仕様らしい
cp /lib/systemd/system/systemd-journal-remote.service /etc/systemd/system/
cp /lib/systemd/system/systemd-journal-remote.socket /etc/systemd/system/
/etc/systemd/system/systemd-journal-remote.service の [Service] 内の
ExecStart=/lib/systemd/systemd-journal-remote –listen-http=-3 –output=/var/log/journal/remote/
# –listen-https=-3 を –listen-http=-3にする
httpsにしたかったけどローカルだし証明書面倒だしとhttpにしてしまうことにした。
/etc/systemd/system/systemd-journal-remote.socket の [Socket] 内の
ListenStream=[2001:0db8::1]:19532
BindIPv6Only=yes
# ユニークローカルアドレスにするとかFWで守るとかして適当に保護。
# ListenStream=syslog.daionet.gr.jp:19532 とかやったらエラーになった。IPアドレスじゃないとダメっぽい
systemctl start systemd-journal-remote.socket
・ここは.serviceじゃなくて.socketを起動する。起動時有効にするのも.socket
送信側で、
/etc/systemd/journal-upload.conf
[Upload] URL=http ://syslog.daionet.gr.jp:19532
systemctl start systemd-journal-upload.service
これで受信側の/var/log/journal/remote にコピーされた。
全部のログをコピーしようとして異常に時間がかかったりしたので、あれこれやってなんとか切り抜けた(ぉ
と。2つのマシンからjournalをコピーできたのはいいのだが。
見る方法がわからないというオチが(滝汗
とりあえずjournalctl –merge _HOSTNAME=hoge で見れるっぽいのだが、なんだかなぁ。
blog書きながら調べてたらどうもjournalはコピーして使うというよりも、systemd-journal-gatewaydを使ってリモートに読む、が正解っぽい。
でも死んだときに手元にログ欲しかったりしないでもないんだけどなぁ。あとブラウザだとめんどい(ぉ
2017/11/16 追記
systemctl edit でうまく編集できない件について
ExecStartとかListenStreamが複数行あるのが問題だったのだが、空行入れると以前のがキャンセルされるらしい。
ので、override.confに
[Socket] ListenStream= ListenStream=[2001:0db8::1]:19532 BindIPv6Only=yes
と一旦キャンセルかけてから書けば良いっぽい。
日本語マニュアル欲しい……
コメントを残す