日志系统rsyslog

一曲冷凌霜 提交于 2021-02-02 00:35:20

    写在前面的话:


        最近在看一本书,叫效率读书,其中讲述了两种思维,一种是发散性思维,一种是专注性思维,当我们在专注做一件事的时候,其实能持续的时间不是很长,大约在25分钟左右,如果时间过长,那么就会消耗很大,这个时候可以想想其他的事来分散一下注意力,也就是使用发散性思维,一般我是洗个澡,感觉洗了之后,思维比较清晰,各位也可以试试。


    

1、 前言

在操作系统中,存在着各种各样的事件,那么用什么来记录这些事件发生的时间和相关信息呢?那么就会用日志系统rsyslogRHEL6.X)。

2 日志系统

RHEL5.X的时候,使用的服务如下所示:

[root@testDB ~]#ps -ef|grep -E "syslogd|klogd"RHEL5.X记录日志信息服务

root      2994    1  0 Sep06 ?        00:00:01 syslogd -m 0记录非内核产生的信息

root      2997    1  0 Sep06 ?        00:00:00 klogd -x记录kernel产生的信息

RHEL6.X的时候,使用的服务如下所示:

[root@rsyncserverscripts]# ps -ef|grep rsyslogdRHEL6.X记录日志信息服务

root      1662    1  0 01:17 ?        00:00:00 /sbin/rsyslogd -i/var/run/syslogd.pid -c 4

RHEL6.X的时候,使用一个服务来记录相关子系统的信息,并且内核产生的信息也是使用服务rsyslog来进行记录,在查看配置文件的时候,可以看到加载了相关的模块,从而使用模块来进行动态的加载,从而写入相关的日志信息。

2.1 内核信息记录

内核产生的记录,最主要的就是写入到如下文件中:

[root@rsyncserverscripts]# ls -l /var/log/dmesg内核信息boot.messages启动信息

-rw-r--r-- 1root root 20395 Nov  1 00:42 /var/log/dmesg

在进行启动系统的时候,每次dmesg文件都会被清空,然后重新写入,会将相关的启动信息写入到此文件中。

在内核产生其他信息的时候,一个是写入到物理终端中,也就是设备/dev/console,另外一个就是写入dmesg文件。

[root@rsyncserver~]# less dmesg查看开机启动信息

[root@rsyncserver~]# tail -f /var/log/dmesg查看内核最近产生的日志信息

platformmicrocode: firmware: requesting intel-ucode/06-2a-07

microcode: CPU3sig=0x206a7, pf=0x1, revision=0x0

platformmicrocode: firmware: requesting intel-ucode/06-2a-07

Microcode UpdateDriver: v2.00 <tigran@aivazian.fsnet.co.uk>, Peter Oruba

parport_pc00:04: reported by Plug and Play ACPI

2.2 其他日志信息

常见的日志信息记录路径如下所示:

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

# Don't logprivate authentication messages!

*.info;mail.none;authpriv.none;cron.none                /var/log/messages系统标准错误日志信息,不写入邮件,认证和定时任务的信息

# The authprivfile has restricted access.

authpriv.*                                             /var/log/secure安全日志信息

# Log all themail messages in one place.

mail.*                                                 -/var/log/maillog邮件日志信息,采用的是异步写入

# Log cron stuff

