syslog/rsyslog
Ubuntu
(Debian
系)のログは、慣例として/var/log
に配置する。
各種サーバープログラムやカーネルなどが生成するシステムログメッセージは、syslog/rsysrogデーモンによって集中的に管理されます(図 9.1)。ログメッセージの生成元や優先度に応じて分類され、設定ファイルで指定された出力先に送り出されます。
なお、Apache HTTP ServerやSambaのように、syslog/rsyslogに頼らず独自にログを扱うサービスもあります。
syslog/rsyslogでは、ネットワークを介して別のホストにログメッセージを送ることもできます。つまり、ログサーバーを用意してログを集中的に管理できるわけです(図 9.2)。
「Linuxサーバーセキュリティ徹底入門」(中島能和) p.164
ログメッセージは、生成元を表すファシリティと優先度を表すプライオリティからタグ付けされる。
syslog
は、プロトコルとアプリケーション(デーモン)を指す場合がある。
RFC 3164
で定義されたsyslogプロトコル
syslogd
(アプリケーション)現在、アプリケーションとしてのsyslog
は使われることが少ない。
代わりにsyslogプロトコル
を満たしてsyslog
を改善した、以下のアプリケーションが使われる。
rsyslog
syslog-ng
rsyslog
、syslog-ng
ともにデータベースへログを出力できる。
Ubuntu 18.0.4ではrsyslog
が使われている。
ubuntu@ip-10-0-0-200:~$ type rsyslogd
rsyslogd is /usr/sbin/rsyslogd
rsyslogの設定ファイルは、/etc/rsyslog.conf
。
rsyslog.conf
ファイルは、個々の設定を/etc/rsyslog.d/
から読み込む。
# Include all config files in /etc/rsyslog.d/
#
$IncludeConfig /etc/rsyslog.d/*.conf
デフォルトの設定ファイル(/etc/rsyslog.d/50-default.conf
)を編集して、Cronの結果を/var/log/cron.log
へ出力する。
# 50-default.conf
...
auth,authpriv.* /var/log/auth.log
*.*;auth,authpriv.none -/var/log/syslog
- # cron.* /var/log/cron.log
+ cron.* /var/log/cron.log
#daemon.* -/var/log/daemon.log
kern.* -/var/log/kern.log
#lpr.* -/var/log/lpr.log
mail.* -/var/log/mail.log
#user.* -/var/log/user.log
...
rsyslogd
を、再起動する。
$ sudo service rsyslog restart
Cron
の設定で、メールアドレスおよびリダイレクションを設定していないとき場合に、ログは/var/log/cron.log
へ出力される。
loggerコマンドは、syslogにログ情報を渡す。 (以下の例では、ubuntuユーザーでログインしていることを前提とする)
$ logger -p mail.info "Hello mail"
オプションp
はpriorityを表してファシリティ.プライオリティ
という形式で指定(例ではファシリティがmail、プライオリティがinfo)
オプションが省略された場合はuser.noticeが指定されたことになる。
$ tail -f /var/log/mail.log
......
2018-12-15T08:01:30.617404+00:00 ip-10-0-0-200 ubuntu: Hello mail <-- 追加
エラーをログへ出力する。
https://github.com/s-hiroshi/note/blob/master/php/php5.html#%E3%83%AD%E3%82%AE%E3%83%B3%E3%82%B0
https://dabiyone.com/misc/mia021.html#autox5
log_errors
がログを残すかどうか(offにする理由は思いついかな)error_log
はログの出力先(デフォルトはApacheのログ /var/log/apache2/error.log
)display_errors
は画面にエラーを表示するか(offであってもlog_errors
がonならログファイルには残る)error_reporting
はログファイルおよび画面表示の両方の出力レベルに影響; Apacheモジュール版PHP
; /etc/php/7.2/apache2/php.ini
log_errors = On
; ...
error_log = /var/log/php/error.log
log_errors = On
かつerror_log
に出力先ファイル名が設定されていないときは、/var/log/syslog
へ出力される。
# /etc/apache2/sites-enabled/000-default.conf
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
/var/log/mysql/error.log
古いログはerror.log.1.gz
のように圧縮されていくが、どのような基準で圧縮されるかは要確認。
*/5 * * * * echo `date` >> /var/log/cron/log.log
https://qiita.com/moneymog/items/16d2f843c344a5ace51a
/etc
|
|- /etc/logrotate.conf
|
|- /etc/logrotate.d
|
|- alternatives
|- apache
|- ...
|- rsyslog
|- ...
rsyslogの設定を確認
$ less /etc/logrotate.d/rsyslog
/var/log/syslog
{
rotate 7
daily
missingok
notifempty
delaycompress
compress
postrotate
/usr/lib/rsyslog/rsyslog-rotate
endscript
}
/var/log/mail.info
/var/log/mail.warn
/var/log/mail.err
/var/log/mail.log
/var/log/daemon.log
/var/log/kern.log
/var/log/auth.log
/var/log/user.log
/var/log/lpr.log
/var/log/cron.log
/var/log/debug
/var/log/messages
{
rotate 4
weekly
missingok
notifempty
compress
delaycompress
sharedscripts
postrotate
/usr/lib/rsyslog/rsyslog-rotate
endscript
}