天天看點

linux日志管理

目錄

 rsyslog标簽&等級-------------------------------------标簽&日志等級

 通過logger指令記錄日志 -------------------------Logger

通過logrotate進行日志轉儲----------------------logrotate 日志轉儲

rsyslog詳解參考官網文檔---------------------------http://www.rsyslog.com/doc/v8-stable/configuration/index.html

rsyslog日志伺服器配置檔案示例---------Rsyslog 日志伺服器配置檔案示例

标簽&日志等級

———————————————————————-

auth       –pam産生的日志

authpriv   –ssh,ftp等登入資訊的驗證資訊

cron       –時間任務相關

kern       –核心

lpr         –列印

mail       –郵件

mark(syslog)–rsyslog服務内部的資訊,時間辨別

news       –新聞討論區

user       –使用者程式産生的相關資訊

uucp       –unix

to unix copy, unix主機之間相關的通訊

local

1~7   –自定義的日志裝置

debug      –有調式資訊的,日志資訊最多

info       –一般資訊的日志,最常用

notice     –最具有重要性的普通條件的資訊

warning    –警告級别

err         –錯誤級别,阻止某個功能或者子產品不能正常工作的資訊

crit       –嚴重級别,阻止整個系統或者整個軟體不能正常工作的資訊

alert      –需要立刻修改的資訊

emerg      –核心崩潰等嚴重資訊

none       –什麼都不記錄

=======================================================================================

Logger

用于往系統中寫入日志,syslog系統子產品的shell接口提供一個shell指令接口到syslog系統子產品

Logger 文法

logger

[-is] [-f file] [-p pri] [-t tag] [-u socket] [ message ... ]

-d, --udp

使用資料報(UDP)而不是預設的流連接配接(TCP)

-i,

--id  

     逐行記錄每一次logger的程序ID

-f,

--file file_name

     記錄特定的檔案

-h,

--help

     顯示幫助文本并退出

-n,--server

     寫入指定的遠端syslog伺服器,使用UDP代替内裝式syslog的例程

-P,--port

port_num

      使用指定的UDP端口。預設的端口号是514

-p,--priority

priority_level

      指定輸入消息的優先級,優先級可以是數字或者指定為 " facility.level" 的格式。

               比如:" -p local3.info " local3 這個裝置的消息級别為

info。預設級别是 "user.notice"

-s,--stderr

      輸出标準錯誤到系統日志。

-t,--tag

tag

      指定标記記錄

-u,--socket

socket

      寫入指定的socket,而不是到内置系統日志例程。

-V,

--version

      現實版本資訊并退出

Example

Logger -t

     "taskmq-worker" -p local3.info "test_info"

tail /var/log/messager

  Apr 28 03:43:05

ip-10-1-10-185 taskmq-woreker: test_info

寫入指定的log檔案

echo

      "local6.*   

      /var/log/test.log" > /etc/rsyslog.conf

/etc/init.d/rsyslog

      restart

logger -t

      "taskmq-worker" -p local6.info "test_info"

tail

      /var/log/test.log

    Apr 28 03:43:05

====================================================================================

logrotate 日志轉儲

logrotate 說明

logrotate 程式是一個日志檔案管理工具。用來把舊的日志檔案删除,并建立新的日志檔案,我們把它叫做“轉儲”。我們可以根據日志檔案的大小,也可以根據其天數來轉儲,這個過程一般通過 cron 程式來執行。logrotate程式還可以用于壓縮日志檔案,以及發送日志到指定的E-mail 

logrotate 配置

logrotate 預設配置檔案在/etc/logrostate.conf

參數 功能

compress

通過gzip 壓縮轉儲以後的日志

nocompress

不需要壓縮時,用這個參數

copytruncate

用于還在打開中的日志檔案,把目前日志備份并截斷

nocopytruncate

備份日志檔案但是不截斷

create

mode owner group 轉儲檔案,使用指定的檔案模式建立新的日志檔案

nocreate

不建立新的日志檔案

delaycompress

和 compress 一起使用時,轉儲的日志檔案到下一次轉儲時才壓縮

nodelaycompress

覆寫 delaycompress 選項,轉儲同時壓縮。

errors

address 專儲時的錯誤資訊發送到指定的Email 位址

ifempty

