日志系统

系统日志是记录系统中硬件、软件和系统问题的信息,同时还可以监视系统中发生的事件。用户可以通过它来检查错

误发生的原因,对于计算机来说,操作系统中会产生很多信息,这些信息即是我们观测系统运行当中发生事件的依据

。linux系统中用来管理日志的两种日志服务器:syslog、syslog-ng。
 1.在redhat5上使用的是syslog,syslog是一个服务专门提供负责记录日志功能的系统日志,其配置文件

是/etc/syslog.conf;syslog包含两个进程:syslogd,klogd;syslogd进程专门负责记录非内核产生的日志信息;
 klogd进程是专门负责记录内核产生的日志信息;
var/log/messages:系统标准错误日志信息;非内核产生的引导信息,各子系统产生的信息,该文件记录信息最多,在系统运行时间长了以后该文件会非常大,会定时滚动。
var/log/maillog:邮件系统产生的日志信息
var/log/secure:记录有所有登录或尝试登录信息,普通用户没有权限查看。
kernel初始化时的所有日志信息都将由klogd负责,一旦控制权由内核转交给/sbin/init后,日志信息都将由syslogd

来负责,除非是与内核相关的信息。kernel初始化时因还没有虚拟终端,所有信息都显示在物理终端(/dev/console)

上,系统初始化完成后内核产生的所有日志信息都将被记录在/var/log/dmesg文件中,可使用如下命令查看内核信息

:dmesg   或  cat /var/log/dmesg 
2.syslog配置文件注释
1. -------------------------------------------------------- 
2. 配置文件定义格式为: facility.priority  action  
3. facility,可以理解为日志的来源或设备目前常用的facility有以下几种:  
4.     auth                # 认证相关的  
5.     authpriv            # 权限,授权相关的  
6.     cron                # 任务计划相关的  
7.     daemon              # 守护进程相关的 比如:httpd 工作在后台的 
8.     kern                # 内核相关的  
9.     lpr                  # 打印相关的  
10.     mail                 # 邮件相关的  
11.     mark                 # 标记相关的  
12.     news                 # 新闻相关的  
13.     security            # 安全相关的,与auth 类似   
14.     syslog               # syslog自己的  
15.     user                 # 用户相关的  
16.     uucp                 # unix to unix cp 相关的  
17.     local0 到 local7     # 用户自定义使用  
18.     *                   # *表示所有的facility  
19. 因此syslog支持的facility就是上面几个,这几个几乎包含了所有子系统的日志来源 
20. ------------------------------------------------------- 
21. --------------------------------------------------------- 
22. priority(log level)日志的级别,一般有以下几种级别(从低到高)  
23.     debug           # 程序或系统的调试信息【级别越低,记录的日志越详细,同时会导致硬盘工作超负荷】 
24.     info            # 一般信息 
25.     notice          # 不影响正常功能,需要注意的消息  
26.     warning/warn    # 可能影响系统功能,需要提醒用户的重要事件  
27.     err/error       # 错误信息  
28.     crit            # 比较严重的 【相当于发出蓝色警报】 
29.     alert           # 必须马上处理的 【相当于发出橙色警报】 
30.     emerg/panic     # 会导致系统不可用的 【相当于发出红色警报】 
31.     *               # 表示所有的日志级别  
32.     none            # 跟* 相反,表示什么也不记录  
33. -------------------------------------------------------- 
34. ------------------------------------------------------    
35. action(动作)日志记录的位置  
36.     系统上的绝对路径    # 普通文件 如: /var/log/xxx  
37.     |                   # 管道  通过管道送给其他的命令处理  
38.     终端              # 终端   如:/dev/console  
39.     @HOST               # 远程主机 如: @10.0.0.1       
40.     用户              # 系统用户 如: root  
41.     *                   # 登录到系统上的所有用户,一般emerg级别的日志是这样定义的  
42. -------------------------------------------------------- 
43. --------------------------------------------------------- 
44. 定义格式例子:  
45. mail.info /var/log/mail.log # 表示将mail相关的,级别为info及info以上的级别记录

到/var/log/mail.log文件中  
46.                               # info以上级别的信息记录到/var/log/mail.log文件中  
47. auth.=info  @172.16.0.1       # 表示将auth相关的,只把info的信息记录到172.16.0.1主机上 
48.                               # 前提是172.16.0.1要能接收其他主机发来的日志信息  
49. user.!=error                  # 表示记录与用户相关的,除了error级别的之外的日志信息  
50. user.!error                   # 表示记录与用户相关的,比error级别低的日志信息 
51. *.info                        # 表示记录所有的日志信息的info和info以上级别的日志信息  
52. mail.*                        # 表示记录邮件相关的所有级别的日志信息  
53. *.*                           # 表示记录所有的日志信息的所有级别的日志信息  
54. cron.info;mail.info           # 表示记录cron和mail相关的info级别的日志信息,多个日志来源可以

