syslogのローテーション設定について詳しく教えてください

このQ&Aのポイント
  • FreeBSD上でsyslogのローテーションを設定する方法を教えてください
  • ローテーションは毎日午前0時に行われ、ログファイルのファイル名は syslog.log.2006-06-11.gz のように運用されます
  • 現在はnewsyslogを使用してローテーションを行っており、管理者権限の制限はありません
回答を見る
  • ベストアンサー

syslogのローテーション設定

FreeBSD上でsyslogのローテーションを設定しています。 ローテーションは毎日午前0時に行い、それが正常に ログファイルのファイル名を syslog.log.2006-06-11.gz (つまりsyslog.log.(ログローテーションを実行した前日の日付)) のように運用したいと思っています。 何かアイデアがありましたらお教えください。 今のところ、ローテーションにはnewsyslogを使用しています。 ローテーション自体は問題なく動作していますが、ファイル名の 変更処理がわかりません。 また自分は当該サーバの管理者ですので、やれることに 権限上の制限はありません。 よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • galluda
  • ベストアンサー率35% (440/1242)
回答No.1

がると申します。 似たような状況でlogをローテートしているbashのバッチファイルを記載してみます。 ちと対象ファイル、ファイル名の命名規則など異なるかと思うので、適宜アレンジしてください。 なにかの参考にでもなれば幸いです。 #!/bin/bash DATE=`/bin/date +%Y%m%d`_ DIR=/var/log for file in syslog access_log http_error_log do cp $DIR/$file $DIR/bak/$DATE$file cat /dev/null > $DIR/$file done

inter10
質問者

お礼

ありがとうございます。教えていただいた内容を基に、以下のスクリプトを書いてみました。これを毎日0:01に走らせることで目的の処理を実現できました。 YESTERDAY=`TZ=JST+15 /bin/date +%Y-%m-%d` DIR=/var/log LOGFILE=`find /var/log/syslog.log.0.gz -cmin -3` if [ $DIR/syslog.log.0.gz = $LOGFILE ] ; then cp $LOGFILE $DIR/ARCHIVE/syslog.log.$YESTERDAY.gz && \ rm $LOGFILE && \ find $DIR/ARCHIVE -name 'syslog.log.*.gz' -mtime '+94' -exec rm -r {} \;

