Linux log 日志查看
其实,可以说成是监控系统的记录,系统一举一动基本会记录下来。这样由于信息非常全面很重要,通常只有 root 可以进行视察!通过登录文件(日志文件)可以根据屏幕上面的错误讯息与再配合登录文件的错误信息,几乎就可以解决大部分的 Linux 问题!所以日志文件异常重要,作为一个合格的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:分别是几个不同的网络服务的记录文件!
登录文件的纪录程序之一: syslogd
通常经过 syslog 而记录下来的数据主要有:
事件发生的日期与时间;
发生此事件的主机名称;
启动此事件的服务名称 (如 samba, xinetd 等) 或函式名称 (如 libpam ..);
该讯息数据内容
syslogd的daemon配置文件:/f
内容语法是这样的:
服务名称[.=!]讯息等级讯息记录的文件名或装置或主机
# 例如底下:
mail.info /var/log/maillog_info
服务名称:该服务产生的讯息会被纪录的意思。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 运作。
err 或 error :一些重大的错误讯息,这就要去原因了。
crit:比 error 还要严重的错误信息,crit 是临界点 (critical) 的缩写,已经很严重了!
alert:警告警告,已经很有问题的等级,比 crit 还要严重!
emerg 或 panic:疼痛等级,意指系统已经几乎要当机的状态!很严重的错误信息了。
除了这些有等级的讯息外,还有两个特殊的等级,那就是 debug(错误侦测等级) 与none (不需登录等级) 两个,当要作一些错误侦测,或者是忽略掉某些服务的信息时,就用这俩!
在讯息等级之前还有 [.=!] 的连结符号!他代表的意思是:
. :代表比后面还要高的等级(含该等级)都被记录下来的意思,例如:mail.info 代表只要是 mail 的信息,而且该信息等级高于 info (含info )时,就会被记录下来。
.=:代表所需要的等级就是后面接的等级而已!
.!:代表不等于。
日志文件记录的文件名或装置或主机常见的放置处:
文件的绝对路径:通常就是放在 /var/log 里头的文件!
打印机或其它:例如 /dev/lp0 这个打印机装置(即使被黑客可以删除掉日志文件,但是最终删除不了打印出来的日志信息)
使用者名称:显示给使用者!
远程主机:例如 @,要对方主机也能支持才行!
*:代表目前在线的所有人,类似 wall 这个指令的意义!
看看在尚未开启网络服务的情况下来自 Fedora Core Release 4 的相关资料
[root@linux ~]# vi /f
#kern.* /dev/console
# 只要是 kernel 产生的讯息,全部都送到 console 去!默认是关闭的。
*.;; /var/log/messages
# 在已知各服务的讯息中,不要记录到这个文件中,把已知的服务记录到单独的日志文件中去,方便日后查询,否则messages这个文件就太混乱了。这个文件非常重要,所有未知的信息都会被记录在这个文件中,所以有问题,这个文件就八九不离十了。
authpriv.* /var/log/secure
# 这个就是经过一些身份确认的行为之后,需要记录身份的文件。
mail.* -/var/log/maillog
# 只要跟 mail 有关的(不论是 pop3 还是 sendmail )都会被纪录到这个文件!
cron.* /var/log/cron
#例行性命令相关的。
*.emerg *
# 任何时候发生的警告讯息都会显示给在线的所有人!那个*就是目前在线的所有人。
rotate属性it /var/log/spooler
# 记录新闻错误高于 crit 的等级的信息,写入 spooler 当中!
local7.* /var/log/boot.log
# 将开机的当中的讯息写入 /var/log/boot.log 中!
每个版本的 f 差异是很大的,所以,每个登录文件记录的数据其实不很固定。
例:让所有的信息都额外写入到 /var/log/admin.log!
[root@linux ~]# vi /f
*.info /var/log/admin.log 》》如果服务器硬盘容量够大,这么做也不失为一个良策。
[root@linux ~]# /etc/init.d/syslog restart
[root@linux ~]# ll /var/log/admin.log
-rw------- 1 root root 122 Oct 23 22:21 /var/log/admin.log 》》注意权限
一台主机管理多台主机登录文件
# 1. 先取得 port number 的信息!
[root@linux ~]# grep 514 /etc/services
syslog 514/udp 》》syslog的固定端口
# 注意,/etc/services 里面必须要存在这一行才行,否则自行手写!
# 2. 修改 syslogd 的启动配置文件
[root@linux ~]# vi /etc/sysconfig/syslog
#SYSLOGD_OPTIONS="-m 0" 改成底下这样子
SYSLOGD_OPTIONS="-m 0 -r"
# 3. 重新启动与观察 syslogd !
[root@linux ~]# /etc/init.d/syslog restart
[root@linux ~]# netstat -tlunp
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
udp 0 0 0.0.0.0:514 0.0.0.0:* 24314/syslogd
Linux 主机已经可以接收来自其它主机的登录信息了!client 端的设定就简单了!只要指定某个信息传送到这部主机即可!比如,登录文件主机 IP 为 192.168.1.100 ,而client 端希望所有的数据都送给主机,可以在 /f 里面新增这样的一行:
[root@linux ~]# vi /f
*.* @192.168.1.100
未来主机上面的登录文件当中,每一行的主机名称就会显示来自不同主机的信息了。
登录文件服务程序之二,轮滚 (logrotate):
所谓的 logrotate ,就是将旧的 log 文件更名,然后建立一个空的 log 文件,
如此一来,新的 log 文件将从零开始记录,然后只要将旧的 log 文件留下一段时间!旧的纪录保存了一段时间没有问题,那么就可以让系统自动的将他删掉,否则占用硬盘空间。如图比如规定了message 日志文件轮滚3次:
最初的日志文件 message
轮滚一次后 message message1
轮滚二次后 message message1 message2
轮滚三次后 message message1 message2 message3 》》删除(如果再次轮滚,message3就会被删除,而message2就会变成message3,且系统会新建立一个message)
注意,相同颜的mssage表示的是一个内容的文件,只不过每次轮滚他的名字后面会改一次数字。
logrotate 的配置文件
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论