系统日志是记录系统中硬件、软件和系统问题的信息,同时还可以监视系统中发生的事件。用户可以通过它来检查错
误发生的原因,对于计算机来说,操作系统中会产生很多信息,这些信息即是我们观测系统运行当中发生事件的依据
。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日志系统非常重要。