Linux学习笔记-12. 日志管理

12.日志管理

12.1.日志管理简介

 

1、日志服务

 

CentOS 6.x中日志服务已经由rsyslogd取代了原先的syslogd服务。rsyslogd日志服务更加先进,功能更多。但是不论该服务的使用,还是日志文件的格式其实都是和syslogd服务相兼容的,所以学习起来基本和syslogd服务一致。

 

 

2rsyslogd的新特点

基于TCP网络协议传输日志信息

更安全的网络传输方式

有日志消息的及时分析框架

后台数据库

配置文件中可以写简单的逻辑判断

syslog配置文件相兼容

 

 

3、确定服务启动

 

查看服务是否启动

ps aux|grep rsyslogd

 

 

查看服务是否自动

chkconfig –list|grep rsyslog

 

貌似这个命令不行了,在centos7上,系统服务提示用这个命令:systemctl list-unit-files

 

 

4、常用日志的作用

 

日志文件

说明

/var/log/cron

记录了定时任务相关的日志。

/var/log/cups

记录打印信息的日志

/var/log/dmesg

记录了系统在开机时内核自检的信息。也可以使用dmesg命令直接查看内核自检信息

/var/log/btmp

记录错误登录的日志。这个文件是二进制文件,不能直接vi查看,而要使用lastb命令查看,命令如下:

[root@localhost log]# lastb

rot      ssh:notty    192.168.1.101    Thu May 10 19:21 - 19:21  (00:00)

Administ ssh:notty    192.168.1.101    Sun May  6 16:13 - 16:13  (00:00)

Administ ssh:notty    192.168.1.101    Sat May  5 21:38 - 21:38  (00:00)

 

btmp begins Sat May  5 21:38:05 2018

[root@localhost log]#

/var/log/lastlog

记录系统中所有用户最后一次的登录时间的日志。这个文件是二进制文件,不能直接vi查看,而要使用lastlog命令查看。

/var/log/maillog

记录了邮件信息

/var/log/message

记录系统重要信息的日志,这个日志文件 中会记录Linux系统的绝大鑫数重要信息,如果系统出现问题,首先要检查的就应该是这个日志文件。

/var/log/secure

记录验证和授权方面的信息,只有涉及帐户和密码的程序都会记录。例如系统的登录,ssh的登录,su切换用户,sudo授权,甚至添加用户和修改用户密码都会记录在这个日志文件中。

/var/log/wtmp

永久记录所有用户的登录、注销信息、同时记录系统的启动,重启,关机事件。同样这个文件也是一个二进制文件,不能直接vi命令查看,而需要使用last命令查看。

/var/run/utmp

记录当前已经登录的用户信息。这个会随着用户的登录和注销而不断变化,只记录前登录用户的信息。这个文件也不能直接用vi命令查看,而要使用w,who,users等命令来查询

 

 

除了系统的默认日志之外,采用RPM方式安装的系统服务也会默认把日志记录在/var/log目录中,源码包安装的服务日志是在源码包指定目录中。不过这些日志不是由rsyslogd服务来记录和管理的,而是各个服务使用自己的日志管理文档来记录自身的日志。

 

 

常见的RPM包日志:

