linux下的日志系统管理

      日志文件


日志文件是一个管理员长接触的一个东西。简单的说日志文件就是记录系统活动信息的几个文件,例如:时间,地点(IP),什么用户,做了什么操作等等信息都会被记录下来。而这些信息就是日志。

   日志文件很重要,在解决系统方面的错误上。解决网络服务的问题。举例来说。如果无法启动邮件服务器。那么查询一下/var/log/maillog 通常可以得到不错的回答。

rsyslog 服务:专门去记录各个进程所产生的日志。

linux下常见的日志文件名。

/var/log/cron     记录定时任务

/var/log/dmesg      记录开机时内核检测过程时的信息

/var/log/lastlog      记录系统上面所有账号的最后一次登录系统的相关信息 

/var/log/maillog与/var/log/mail/*      记录邮件往来的

/var/log/messages     记录系统发生的错误(或者重要信息,比如服务关闭)

/var/log/secure     只要牵涉输入账号密码的软件,登录时都会被记录

/var/log/wtmp与/var/log/faliog  记录正确登录系统者的账户信息


这里有很多后面接日期的文件。这其实是为了避免日志文件过大。而采用的日志轮替。日志轮询的配置文件在

/etc/logrotate.conf里面

下面介绍一下日志的配置文件。/etc/rsyslog.conf  (我用的是Centos7.   7以前的应该是 syslog.conf)。


这就要引出日志类型和日志等级的概念了,那什么是日志类型和日志等级呢

服务名称[.=!]信息等级            信息记录的文件的设备或主机

mail.info                                  /var/log/maillog_info


这一行说明,mail服务产生的大于等于info等级的信息。都记录到后面的文件中


服务类型                                        

auth                 主要和认证有关的机制。如login。ssh。su 等需要密码的

cron                 例行调用的

daemon            与各个daemon有关的信息

kern                  就是内核产生信息的地方

lpr                     与打印相关的信息

mail                  与邮件相关

news                与新闻组服务有关的



服务等级           服务名称

1 info仅仅是一些基本的说明信息

2 notice除了info外还需要注意的一些信息

3 warning警示问题,还不至于影响某个服务进程

4 err一些重大的问题,如某个配置文件写错了,导致每个服务起不来

5 crit比err还严重(蓝色警戒)

6 alert比蓝色警戒还严重的红色警戒(red alert 红警的共和国之辉) 

7 emerg系统就要挂了,留个遗言


.    代表就记录该等级及其等级以后的信息

.= 代表就需要后跟的等级了

.!  代表除了该等级都记录


linux下的日志系统管理_第1张图片

路径前面加个横杠是异步写入的意思,就是先在内存里放一下再写入硬盘


这就是配置文件中所记录的信息。

<span style="font-size:18px;"># Log anything (except mail) of level info or higher.
 53 # Don't log private authentication messages!
 54 *.info;mail.none;authpriv.none;cron.none                /var/log/messages
 55 *.info;                                                 /tmp/log
 56 # The authpriv file has restricted access.
 57 authpriv.*                                              /var/log/secure</span>

这里我添加了将日志信息再记录到/tmp/log 里,配置完了之后用systemctl  restart  rsyslog

可以添加日志被记录的地点!



看!日志被记录到了/tmp/log里了。


日志可以有多种的记录方式。比如记到某个文件内。如上图,或通过“|” 管道传递给其他的命令处理。

传给终端  如  /dev/console

@host      传给远程的主机

用户         传给系统用户

* 登录到系统上的所有用户。emerg就是这样定义的


下面来演示一下将日志传给另一台主机储存。(这个功能很常用,因为如果公司某台主机被攻破后一般,黑客第一件事就是删掉自己进来的信息。但只要将日志传给另一台主机就安全了)


linux下的日志系统管理_第2张图片

上图,我将所有信息的所有级别的日志都传送给100这台主机。因为防火墙有可能会阻挡,所以先用systemctl stop firewalld 这条命令将防火墙暂时关闭一下,  再重启一下日志服务 使用systemctl reload rsyslog 。这下我就需要去配置一下接收日志的那台主机了。


下图是另一台主机的配置,将同一个配置文件的第15,16行的注释去掉。就好了(主机名一样。。我一会改一下,但这真是另一台主机)。然后同样的操作。重启日志服务。和暂时关闭防火墙



这下就好了,让我们来看看。接收端主机接收到的日志(主机名改好了)



看看,localhost的日志都被发过来了,注意,终端上面,主机名是recvhost,是接收主机哦。


日志分析
systemd-journald 日志分析进程


journalctl 日志分析命令


journalctl -n 5 查看最近生成的5条日志
journalctl -f           查看最近生成的10条信息(动态的) 和  tail -f  /var/log/messages 一个效果
journalctl -p err 查看系统报错
journalctl --since --until   查看某个时间段生成的日志  
           --"22:20:11" --"23:00:00"
    "[YYYY-MM-DD]" "[hh:mm:ss]"


journalctl -o verbose 查看日志能够使用的条件参数


journalctl _UID= 进程uid
_PID= 进程id
_GID= 进程gid
_HOSTNAME= 进程所在主机
_SYSTEMD_UNIT= 服务名称
_COMM= 命令名称


对systemd-journalctl管理
日志监控工具的设定


默认情况下journalctl是无法看到关机之间产生的日志的
如果向检测到这类日志设置如下
[root@serverX ~]#mkdir /var/log/journal
[root@serverX ~]#chown root:systemd-journal /var/log/journal
[root@serverX ~]#chmod 2755 /var/log/journal
Send the USR1 signal to the systemd-journald or reboot serverX.
[root@serverX ~]#killall -1 systemd-journald
[root@serverX ~]#ls /var/log/journal/4513ad59a3b442ffa4b7ea88343fa55f
system.journal user-1000.journal

(这个的原理还是不太清楚。。。。)


你可能感兴趣的:(服务器,管理,运维)