Linux系统日志管理

Linux系统日志管理

        系统日志:操作系统本身和大部分服务器程序的日志文件,记录系统产生的各种事务,在某个时间点发生了什么以及发生的原因。一般默认保存在 /var/log/ 目录下

  • /var/log/messages:保存了内核还有公共消息日志(所有的服务控制日志都在这里),包括启动错误,IO错误,网络错误,程序故障等,这是最常看的日志。
  • /var/log/cron:执行计划任务产生的日志
  • /var/log/secure:系统记录用户认证的安全信息日志

        这些系统日志由Linux自带的 rsyslog 系统服务进行统一管理,rsyslog 的配置在 /etc/rsyslog.conf 内。

        第三方程序使用自带的日志,系统 /var/log/messages 内只会记录第三方服务的控制日志(开启,关闭,重启等),对于业务日志(访问记录,访问报错等)都由第三方程序自己保存。

日志级别

总共 0-7 八个级别,数字越小,优先级越高,消息越重要

  • 0 EMERGE,紧急:会导致主机系统不可用的情况
  • 1 ALERT,警告:必须马上采取措施解决的问题,比如非法入侵,账号被篡改等
  • 2 CRIT,严重:比较严重的情况,比如磁盘满了,内存不够等
  • 3 ERR,错误:程序运行时的错误信息,需要尽快修复
  • 4 WARING,提醒:可能会影响系统功能,需要用户注意的事项,比如根目录 inode 耗尽
  • 5 NOTICE,注意:不会影响正常功能,但是是一些需要注意的事件,不需要处理
  • 6 INFO,信息:正常的系统运行产生的信息
  • 7 DEBUG 调试信息,一般是调试程序时产生的一些信息
  • none 无优先级,不会记录任何消息

优先级可以由开发者自定义

如何自定义系统日志的一些规则

先看一下系统日志的配置文件,/etc/rsyslog.conf,主要看从46行开始的 RULES,也就是 规则。

这一句是什么意思?

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


mail,authpriv这些是设备字段,表示日志的来源

常用的设备字段:

  • auth:用户认证产生的日志
  • authpriv:远程登录产生的验证信息
  • ftp:FTP服务产生的日志
  • mail:邮件产生的日志
  • cron:定时任务产生的日志
  • kern:系统内核的日志
  • user:用户进程的日志
  • syslog:系统日志

.info,.none这些表示具体的日志等级

相关规则如下:

  • mail.info 表示的是mail的 info 及以上级别的日志,也就是0-6级别的日志
  • mail.=info 明确了日志级别,只有 info 级别的日志才会记录
  • mail.!info 表示除了 info 级别,其他级别的日志都要记录
  • mail.* 表示所有级别的日志都要记录
  • mail.info;user.notice 表示 mail 的 info 及以上级别的日志和 user 的 notice 及以上级别的日志都要记录
  • mail.none 表示 mail 的日志不需要记录
  • local 表示自定义服务,范围是 local0 - local7 ,支持在 rsyslog.conf 这个文件中对应 local 等级,自定义把相关进程添加到系统日志的配置当中

/var/log/messages 这些表示前面日志的存储位置

所以这句话的意思是:将除了 mail 相关日志,authpriv 相关日志,cron 相关日志以外所有 info 及以上级别的日志都存储在 /var/log/messages 中。

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

实验1:将远程连接的服务日志单独存放
  1. 首先找到 ssh 配置的文件,默认在 /etc/ssh/sshd_config,看下原本的设置是这样的:

    当有人使用 SSH 登入系统的时候,SSH 会记录信息,这个信息要记录的类型默认为AUTHPRIV。
  2. 此时我们添加一行设置

    保存退出,此时 SSH 登录的日志会被记录为 LOCAL6 类型
  3. 然后我们再进入 /etc/rsyslog.conf,在 begin forwarding rule 之前添加一句

    这表明将 local6 类型的所有级别的日志存放到 /var/log/ssh.log 内
  4. 重启一下相关服务
  5. 最后我们远程登陆一下看看效果

    没有毛病
实验二:把本机的日志文件存储到指定的服务器上
  1. 先对本机 /etc/rsyslog.conf 进行配置

    192.168.79.11是我想要存储日志文件的目标服务器的IP地址
    @@表示强制使用TCP协议传输数据
  2. 将TCP传输的端口打开(把注释取消掉就行)
  3. 重启一下服务,接着看一下端口号有没有正常开启
  4. 将服务器的TCP传输的端口也打开,同样进行检查

  5. 用 logger 命令在本机上测试一下
  6. 本机的 /var/log/messages 上并没有记录

    服务器上的 /var/log/messages 上有记录

    没有毛病
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值