/var/log/httpd/`                 apache服务

/var/log/mail/                    邮件服务

/var/log/samba/                samba服务

/var/log/sssd/                    守护进程安全服务目录

 

 12.2.rsyslogd服务

 

 

1、日志文件格式

 

基本日志格式包含以下四列:

         事件产生的时间

         发生事件的服务器的主机名

         产生事件的服务名或程序名

         事件的具体信息

 

 

如下所示为secure日志格式:

[root@localhost log]# head secure

May  6 22:25:43 localhost sshd[1556]: Accepted password for root from 192.168.1.101 port 60068 ssh2

May  6 22:25:43 localhost sshd[1556]: pam_unix(sshd:session): session opened for user root by (uid=0)

May  6 23:07:52 localhost groupadd[1714]: group added to /etc/group: name=apache, GID=48

May  6 23:07:52 localhost groupadd[1714]: group added to /etc/gshadow: name=apache

May  6 23:07:52 localhost groupadd[1714]: new group: name=apache, GID=48

May  6 23:07:52 localhost useradd[1718]: new user: name=apache, UID=48, GID=48, home=/usr/share/httpd, shell=/sbin/nologin

May  6 23:08:50 localhost polkitd[643]: Registered Authentication Agent for unix-process:1753:2313559 (system bus name :1.38 [/usr/bin/pktty

 

 

 

2/etc/rsyslog.conf配置文件

 

配置格式:

服务名称[链接符号]日志等级       日志记录位置

 

如下所示:

authpriv.*         /var/log/secure

认证相关服务.所有日志等级        记录在/var/log/secure日志文件中

 

 

这些名称只在rsyslogd日志中有效

支持的服务名称:

服务名称

说明

auth

安全和认证相关消息, 不推荐使用authpriv替代

authpriv

安全和认证相关消息,私有的

cron

系统定时任务crontabat产生的日志

deamon

和各个守护进程相关的日志

ftp

ftp守护进程产生的日志

kern

内核产生的日志,不是用户进程产生的

local0-local7

为本地使用预留的服务

lpr

打印产生的日志

mail

邮件收日志

news

与新闻服务器相关的日志

syslog

syslogd服务产生的日志信息,虽然服务名称已经改为rsyslogd,但是很多配置都还是沿用了syslogd的,这里并没有修改服务名

user

用户等级类别的日志信息

uucp

uucp子系统的日志信息,uucp是早期linux系统进行数据传递的协议,后来也常用在新闻组服务中。

 

 

rsyslogd支持的连接符号:

连接符号

说明

*

代表所有日志等级,例如:authpriv.*,代表authpriv认证信息服务产生的日志,所有日志等级都记录

.

代表只要比后面的等级高的,包含该等级的日志都记录下来。例如:cron.info代表cron服务产生的日志,只有日志级别大于等于info级别,就会记录下来。

.=

代表只记录所需等的日志,其他等级的都不记录。例如:*.=emerg,代表任何日志服务产生的日志,只有等级是emerg等级就记录。这种用法及少见,了解就好

.!

代表不等于,也就是除了该等级的日志外,其他等级日志都记录。

 

 

 

syslogd支持日志等级:

日志等级

说明

debug

一般的调试信息

info

基本的通知信息

notice

普通信息,但是有一定的重要性

warning

警告信息,但是还不会影响到服务或系统运行

err

错误信息,一般达到err等级的信息,已经影响到服务或系统的运行了

crit

临界状况信息,比err等级还要严重

alert

警告状态信息,比crit还要严重,必须立即采取行动

emerg

疼痛待级信息,系统已经无法使用了

 

 

 

syslogd支持的日志记录位置:

类别

举例

日志文件的绝对路径

/var/log/secure

系统设备文件

/dev/lp0

转发给远程主机

@192.168.0.210:514

用户名

root

忽略或丢弃日志

~

 

 12.3.日志轮替

 

 

1、日志文件的命名规则

 

如果配置文件中拥有dateext参数,那么日志会用日期来作为日志文件的后缀,例如secure-20180510,这样的话日志文件名不会重叠,所以也就不需要日志文件的改名,只需要保存指定的日志个数,删除多余的日志文件即可。

 

 

如果配置文件中没有dateext参数,那么日志文件就需要进行改名了。当第1次进行日志轮替时,当前的secure日志会自动改名为secure.1,然后新建secure日志,用来保存新的日志,当第2次进行日志轮替时,secure.1会自动更新为secure.2,当前的secure日志会自动改为为secure.1,然后新建secure日志,用来保存新的日志,以此类推。

 

 

2logrotate配置文件

 

参数

参数说明

daily

日志的轮替周期是每天

weekly

日志的轮替周期是每周

monthly

日志的轮替周期是每月

rotate 数字

保留的日志文件的个数,0指没有备份

compress

日志轮替时,旧的日志进行压缩

create mode owner group

建立新的日志,同时指定新日志的权限与所有者和所属组。

如:create 0600 route utmp

mail address

当日志轮替时,输出内容通过邮件发送到指定的邮件地址

如:mail [email protected]

missingok

如果日志文件不存在,则忽略该日志的警告信息

notifyempty

如果日志为空文件,则不进行日志轮替

minsize 大小

日志轮替的最小值,也就是日志一定要达到这个最小值才会轮替,否则就算时间达到也不轮替

size 大小

日志只有大于指定大小才进行日志轮替,而不是按照时间轮替,如:size 100K

dateext

使用日期作为日志轮替文件的后缀。如:secure-20180510

 

 

 

上面半部分为全局配置,下面一部分是/var/log/wtmp/var/log/btmp特有的配置:

 

[root@localhost etc]# cat /etc/logrotate.conf

# see "man logrotate" for details

# rotate log files weekly

weekly

 

# keep 4 weeks worth of backlogs

rotate 4

 

# create new (empty) log files after rotating old ones

create

 

# use date as a suffix of the rotated file

dateext

 

# uncomment this if you want your log files compressed

#compress

 

# RPM packages drop log rotation information into this directory

include /etc/logrotate.d

 

# no packages own wtmp and btmp -- we'll rotate them here

/var/log/wtmp {

    monthly

    create 0664 root utmp

        minsize 1M

    rotate 1

}

 

/var/log/btmp {

    missingok

    monthly

    create 0600 root utmp

    rotate 1

}

 

# system-specific logs may be also be configured here.

[root@localhost etc]#

 

 

3、把apache日志加入轮替

 

RPM包安装会自动配置。

源码包安装的服务,需要手动加入配置:

vi /etc/logrotate.conf

/var/usr/local/apache/logs/access_log{

    daily

    create

    rotate 30

}

 

 

 

4logrotate命令

 

语法:

logrotate [选项] 配置文件名

 

如果此命令没有选项,则会按照配置文件中的条件进行日志轮替。

-v:显示日志轮替过程。加了-v选项,会显示日志的轮替的过程。

-f:强制进行日志轮替。不管日志轮替的条件是否已经符合,强制配置文件中所有的日志进行轮替

 

 

 

12.4.启动引导程序-Grub加密与字符界面分辨率调整

 

 

 

 

在启动的时候,按下任意键盘,就可以进行Grub的选择界面

 

然后按下e键,就可以编辑Grub配置文件了,但是每个人都可以编辑不安全。所要设置grub密码。

 

 

1grub加密

 

命令:

grub-md5-crypt

生成加密密码串

 

貌似centos7中没有这个命令了

 

设置了grub加密后,以后要编辑grub配置文件,需要使用grub密码才能编辑了。

 

 

centos7的方法已经不是上面的方式了,而且密码的加密更安全了:

 

设置grub密码保护:

查看grub登录用户名cat /etc/grub.d/01_users,可以看到用户名为root。通过grub2-setpasswords设置grub密码,确认密码 cat /boot/grub2/user.cfg。重启后进入grub需要用户名和密码

 

 

[root@localhost ~]# cat /etc/grub.d/01_users

#!/bin/sh -e

cat << EOF

if [ -f \${prefix}/user.cfg ]; then

  source \${prefix}/user.cfg

  if [ -n "\${GRUB2_PASSWORD}" ]; then

    set superusers="root"

    export superusers

    password_pbkdf2 root \${GRUB2_PASSWORD}

  fi

fi

EOF

[root@localhost ~]# grub2-setpasswords

-bash: grub2-setpasswords: command not found

[root@localhost ~]# grub2-setpassword

Enter password:

Confirm password:

[root@localhost ~]# cat /boot/grub2/user.cfg

GRUB2_PASSWORD=grub.pbkdf2.sha512.10000.44A14BB0A2FBA9511FE80754FB317AF04518F0FCB6C3D25454EB186AC7D84175C94595F5E8CC1AE127A5328CDCC5553DBB5C5C70928C0EAFDE675DC5B444D926.D45D10DF6E988AD8839EE2BAA746F5A962CFFC65C47FBF418F1A8211D890081E6619A9853586645A2E8CC69B50F7EF577308F28882574C31CA425849E78D2144

[root@localhost ~]#

 

 

重启后,在引导界面,输入e进行grub配置编辑界面前,需要输入用户名和密码,root/xx密码

 

 

 

 

2、字符界面分辨率调整

 

查询内核是否支持分辩率修改

 

[root@localhost boot]# cat config-3.10.0-693.el7.x86_64 |grep CONFIG_FRAMEBUFFER_CONSOLE

CONFIG_FRAMEBUFFER_CONSOLE=y

 

 

调整的时候,填写如下表格中的值即可,例如32位的1024x768,是792

 

填写哪里呢?有些版本不支持这个参数,有的支持是16进制的值,需要换算。

  

 

貌似centos7已经不是这样配置的了,网上找的参考:

 

正确解决方法

刚装的CentOS7.2 1511系统,正常启动,一般都是这样的,分辨率640x480

 进入系统后,更改分辨率,设置如下

[root@min-base ~]# vim /etc/default/grub

GRUB_TERMINAL_OUTPUT值由默认的"console"改为"gfxterm",并添加GRUB_GFXMODE

 
GRUB_TIMEOUT=2
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="gfxterm"
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet"
GRUB_DISABLE_RECOVERY="true"
GRUB_GFXMODE=1440x900,1024x768,640x480

 

 这里官方手册写得很清楚,ubuntu自带grub2默认是gfxterm, centos默认是console,所以只设置GRUB_GFXMODE不生效!

更新grub.cfg

[root@min-base ~]# grub2-mkconfig -o /boot/grub2/grub.cfg 
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-3.10.0-327.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-327.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-474822243f59425e80af30ff5e2b8cd4
Found initrd image: /boot/initramfs-0-rescue-474822243f59425e80af30ff5e2b8cd4.img
done
[root@min-base ~]#

 

新版grub2已经不再使用update-grub这个命令了,改用grub2-mkconfig

 

确定后重启就可以看到效果了,窗口大小是有变化的。在centos7.4上验证此方法有效。貌似只是引导界面变了一下,和Windows的修改分辨率咋感觉不是一个概念。。。

 

 

 

 

猜你喜欢

转载自wlcacc.iteye.com/blog/2424057