用";" 隔开  
55. cron,mail.info                # 与cron.info;mail.info 是一个意思  
56. mail.*;mail.!=info            # 表示记录mail相关的所有级别的信息,但是不包括info级别的 
57. ---------------------------------------------------------
3、 分析/etc/logrotate.conf配置文件
1. --------------------------------------------------------- 
2. # see "man logrotate" for details 
3. # rotate log files weekly 
4. weekly       ---定义每周更新一次日志文件 
5. 
6. # keep 4 weeks worth of backlogs 
7. rotate 4     ---定义保留4个版本,超出这个版本数就会被清除 
8.              ---比如:messages messages.1 messages.2 messages.3 messages.4 
9. # create new (empty) log files after rotating old ones 
10. create       ---滚动完成之后,生成新的一个空的日志文件 
11. 
12. # uncomment this if you want your log files compressed 
13. #compress 
14. 
15. # RPM packages drop log rotation information into this directory 
16. include /etc/logrotate.d     ---日志文件同时还依赖于这个文件,在/etc/logrotate.d中每个文件定义

一个子系统的日志滚动机制 
17. # no packages own wtmp -- we'll rotate them here 
18. /var/log/wtmp {              ---指定一个日志文件 
19.     monthly                   --按月滚动,如果全局定义了滚动时间,这个日志文件也定义了滚动时间

,就以这个日志文件为主,如果全局定义了滚动时间,日志文件没定义滚动时间,就以全局为主 
20.     minsize 1M               ---最小为1M 
21.     create 0664 root utmp    ---创建一个新的文件,权限为0664,属主为root,日志文件名为utmp 
22.     rotate 1                 ---保留1个历史版本 
23. } 
24. /var/log/btmp { 
25.     missingok 
26.     monthly 
27.     minsize 1M 
28.     create 0600 root utmp 
29.     rotate 1 
30. } 
31. # system-specific logs may be also be configured here. 
32. ---------------------------------------------------------
4、 分析/etc/syslog.conf配置文件
1. ------------------------------------------------------- 
2. # Log all kernel messages to the console. 
3. # Logging much else clutters up the screen. 
4. #kern.*                                                 /dev/console 
5. 
6. # Log anything (except mail) of level info or higher. 
7. # Don't log private authentication messages! 
8. *.info;mail.none;authpriv.none;cron.none                /var/log/messages 
9. ---除了mail,authpriv,cron之外所有facility产生的info以及info以上的级别都放在/var/llog/messages 
10. # The authpriv file has restricted access. 
11. authpriv.*                                              /var/log/secure 
12. ---跟用户授权相关的所有级别都记录在/var/log/secure文件中 
13. # Log all the mail messages in one place. 
14. mail.*                                                  -/var/log/maillog 
15. ---跟邮件相关的所有级别都记录在/var/log/maillog文件中,此处的“-”表示异步写入,不会同时写入到

磁盘上去 
16. 
17. # Log cron stuff 
18. cron.*                                                  /var/log/cron 
19. ---跟cron相关的所有级别都记录在/var/log/cron文件中 
20. # Everybody gets emergency messages 
21. *.emerg                                                 * 
22. ---表示记录所有的日志信息的emerg以上的级别通知在线的每一个用户赶紧保存文件,电脑要挂了(相当于

向每一个用户发出红色警报) 
23. # Save news errors of level crit and higher in a special file. 
24. uucp,news.crit                                          /var/log/spooler 
25. ---表示与uucp和news相关的crit和crit以上级别记录在/var/log/spooler文件中 
26. # Save boot messages also to boot.log 
27. local7.*                                                /var/log/boot.log 
28. ---用户自定义的跟引导相关的所有级别都记录在/var/log/boot.log文件中 
29. 
30. 同时我们也可以在/etc/syslog.conf中定义,定义后不会立即生效 
31. service syslog restart【使用restart时,会影响其他日志系统正在向syslog发送信息,一般不建议重启】

 
32. service syslog reload【使用reload时,不用让服务重启就能读取配置文件并同时生效,相当于1信号】 

日志对于安全或者运维来说,非常重要,记录了系统每天发生的各种各样的事情,你可以通过他来检查错误发生的原因,或者受到攻击时攻击者留下的痕迹。他还可以实时的监测系统状态,监测和追踪侵入者等等。所以理解linux日志系统非常重要。
 

你可能感兴趣的:(日志)