分类: LINUX
2008-08-07 15:42:24
Linux 日志
磁针石
联系方式: gmail and gtalk: xurongzhong#gmail.com
*《鸟哥的 Linux 私房菜》之 “”
*主要日志文件:
/var/log/secure:
记录登入系统存取数据的档案,例如 pop3, ssh, telnet, ftp 等都会记录在此档案中;
/var/log/wtmp:
记录登入者的讯息数据,由于本档案已经被编码过,所以必须使用 last 这个指令来取出档案的内容;
/var/log/messages:
这个档案相当的重要,几乎系统发生的错误讯息(或者是重要的信息)都会记录在这个档案中;
/var/log/boot.log:
记录开机或者是一些服务启动的时候,所显示的启动或关闭讯息;
/var/log/maillog 或 /var/log/mail/*:
纪录邮件存取或往来(
sendmail 与 pop3 )的使用者记录;
/var/log/cron:
这个是用来记录 crontab
这个例行性服务的内容的!
/var/log/httpd, /var/log/news, /var/log/mysqld.log, /var/log/samba,
/var/log/procmail.log:
分别是几个不同的网络服务的记录文件啦!
* 针对 log 档案来设计的服务
syslogd:
进行系统或者是网络服务的登录文件记录工作;
logrotate:
将旧的数据更名,并且建立新的登录档, 以保持登录档的『新鲜』,并视设定将最旧的登录档删除。
*服务名称:
什么服务产生的讯息要被纪录的意思。syslog 认识的服务主要有底下这些:
auth, authpriv:主要与认证有关的机制,例如 telnet, login, ssh 等需要认证的服务都是使用此一机制;
cron:就是例行性命令 cron/at 等产生讯息记录的地方;
daemon:与各个 daemon 有关的讯息;
kern:就是核心 (kernel) 产生讯息的地方;
lpr:亦即是打印相关的讯息啊!
mail:只要与邮件收发有关的讯息纪录都属于这个;
news:与新闻群组服务器有关的东西;
syslog:就是 syslogd 这支程序本身产生的信息啊!
user, uucp, local0 ~ local7:与 Unix like 机器本身有关的一些讯息。
*讯息等级
info:仅是一些基本的讯息说明而已;
notice:比 info 还需要被注意到的一些信息内容;
warning 或 warn:警示的讯息,可能有问题, 但是还不至于影响到某个 daemon 运作的信息;基本上, info, notice, warn 这三个讯息都是在告知一些基本信息而已,应该还不至于造成一些系统运作困扰;
err 或 error :一些重大的错误讯息, 例如设定文件的某些设定值造成该服务服法启动的信息说明, 通常藉由 err 的错误告知,应该可以了解到该服务无法启动的问题呢!
crit:比 error 还要严重的错误信息,这个 crit 是临界点 (critical) 的缩写,这个错误已经很严重了喔!
alert:警告警告,已经很有问题的等级,比 crit 还要严重!
emerg 或 panic:疼痛等级,意指系统已经几乎要当机的状态! 很严重的错误信息了。 通常大概只有硬件出问题,导致整个核心无法顺利运作,就会出现这样的等级的讯息吧!
除了这些有等级的讯息外,还有两个特殊的等级,那就是 debug(错误侦测等级) 与 none (不需登录等级) 两个,当我们想要作一些错误侦测,或者是忽略掉某些服务的信息时,就用这两个吧!
. :代表『比后面还要高的等级(含该等级)都被记录下来』的意思, 例如: mail.info 代表只要是 mail 的信息,而且该信息等级高于 info (含 info 本身)时,就会被记录下来的意思。
.=:代表所需要的等级就是后面接的等级而已,其它的不要!
.!:代表不等于,亦即是除了该等级外的其它等级都记录。
讯息记录的文件名或装置或主机
档案的绝对路径:通常就是放在 /var/log 里头的档案啦!
打印机或其它:例如 /dev/lp0 这个打印机装置
使用者名称:显示给使用者啰!
远程主机:例如 @test.adsldns.org当然啦,要对方主机也能支持才行!
*:代表『目前在在线的所有人』,类似 这个指令的意义!
messages 这个档案需要记录所有的信息,但是就是不想要记录 cron, mail 及 news 的信息,有一下2种写法
*.*;news,cron,mail.none /var/log/messages
*.*;news.none;cron.none;mail.none /var/log/messages
* 让log显示在其他机器
接收端确认有如下配置:在/etc/services中有syslog 514/udp,在/etc/sysconfig/syslog 中有打开-r参数。-r 即允许接收其他机器的log。
发送端:*.* @192.168.1.100
* Log 轮转
配置文件位于/etc/logrotate.conf。
比如:
vi
/etc/logrotate.conf
# see "man logrotate" for details
# rotate log files weekly
weekly
# keep 4 weeks worth of backlogs
rotate 4
# create new (empty) log files after rotating old ones
create
# uncomment this if you want your log files compressed
#compress
# RPM packages drop log rotation information into this directory
include /etc/logrotate.d
# no packages own wtmp -- we'll rotate them here
/var/log/wtmp {
monthly
create 0664 root utmp
rotate 1
}
# system-specific logs may be also be configured here.
又如:
/etc/logrotate.d/syslog
/var/log/messages /var/log/secure /var/log/maillog /var/log/spooler /var/log/boot.log /var/log/cron {
sharedscripts
postrotate
/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
endscript
}
又如在cron里面添加:
30 3 * * * /usr/sbin/logrotate -s /usr/local/etc/logrotate.status /usr/local/etc/logrotate.conf
cat /usr/local/etc/logrotate.status
logrotate state -- version 2
"/usr/local/apache2/logs/access_log"
"/usr/local/apache2/logs/error_log"
"/usr/local/squid/var/logs/access.log"
"/usr/local/squid/var/logs/cache.log"
"/usr/local/squid/var/logs/store.log"
"/var/log/epg-php.log"
"/var/lib/mysql/slow_query.log"
"/var/lib/mysql/query.log"
cat /usr/local/etc/logrotate.conf
/usr/local/apache2/logs/access_log {
daily
rotate 10
copytruncate
compress
compressoptions -1
notifempty
missingok
lastaction
/usr/local/etc/rename_log.sh
endscript
}
/usr/local/apache2/logs/error_log {
weekly
size
rotate 10
copytruncate
compress
notifempty
missingok
}
/usr/local/squid/var/logs/access.log {
daily
size
rotate 10
copytruncate
compress
notifempty
missingok
}
/usr/local/squid/var/logs/cache.log {
size
rotate 10
copytruncate
compress
notifempty
missingok
}
/usr/local/squid/var/logs/store.log {
weekly
size
rotate 10
copytruncate
compress
notifempty
missingok
postrotate
/usr/local/squid/sbin/squid -k rotate
endscript
}
/var/log/epg-php.log {
weekly
size
rotate 10
copytruncate
compress
notifempty
missingok
}
/var/lib/mysql/slow_query.log {
size
rotate 10
copytruncate
compress
notifempty
missingok
}
/var/lib/mysql/query.log {
daily
size
rotate 10
copytruncate
compress
compressoptions -1
notifempty
missingok
}