関連するQ&A

  • LINUXのsyslog.conf

    現在LINUXサーバーをログ収集サーバーとして運用をしようと しているのですが、うまく外部からのsyslogを受け取ってくれません (OSをFreeBSDにするとうまくいきます) なにかsyslog.confに追記しないといけないのでしょうか? よろしくお願いします。 サーバーOS:RedHatLinux7.0J クライアント側syslog.confに「*.debug @servername」と 記述しています。

  • syslog-ngのdestination fileについて

    お世話になります。この度、御教授いただきたく書き込みさせていただきました。何卒宜しく御願いいたします。 ◆環境 ・CentOS(4.4)でsyslog-ng(1.6)を動作。 ・とある機器からsyslogを受信。 ◆症状 対象機器からのsyslog(514)を受け設定ファイルに指定しているdestination fileに保存は出来るのですが、書き込まれる際にファイルの権限が変更されてしまいます。 具体的には 1.destination file=taisho.log(644) ※taisho.log(644)ファイルはroot権限で作成。 2.対象機器からログを受信、syslog-ngによりtaisho.logファイルにログが書き込まれる。 3.書き込み成功。ただしファイル権限がtaisho.log(600)に変更。 上記症状はsyslog-ngのサービスを再起動するたびに起こります。 ※chmod 644 taisho.log で元に戻した場合、syslog-ngを再起動しない限り権限は"644"のままです。 お忙しいと思いますが、ご教授のほど宜しく御願いいたします。

  • Sys::Syslogモジュールでsyslogを出力したい

    以下の様なスクリプトでsyslogを出力したいのですが、出力することができません。どなたかご教授ください。 環境は vine2.6r4 perl5.6.1 で、/etc/syslog.confにlocal4.* /var/log/hoge.logを追加後、syslogdを再起動しました。 プログラムを実行するとhoge.logファイルは出力されます。 また、logger -p local4.err messageでhoge.logにmessageが出力されることも確認済みです。 ------------- #!/usr/bin/perl -w use strict; use Sys::Syslog qw(:DEFAULT setlogsock); # 実行ファイル名の取得 my ($prog_name) = $0; $prog_name =~ s/(.*)\/(.*)/$2/; # Sys::Syslogモジュールの引数 my($ident, $logopt, $facility); my($ident) = $prog_name; my($logopt) = 'ndelay'; my($facility) = 'local4'; # 処理開始 &put_syslog("info", "process start."); sub put_syslog { my($priority, $msg) = @_; openlog($ident, $logopt, $facility) || die "put_syslog: can't open syslog\n"; syslog($priority, $msg); closelog(); }

    • ベストアンサー
    • Perl
  • logrotateで圧縮のみ実施したい。

    アプリケーションログのログ圧縮について悩んでます。 ログローテーション自体はアプリが行っているのですが圧縮が行えておらず容量の逼迫する場合があり是正のためにログ圧縮の自動化を考えております。 ログのローテーションは行わずに圧縮のみは可能でしょうか? 現状のログではなく日付付きのファイルのみを圧縮したいと考えております

  • syslogの出力先追加

    syslogの出力先を追加する方法について教えていただきたいです。 使用環境は、Red Hat系のLinuxです。 現状、syslog.confの設定が下記のようになっているため、messagesファイルに syslogが大量に出力され、必要なログを探すのが大変な状態です。 syslog.confの中身 *.info;mail.none;authpriv.none;cron.none /var/log/messages authpriv.* /var/log/secure mail.* /var/log/maillog cron.* /var/log/cron *.emerg * uucp,news.crit /var/log/spooler local7.* /var/log/boot.log そこでfacilityのlocal0-7を使用し、syslogに出力するファイルを分散 させようと考えています。 例えば、local0の出力先を追加するのは、syslog.confを下記のように 修正すればよいでしょうか。 (実際に試せばよいのでしょうが、多くの人達が使用している環境のため、  syslogd再起動が出来ない状態です。) messagesの設定 修正前:*.info;mail.none;authpriv.none;cron.none /var/log/messages 修正後:*.info;mail.none;authpriv.none;cron.none;local0.none /var/log/messages local0の設定 追加:local0.* /var/log/ファイル名 ご回答の方、よろしくお願いします。

  • daemon.logについて

     syslogd当たりが吐いてくれているであろう、daemon.logなのですが、通常は正常にロ ギング出来ています。しかしながら、ある日/var/logディレクトリをのぞいてみると 「#daemon.log#」という頭とお尻に#がついたファイルが存在しいて、中身は通常の daemon.logの中途半端なようなものになっていました。日付は2005年1月7日とだいぶ古い 物で、当該日にシステム異常があったのかどうか記憶も定かではありません。このファイ ルはどういったときに作成される物なのでしょうか?  またdaemon.logはcronのスケジューリングでのログ整理でdaemon.log.0→ daemon.log.1.gz→daemon.log.2.gz→daemon.log.3.gzと整理されていきますが、最も古 いログファイルのアーカイブであるdaemon.log.3.gzにはせいぜい1ヶ月前ぐらいのしか残 っていません。それ以前のログは消されてしまうのでしょうか? 環境 Debian GNU/Linux 3.0 Woddy kernel 2.4.26-1-686 sysklogd 1.4.1-10

  • ログ管理

    ftpサーバーのログファイルにログが記載されないトラブルにみまわれております。 /etc/xinetd.d/vsftpd は、 service ftp { ... log_type = SYSLOG local3 ... } と設定しまして、 /etc/syslog.conf には、 ... local3.* /var/log/ftpd.log ... と設定し、 /var/log ディレクトリに、アクセス制限が644の所有者及びグループがrootのファイル ftpd.log を作成しました。 以下の設定で、デーモンとシステムログを以下のように再起動させました。 #service xinetd reload #service syslog reload これで、ftpサーバーにアクセスしたら、/var/log/ftpd.log にログが残ると思ったのですが、ログが記録されません。 上記の手順では不備があるのでしょうか。 問題解決の答えないしヒントを教えてください。

  • cronとlogrotateについて

    今、ログのローテーションをやってみたのですが、 logrotate.confとlogrotate.dおよび/etc/crontab、 /etc/cron.daily の中で、/etc/logrotate.confの「weekly」を 「daily」のみ修正してみました。 上記でやってみたのですが、「messages.1」のようにログファイルが 作成されませんでした。 何か他にやらないとできないのでしょうか。 サービス:crondとsyslogなどのサービスはちゃんと起動しております。

  • 削除バッチ方法を教えてください

    Aフォルダの中のあるファイルのみを残し、他のファイルを削除するバッチorDOSコマンドを教えてください? ログファイルを削除するために上記のような仕様でバッチ作成したいのですが、いろいろと調べていますが、わかりません。 ファイル名を見て削除したいと考えています。 ログのファイル形式は、年日付時刻ABCファイルとなり、当日と前日のログだけを残して、他のログを削除したいのですが、、、 宜しくお願いします。

  • Clam Antivirusの設定について

    CentOS上でClam Antivirusをインストールしたのですが、 ログのローテーションの設定が分かりません。 教えていただけないでしょうか。 http://centos.server-manual.com/centos5_clamav.htmlを参考にして設定をしました。 以下のログローテーション設定の部分ですが、この結果が現在clamscan.log-20120801というように 月単位のファイルでしか一覧にありません。 もしDailyで見たい場合を教えていただけませんでしょうか。 以下の2つを変更すれば良いのでしょうか? monthly→dailyに変更 rotate 4→rotate 7に変更 [root@centos ~]# vi /etc/logrotate.d/clamscan ↓下記を記入 /var/log/clamav/clamscan.log { monthly rotate 4 missingok } あと以下の設定につきましても変更する必要がありますでしょうか? [root@centos ~]# vi /etc/cron.weekly/clamscan ↓下記を記入 #!/bin/bash yum -y update clamd > /dev/null 2>&1 /usr/bin/freshclam > /dev/null /usr/bin/clamscan -i -r --remove /home >> /var/log/clamav/clamscan.log 2>&1