せっかく1号機、2号機(=暇を持て余している)の2台体制になっている Raspberry Pi なので、1号機から2号機へsyslog転送してみます。(2015-02-09)

本当の目的は、これ。

ごくごくまれに1号機がフリーズ(=勝手に再起動)することがあり、さらにsyslogをtmpgsに保存しているためログが確認できず、また、保存先が tmpfs ではなくSDカードだとしても、SDカードの書き込みは遅いため、ログが記録できていない可能性もあり、そのため、2号機へ転送(信頼性より速度重視のUDPによる通信)しておけばもしかしたら原因を記録できるかもしれない、という目論見(1号機はモニターレスで運用のため)。

ただし、意味不明のフリーズ~再起動は、最近はあまり見かけなくなった。なんでだろ。

とにかくやってみます。

(2015-03-19)先日とうとう発生しましたよ、フリーズが。 Raspberry Pi/フリーズした時のsyslog

2号機(受信側)の設定

まずは受信側から設定します。

  • UPDでログを受信可能にする
  • リモートから受信したものはローカルとは別のログファイルに格納
  • ログローテーションの対象にする

UDP受信
設定ファイル /etc/rsyslog.conf
変更内容

# diff rsyslog.conf.orig rsyslog.conf
16,17c16,17
< #$ModLoad imudp
< #$UDPServerRun 514
---
> $ModLoad imudp
> $UDPServerRun 514

ログファイルの分離
rsyslogの設定ファイルは /etc/rsyslog.d/ の下にも分割して置くことができるので、リモートから受信した場合の設定はこっちに置いてみます。

設定ファイル(新規) /etc/rsyslog.d/remote-syslog.conf ファイル内容

# receive from remote syslog
# created in 2015.02.09
:fromhost-ip, isequal, "192.168.1.20"	-/var/log/remote-syslog
& ~

補足:

  • /etc/rsyslog.d/ の下にファイルを作成する場合、拡張子は .conf にすること
  • 最後の行の 「& ~」は、直前の条件に一致したログを破棄する、という指示で、これがないと、一致したログがどんどん次の出力先へ重複してしまうらしいです。
  • /var/log/... の先頭の 「-」(マイナス)は、ファイル出力時にfsyncを呼ばない、つまりキャッシュとディスクの同期を毎回行わない、という意味で、このあたりは運用・好みに合わせて適宜変更してくださいませ。

最後に、設定を有効にするため、rsyslogdを再起動します。

# /etc/init.d/rsyslog restart

ログローテーション
前述の設定だけだと、リモートから受信したログファイルがどんどん肥大化してしまうので、ログローテーションの対象に入れてあげます。
(今回は rsyslog のテンプレート機能*1は使いませんでした:-)

設定ファイル /etc/logrotate.d/rsyslog 変更内容

# diff rsyslog.orig rsyslog
26a27
> /var/log/remote-syslog

1号機(送信側)の設定

次に送信側の設定を行います。

  • UPDでログを送信可能にする

設定ファイル /etc/rsyslog.conf ファイル内容

# diff rsyslog.conf.orig rsyslog.conf
61a62
> *.*;auth,authpriv,cron,mail,user.none      @192.168.1.21

補足:

  • 送信先ホストのアドレスの先頭にある 「@」 はUDPの意味。
    TCPを使う場合は「@@」

最後に、設定を有効にするため、rsyslogdを再起動します。

# systemctl restart rsyslog.service
(wheezy以前 は # /etc/init.d/rsyslog restart)

*1 ファイル名に年月日を入れたり、細かい条件を指定して保存できる。ローテーションも不要になる。けれど、古いログファイルを消してはくれないようだ。

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-04-02 (月) 15:44:24 (109d)