即使是空檔案也轉儲,這個是 logrotate 的預設選項。

notifempty

如果是空檔案的話,不轉儲

mail

address 把轉儲的日志檔案發送到指定的E-mail 位址

nomail

轉儲時不發送日志檔案

olddir

directory 轉儲後的日志檔案放入指定的目錄,必須和目前日志檔案在同一個檔案系統

noolddir

轉儲後的日志檔案和目前日志檔案放在同一個目錄下

prerotate/endscript

在轉儲以前需要執行的指令可以放入這個對,這兩個關鍵字必須單獨成行

postrotate/endscript

在轉儲以後需要執行的指令可以放入這個對,這兩個關鍵字必須單獨成行

daily

指定轉儲周期為每天

weekly

指定轉儲周期為每周

monthly

指定轉儲周期為每月

rotate

count 指定日志檔案删除之前轉儲的次數,0 指沒有備份,5 指保留5 個備份

tabootext [+] list 讓logrotate 不轉儲指定擴充名的檔案,預設的擴充名是:.rpm-orig,

.rpmsave, v, 和 ~ 

size

size 當日志檔案到達指定的大小時才轉儲,Size 可以指定 bytes (預設)以及KB (sizek)或者MB (sizem).

/var/log/wtmp{

monthly        每月轉儲一次

size 10M        當檔案大于10M轉儲

rotate 7         儲存最近的7次轉儲檔案

compress       壓縮轉儲檔案

notifempty     當檔案内容為空時,不要轉儲

========================================================================================

Rsyslog 日志伺服器配置檔案示例

====伺服器端配置======

$MaxMessageSize

128k

$ModLoad imuxsock.so

$ModLoad imklog.so

$ActionFileDefaultTemplate

RSYSLOG_TraditionalFileFormat

$SystemLogRateLimitInterval 0

$SystemLogRateLimitBurst 0

$ModLoad

imtcp

$InputTCPServerRun 514

# Standard System

Services

$template

DYNmessages,"/var/log/LOGS/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/messages"

DYNsecure,"/var/log/LOGS/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/secure"

$template DYNmaillog,"/var/log/LOGS/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/maillog"

DYNcron,"/var/log/LOGS/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/cron"

DYNspooler,"/var/log/LOGS/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/spooler"

DYNboot,"/var/log/LOGS/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/boot.log"

DYNiptables,"/var/log/LOGS/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/iptables.log"

$template DYNaudit,"/var/log/LOGS/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/audit.log"

DYNapache-access,"/var/log/LOGS/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/apache-access.log"

DYNapache-error,"/var/log/LOGS/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/apache-error.log"

DYNphp,"/var/log/LOGS/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/php.log"

DYNredis,"/var/log/LOGS/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/redis.log"

if $programname ==

'apache-access' then ?DYNapache-access

&~

if $programname == 'apache-error' then ?DYNapache-error

if $programname == 'audispd' then ?DYNaudit

if $programname == 'php' then ?DYNphp

if $programname == 'redis' then ?DYNredis

if $msg contains 'iptables:' then ?DYNiptables

if $syslogseverity

<= '6' and ( $syslogfacility-text != 'mail' and $syslogfacility-text !=

'authpriv' and $syslogfacility-text != 'cron' ) then ?DYNmessages

if

$syslogfacility-text == 'authpriv' then ?DYNsecure

$syslogfacility-text == 'mail' then -?DYNmaillog

$syslogfacility-text == 'cron' then ?DYNcron

if (

$syslogfacility-text == 'uucp' or $syslogfacility-text == 'news' ) and

$syslogseverity-text == 'crit' then ?DYNspooler

$syslogfacility-text == 'local7' then ?DYNboot

$MaxMessageSize 128k

$ModLoad imuxsock

$ModLoad imklog

$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat

$SystemLogRateLimitInterval

$WorkDirectory

/var/lib/rsyslog # where to place spool files

$ActionQueueFileName fwdRule1 # unique name prefix for spool

files

$ActionQueueMaxDiskSpace 1g   # 1gb space

limit (use as much as possible)

$ActionQueueSaveOnShutdown on # save messages to disk on

shutdown

$ActionQueueType LinkedList   # run

asynchronously

$ActionResumeRetryCount -1    # infinite

retries if host is down

*.* @@log.gtr8.com