cron.*                                                 /var/log/cron(定时任务日志信息

# Everybody getsemergency messages

*.emerg                                                *紧急信息会发送给在线的所有人员,也就是直接在屏幕上输出

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

uucp,news.crit                                         /var/log/spooler新闻的严重的日志信息

最需要关注的日志信息路径如下所示:

[root@rsyncserver~]# ls -l /var/log/{messages,secure}

-rw------- 1root root 63652 Nov  1 02:48/var/log/messages系统日志信息

-rw------- 1root root 13697 Nov  1 00:47/var/log/secure认证日志信息

可以看出来,这些日志信息的权限均为600,主要在启动服务的时候,设定了umask,从而在创建文件的时候,都会使用这个权限,如下所示:

[root@rsyncserver~]# grep umask /etc/init.d/rsyslog 设置文件权限位600,保障安全性

       umask 077

系统日志信息如下:

[root@rsyncserverlog]# tail -f messages-20161016

Oct 14 02:51:59localhost kernel: kjournald starting. Commit interval 5 seconds

Oct 14 02:51:59localhost kernel: EXT3-fs (sdd2): using internal journal

Oct 14 02:51:59localhost kernel: EXT3-fs (sdd2): mounted filesystem with ordered data mode

Oct 14 02:58:21localhost kernel: kjournald starting. Commit interval 5 seconds

Oct 14 02:58:21localhost kernel: EXT3-fs (sdd1): using internal journal

记录的相关信息为:

Ø  时间

Ø  主机名(主要是根据配置文件/etc/hosts文件进行解析

Ø  相关信息

 

认证信息如下所示:

[root@rsyncserverlog]# tail -f /var/log/secure认证信息

Nov  1 03:20:53 localhost sshd[1778]: Acceptedpassword for root from 192.168.1.11 port 50192 ssh2

Nov  1 03:20:53 localhost sshd[1778]:pam_unix(sshd:session): session opened for user root by (uid=0)

Nov  1 03:22:18 localhost su: pam_unix(su-l:session):session opened for user kel by root(uid=0)

Nov  1 03:22:23 localhost su: pam_unix(su-l:auth): authentication failure;logname=root uid=500 euid=0 tty=pts/1 ruser=kel rhost=  user=root

Nov  1 03:22:40 localhost sshd[2248]: Acceptedpassword for root from 192.168.1.11 port 50212 ssh2

Nov  1 03:22:40 localhost sshd[2248]:pam_unix(sshd:session): session opened for user root by (uid=0)

Nov  1 03:22:47 localhost sshd[2248]:channel_by_id: 0: bad id: channel free

Nov  1 03:22:47 localhost sshd[2248]: Disconnecting:Received ieof for nonexistent channel 0.

Nov  1 03:22:47 localhost sshd[2248]:pam_unix(sshd:session): session closed for user root

Nov  1 03:22:54 localhost sshd[2265]: pam_unix(sshd:auth): authentication failure;logname= uid=0 euid=0 tty=ssh ruser= rhost=192.168.1.11  user=root

Nov  1 03:22:57 localhost sshd[2265]: Failedpassword for root from 192.168.1.11 port 50216 ssh2

Nov  1 03:23:04 localhost sshd[2265]: Failedpassword for root from 192.168.1.11 port 50216 ssh2

Nov  1 03:23:07 localhost sshd[2266]: Receiveddisconnect from 192.168.1.11: 0:

Nov  1 03:23:07 localhost sshd[2265]: PAM 1 moreauthentication failure; logname= uid=0 euid=0 tty=ssh ruser=rhost=192.168.1.11  user=root

记录的字段如下所示:

Ø  时间

Ø  主机名称

Ø  服务模块

Ø  相关信息

2.3 日志级别

在记录的相关信息的时候,可以看到记录的日志级别:debuginfonoticewarningerrorcriticalertemergicpanic

 

3、 服务及配置

日志系统的配置文件如下:

[root@rsyncserver~]# ls -l /etc/rsyslog.conf 配置文件路径

-rw-r--r-- 1root root 2813 Nov  1 03:31/etc/rsyslog.conf

第一部分为加载的模块,也就是需要写入哪些信息

第二部分为全局设定,也就是时间的显示设定

第三部分为写入的规则,也就是记录的日志级别

3.1 将日志写入到其他主机

当需要将日志写入到其他主机的日志文件的时候,可以使用如下的方法:

编辑配置文件:/etc/rsyslog.conf

# Provides UDPsyslog reception

$ModLoadimudp.so

$UDPServerRun514

在目标主机上必须加载模块,并开放514端口,重新加载rsyslog服务,如下:

[root@rsyncserver~]# /etc/init.d/rsyslog reload重新加载配置文件

Reloading systemlogger...                                [  OK  ]

[root@rsyncserver~]# netstat -tunlp|grep 514查看监听端口

udp        0     0 0.0.0.0:514                0.0.0.0:*                              2352/rsyslogd      

udp        0     0 :::514                      :::*                                   2352/rsyslogd

配置文件中可以加入两条策略,写入本地并同时写入到远程主机上:

# The authprivfile has restricted access.

authpriv.*                                             /var/log/secure写入本机

authpriv.*                                              @192.168.1.63:514写入远程主机

3.2 服务的启停

服务的启停如下所示:

[root@rsyncserver~]# /etc/init.d/rsyslog reload重新加载配置文件

Reloading systemlogger...                                [  OK  ]

[root@rsyncserver~]# /etc/init.d/rsyslog restart重新启动

Shutting downsystem logger:                              [  OK  ]

Starting systemlogger:                                   [  OK  ]

[root@rsyncserver~]# /etc/init.d/rsyslog start启动

Starting systemlogger:

[root@rsyncserver~]# /etc/init.d/rsyslog stop(停止

Shutting downsystem logger:                              [  OK  ]

也可以使用service的方式:

[root@rsyncserver~]# service rsyslog restart使用service的方式重启

Shutting downsystem logger:                              [  OK  ]

Starting systemlogger:                                    [  OK  ]

查看其他主机发送的日志信息:


4 脚本中测试创建文件的权限

在进行使用日志信息的时候,可以发现创建的日志权限位600,查看脚本,使用的方式是umask,从而使用脚本测试下创建文件的权限,如下所示:

[root@rsyncserverscripts]# cat createfile.sh 查看测试脚本内容

#!/bin/bash

 

umask 077

touch/var/lock/subsys/kel.log

ls -l/var/lock/subsys/kel.log

[root@rsyncserverscripts]# ./createfile.sh 查看创建文件的权限,从而每次创建文件的时候,可以使用umask来指定文件的权限,只对当前脚本有效

-rw------- 1root root 0 Nov  1 08:42/var/lock/subsys/kel.log

 

 

 


本文分享自微信公众号 - SRE运维实践(gh_319dd73ec076)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!