天天看点

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