日志系统

日志系统:操作系统在运行过程中会产生很多信息,这些信息可以让我们观察系统运行当中正常的一种途径或者手段,也为我们提供了当发生故障的时候定位问题所在的必要信息,类似于航海日志,事实上任何一个操作系统都提供了强大的日志系统,用于记录各子系统运行当中的各种信息

详细信息程序:程度不同,定义了日志级别(定义不同的日志信息)每一个子系统都有可能产生日志信息,我们通常定义去记录日志信息的时候要指明记录哪一个子系统所产生的的信息,同样还有交代明白多大级别以及多大级别以上的所有级别的信息,还有指明信息记录在什么地方。

子系统:产生日志的子系统—》facility,设施

syslog-ng:下一代的升级版日志系统,开源版本

syslog:是一个服务,专门提供用于记录日志的功能,可以为各程序负责记录日志的,可以把每个程序理解为子系统。也受chkconfig的控制,也有两个服务分别是syslogd和klogd,它们两个可以独立成一个系统:

chkconfig --list syslog

service syslog status

syslogd:系统,记录非内核产生的日志信息

klogd:内核,专门负责记录内核产生的日志信息,配置文件在/etc/

kernel-->物理终端(/dev/console)-->/var/log/dmesg

BIOS把控制权转交给kernel后,内核施行初始化,初始化当中会产生很大信息,内核把信息传送给物理终端,只要内核能识别,都能在屏幕上显示出来

dmesg:专门负责打开文件,并显示出来的

cat /var/log/dmesg #也可以查看与dmesg类似

日志需要滚动(日志切割):本来我们有一个messages过了2天之后,这个文件非常大了,我们打开大文件是非常占内存的,每隔一周它会把它原来的messages重命名为message.1,再重新开一个新的messages,以此类推。

/sbin/inità有syslogd记录的日志信息

/var/log/messages:系统标准错误日志信息;非内核产生引导信息;各子系统产生的信息

/var/logmaillog:邮件系统出生年的日志信息

/var/log/secure:用户登录信息

日志系统的配置文件cd /etc/logrotate.d/

运程日志的使用方法:修改配置文件

vim /etc/syslog.conf(修改配置文件)编辑日志信息

service syslog reload(立即生效)相当于信号1,但是为了确保起见,最好重启服务:service syslog restart

# Log all kernel messages to the console.

# Logging much else clutters up the screen.

#kern.* /dev/console

# Log anything (except mail) of level info or higher.

# Don't log private authentication messages!

*.info;mail.none;authpriv.none;cron.none /var/log/messages

# The authpriv file has restricted access.

authpriv.* /var/log/secure

# Log all the mail messages in one place.

mail.* @172.16.100.1

所有的日志信息都发送到172.16.0.1这台主机上了

# Log cron stuff

cron.* (要想改cron的话,把* 改为info 即可 /var/log/cron

# Everybody gets emergency messages

*.emerg *

# Save news errors of level crit and higher in a special file.

uucp,news.crit /var/log/spooler

# Save boot messages also to boot.log

local7.* /var/log/boot.log

vim /etc/sysconfig/syslog

# Options to syslogd

# -m 0 disables 'MARK' messages.

# -r enables logging from remote machines

# -x disables DNS lookups on messages recieved with -r

# See syslogd(8) for more details

注意:SYSLOGD_OPTIONS="-r -m 0"(加上-r)可以作为日志服务器,能够接受其他主机发来的日志信息,并记录到本机上

配置文件定义格式为: facility.priority action

***  facility,可以理解为日志的来源或设备,目前常用的facility有以下几种:

auth                    # 认证相关的

authpriv              # 权限,授权相关的

cron                    # 任务计划相关的

daemon               # 守护进程相关的

kern                     # 内核相关的

lpr                        # 打印相关的

mail                      # 邮件相关的

mark                     # 标记相关的

news                      # 新闻相关的

security                   # 安全相关的,与auth 类似

syslog                      # syslog自己的

user                         # 用户相关的

uucp                        # unix to unix cp 相关的

local0 到 local7       # 用户自定义使用

* # *                         表示所有的facility

priority(log level)日志的级别,一般有以下几种级别(从低到高)

debug                                   # 程序或系统的调试信息

info                                     # 一般信息

notice                                   # 不影响正常功能,需要注意的消息

warning/warn                       # 可能影响系统功能,需要提醒用户的重要事件

err/error                                # 错误信息

crit                                        # 比较严重的

alert                                       # 必须马上处理的

emerg/panic                            # 会导致系统不可用的

*                                            # 表示所有的日志级别

none                                       # 跟* 相反,表示啥也没有

action(动作)日志记录的位置

系统上的绝对路径 # 普通文件 如: /var/log/xxx

| # 管道 通过管道送给其他的命令处理

终端 # 终端 如:/dev/console

@HOST # 远程主机 如: @10.0.0.1

用户 # 系统用户 如: root

* # 登录到系统上的所有用户,一般emerg级别的日志是这样定义的

定义格式例子:

mail.info /var/log/mail.log # 表示将mail相关的,级别为info及 info以上级别的信息记录到/var/log/mail.log文件中

auth.=info @10.0.0.1 # 表示将auth相关的,基本为info的信息记录到10.0.0.1主机上去 前提是10.0.0.1要能接收其他主机发来的日志信息

user.!=error                                 # 表示记录user相关的,不包括error级别的信息

user.!error                                     # 与user.error相反

*.info                                            # 表示记录所有的日志信息的info级别

mail.*                                         # 表示记录mail相关的所有级别的信息

*.*

cron.info;mail.info                                 # 多个日志来源可以用";" 隔开

cron,mail.info                                # 与cron.info;mail.info 是一个意思

mail.*;mail.!=info                               # 表示记录mail相关的所有级别的信息,但是不包括info级别的

是不是对你很有收获啊,嘿嘿,以后会有更多更新内容的!