日志管理
1、日志管理简介
1.1、日志服务
在CentOS6.x中日志服务已经由rsyslogd取代了原先的syslogd服务。rsyslogd日志服务更加先进,功能更多。该服务的使用和日志文件的格式都和syslogd服务相兼容。
- rsyslogd的新特点:
- 基于TCP网络协议传输日志信息;
- 更安全的网络传输方式;
- 有日志消息的及时分析框架;
- 后台数据库;
- 配置文件中可以写简单的逻辑判断;
- 与syslog配置文件相兼容
确定服务启动
#查看服务是否启动
[root@localhost ~]# ps aux | grep rsyslogd
#查看服务是否自启动
[root@localhost ~]# chkconfig --list | grep rsyslog
1.2、常见日志的作用
日志文件 | 说明 |
---|---|
/var/log/cron | 记录了系统定时任务相关的日志 |
/var/log/cups/ | 记录打印信息的日志 |
/var/log/dmesg | 记录了系统在开机时内核自检的信息,也可以使用dmesg命令直接查看内核自检信息 |
/var/log/btmp | 记录错误登录的日志,这个文件时二进制文件,不能直接vi查看,要使用lastb命令查看,命令如下:lastb |
/var/log/lastlog | 记录系统中所有用户最后一次的登录时间的日志,这个文件爱你也是二进制文件,不能直接vi,要使用lastlog命令查看。 |
/var/log/maillog | 记录邮件信息 |
/var/log/message | 记录系统重要信息的日志,这个日志文件中会记录Linux系统的绝大多数重要信息,如果系统出现问题时,首先要检查再换个日志文件。 |
/var/log/secure | 记录验证和授权方面的信息,只要涉及账户和密码的程序都会记录,比如:系统的登录,ssh的登录,su切换用户,sudo授权等 |
/var/log/wtmp | 永久记录所有用户的登录、注销信息,同时记录系统的启动、重启、关机事件。这个文件是二进制文件,要使用last命令查看。 |
/var/run/utmp | 记录当前已经登录的用户的信息,这个文件会随着用户的登录和注销而不断变化,只记录当前登录用户的信息,不能直接vi,要使用w,who,users等命令来查询。 |
除了系统默认的日志之外,采用RPM方式按照的系统服务也会默认把日志记录在/var/log/目录中(源码包安装的服务日志是在源码包指定目录中)。这些日志不是由rsyslogd服务来记录和管理的,而是各个服务使用自己的日志管理文档来记录自身日志。
常见的有(如果安装了该软件):
日志文件 | 说明 |
---|---|
/var/log/httpd | RPM包安装的apache服务的默认日志目录 |
/var/log/mail/ | RPM包安装的邮件服务的额外日志目录 |
/var/log/samba/ | RPM包安装的sanba服务的日志目录 |
/var/log/sssd/ | 守护进程安全服务目录 |
2、rsyslogd日志服务
2.1、日志文件格式
- 基本日志格式包含以下4列:
- 事件产生的时间
- 发生事件的服务器的主机名
- 产生事件的服务名或程序名
- 事件的具体信息
2.2、/etc/rsyslog.conf配置文件
authpriv.* /var/log/secure
#服务名称[连接符号] 日志等级 日志记录位置
#认证相关服务 所有日志等级 记录在/var/log/secure日志中
服务名称 | 说明 |
---|---|
auth | 安全和认证相关消息(不推荐使用authpriv替代) |
authpriv | 安全和认证相关消息(私有的) |
cron | 系统定时任务crontab产生的日志 |
daemon | 和各个守护进程相关的日志 |
ftp | ftp守护进程产生的日志 |
kern | 内核产生的日志(不是用户进程产生的) |
local0-local7 | 为本地使用预留的服务 |
lpr | 打印产生的日志 |
邮件收发信息 | |
news | 与新闻服务器相关的日志 |
syslog | 有syslogd服务产生的日志信息(虽然服务名称已经改为rsyslogd,但是很多配置都还是沿用syslogd,没有修改服务名)。 |
user | 用户等级类别的日志信息 |
uucp | uucp子系统的日志信息,uucp是早期linux系统进行数据传递的协议,后来也常用在新闻组服务中。 |
连接符号可以为:
- “
*
”代表所有日志等级,比如:“authpriv.*”代表authpriv认证信息服务产生的日志,所有日志等级都记录 - “.”代表只要比后面的等级高的(包含该等级)日志都记录,比如:“cron.info”代表cron服务产生的日志,只要日志邓毅大于info级别,都记录
- “.=”代表只记录所需等级的日志,其它等级的都不记录。比如:“*.=emerg”代表人和日志服务产生的日志,只要等级是emerg等级就记录。这种用户较少用。
- “.!” 代表不等于,就是出来该等级的日志外,其它等级的日志都记录。
等级名称 | 说明 |
---|---|
debug | 一般的调试信息说明 |
info | 基本的通知信息 |
notice | 普通信息,但是有一定的重要性 |
warning | 警告信息,但是还不会影响到服务或系统的运行 |
err | 错误信息,一般达到err等级的信息可能影响到服务或系统的运行 |
crit | 临界状况信息,比err等级还要严重 |
alert | 警告状态信息,比crit还要严重,笔记立即采取行动 |
emerg | 疼痛等级信息,系统已经无法使用 |
日志记录位置
- 日志文件的绝对路径,如“/var/log/srcure”
- 系统设备文件,如“/dev/lp0”
- 转发给远程主机,如“@192.168.134.10:514”
- 用户名,如“root”
- 忽略或丢弃日志,如“~”
3、日志轮替
3.1、日志文件的命名规则
- 如果配置文件中拥有“dateext”参数,那么日志会用日期作为日志文件的后缀,例如“tomcat-20170902”,日志文件名不会重复,也不需要日志文件改名,只需要保存指定的日志个数,删除多个的日志文件即可。
- 如果配置文件中没有“dateext”参数,那么日志文件就需要进行改名。当第一次进行日志轮替时,当前的“secure”日志会自动改名为“secure.1”,然后新建“secure”日志,用户保存新的日志。当第二次进行日志轮替时,“srcure.1”会自动改名为“secure.2”,当前的“secure”日志会自动改名为“secure.1”,然后也会新建“secure”日志,用来保存新的日志,以此类推。
3.2、logrotate配置文件
参数 | 参数说明 |
---|---|
daily | 日志的轮替周期是每天 |
weekly | 日志的轮替周期是每周 |
monthly | 日志的轮替周期是每月 |
rotate 数字 | 保留的日志文件的个数,0指没有备份 |
compress | 日志轮替时,旧的日志进行压缩 |
create mode owner group | 建立新日志,同时指定新日志的权限与所有者和所属组,如:create 0600 root utmp |
mail address | 当日志轮替时,输出内容通过邮件发送到指定的邮件地址 |
missingok | 如果日志不存在,则忽略该日志的警告信息 |
notifempty | 如果日志为空,则不进行日志轮替 |
minsize 大小 | 日志轮替的最小值,就是日志一定要达到这个最小值才会轮替,否则就算时间达到也不轮替 |
size 大小 | 日志只有大于指定大小才会进行日志轮替,而不是安装时间轮替 |
dateext | 使用日期作为日志轮替文件的后缀,最常使用 |
3.3、示例:把nginx日志加入轮替
vim /etc/logrotate.conf #编辑日志配置文件,加入以下配置,实现日志轮替
/usr/local/nginx/logs/access_log{
daily #每天备份
create #备份时创建新的文件
rotate 30 #保留30天
}
3.4、logrotate命令
logrotate [选项] 配置文件名
选项:
如果此命令没有选项,则会按照配置文件中的条件进行日志轮替
-v:显示日志轮替过程
-f:强制进行日志轮替,不管日志轮替的条件是否已经符合,强制配置文件中所有的日志进行轮替
启动管理
1、CentOS 6.x启动管理
1.1、系统运行级别
运行级别 | 含义 |
---|---|
0 | 关机 |
1 | 单用户模式,主要用于系统修复 |
2 | 不完全的命令行模式,不含NFS服务 |
3 | 完全的命令行模式,标准字符界面 |
4 | 系统保留 |
5 | 图形模式 |
6 | 重启动 |
1.1.2、运行级别命令
runlevel #查看运行级别命令
init 运行级别 #改变运行级别命令
1.1.3、系统默认运行级别
vim /etc/inittab
id:3:initdefault: #系统开机后直接进入哪个运行级别
1.2、系统启动过程
initramfs内存文件系统
- CentOS 6.x中使用initramfs内存文件系统取代了CentOS 5.x中的initrd RAM Disk。它们的作用类似,可以通过启动引导程序加载到内存中,然后加载启动过程中所需要的内核模块,比如USB、SATA、SCSI硬盘的驱动和LVM、RAID文件系统的驱动
调用/etc/init/rcS.conf配置文件
- 主要功能有两个
- 先调用/etc/rc.d/rc.sysinit,然后由/etc/rc.d/rc.sysinit配置文件爱你进行Linux系统初始化。
- 然后再调用/etc/inittab,然后由/etc/inittab配置文件确定系统的默认运行级别。
由/etc/rc.d/rc.sysinit初始化:
- 获得网络环境
- 挂载设备
- 开机启动画面Plymouth
- 判断是否启用SELinux
- 显示开机过程中的欢迎画面
- 初始化硬件
- 用户自定义模块的加载
- 配置内核的参数
- 设置主机名
- 同步存储器
- 设备映射器及相关的初始化
- 初始化软件磁盘阵列(RAID)
- 初始化LVM的文件系统功能
- 检验磁盘文件系统(fsck)
- 设置磁盘配额(quota)
- 重新以可读写模式挂载系统磁盘
- 更新quota(非必要)
- 启动系统虚拟随机数生成器
- 配置机器(非必要)
- 清除开机过程当中的临时文件
- 创建ICE目录
- 启动交换分区(swap)
- 将开机信息写入/var/log/dmesg文件中
调用/etc/rc.d/rc文件
- 运行级别参数传入/etc/rc.d/rc这个脚本之后,由这个脚本文件按照不同的运行级别启动/etc/rc[0-6].d/目录的相应的程序
- /etc/rc3.d/k?? 开头的文件(??是数字),会按照数字顺序依次关闭
- /etc/rc3.d/S?? 开头的文件(??是数字),会按照数字顺序依次启动
2、启动引导程序grub
2.1、grub中分区表示
硬盘 | 分区 | Linux中设备文件名 | Grub中设备文件名 |
---|---|---|---|
第一块SCSI硬盘 | 第一个主分区 | /dev/sda1 | hd(0,0) |
第一块SCSI硬盘 | 第二个主分区 | /dev/sda2 | hd(0,1) |
第一块SCSI硬盘 | 扩展分区 | /dev/sda3 | hd(0,2) |
第一块SCSI硬盘 | 第一个逻辑分区 | /dev/sda5 | hd(0,4) |
第二块SCSI硬盘 | 第一个主分区 | /dev/sda1 | hd(1,0) |
第二块SCSI硬盘 | 第二个主分区 | /dev/sda2 | hd(1,1) |
第二块SCSI硬盘 | 扩展分区 | /dev/sda3 | hd(1,2) |
第二块SCSI硬盘 | 第一个逻辑分区 | /dev/sda5 | hd(1,4) |
2.2、grub配置文件
vim /boot/grub/grub.conf
- default=0 默认启动第一个系统
- timeout=5 等待时间,默认是5秒
- splashimage=(hd0,0)/grub/splash.xpm.gz 指定grub启动时的背景图像文件的保存位置
- hiddenmenu 隐藏菜单
- title CentOS 6 (2.6.32-573.el6.i686) 标题
- root (hd0,0) 启动程序的保存分区
- kernel /vmlinuz-2.6.32-573.el6.i686 ro
root=/dev/mapper/VolGroup-lv_root rd_NO_LUKS rd_NO_MD rd_LVM_LV=VolGroup/lv_swap crashkernel=auto LANG=zh_CN.UTF-8 rd_LVM_LV=VolGroup/lv_root KEYBOARDTYPE=pc KEYTABLE=us
rd_NO_DM rhgb quiet
定义内核加载时的选项 - initrd /initramfs-2.6.32-573.el6.i686.img
指定了initramfs内存文件系统镜像文件的所在位置
2.3、Grub加密与字符界面分辨率调整
2.3.1、grub加密
grub-md5-crypt #生成加密密码串
vim /boot/grub/grub.conf
password --md5 $1$8hxxT/$NeSiBnYK4ctfanbL307aw0
#password选项放在整体设置处
2.3.2、纯字符节面分辨率调整
grep "CONFIG_FRAMEBUFFER_CONSOLE" /boot/config-2.6.32-573.el6.i686
#查询内核是否支持分辨率修改
在grub.conf中配置调整分辨率
3、系统修复模式
3.1、单用户模式常见的错误修复
- 遗忘root密码
- 修改系统默认运行级别
3.2、光盘修复模式
重要系统文件丢失,导致系统无法启动
chroot /mnt/sysimage #改变主目录
cd /root
rpm -qf /etc/inittab #查询下/etc/inittab文件属于哪个包
mkdir /mnt/cdrom #建立挂载点
mount /dev/sr0 /mnt/cdrom #挂载光盘
rpm2cpio /mnt/cdrom/Packages/initscripts-8.45.3-1.i386.rpm | cpio -idv ./etc/inittab
#提取inittab文件到当前目录
cp etc/inittab /etc/inittab
#复制inittab文件到指定位置
备份与恢复
1、备份概述
1.1、Linux系统需要备份的数据
- /root/ 目录
- /home/ 目录
- /var/spool/mail/ 目录
- /etc/ 目录
- 其它目录
如果安装以下服务
- apache需要备份的数据
- 配置文件
- 网页主目录
- 日志文件
- mysql需要备份的数据
- 源码包安装的mysql:/usr/local/mysql/data/
- RPM包安装的mysql:/var/lib/mysql
1.2、备份策略
- 完全备份:完全备份是指把所有需要备份的数据全部备份,当然全部备份可以备份整块硬盘,整个分区或某个具体的目录。
- 增量备份,每次备份和上次备份相比,备份上次备份不存在的
- 差异备份,与完全备份相比,备份完全备份不存在的
2、dump和restore命令
2.1、dump命令
dump [选项] 备份之后的文件名 原文件或目录
选项:
-level: 0-9备份级别
-f 文件名:指定备份之后的文件名
-u: 备份成功之后,把备份时间记录在/etc/dumpdates文件
-v:显示备份过程更多的输出信息
-j:调用bzlib库压缩备份文件,把备份文件压缩为。bz2格式
-W:显示允许被dump的分区的备份等级及备份时间
示例:备份分区
dump -0uj -f /root/boot.bak.bz2 /boot/
#备份命令,先执行一次完全备份,并压缩和更新备份时间
cat /etc/dumpdates #查看备份时间文件
cp install.log /boot/ #复制日志文件到/boot分区
dump -luj -f /root/boot.bak1.bz2 /boot/
#增量备份/boot 分区,并压缩
dump -W #查询分区的备份时间及备份级别
备份文件或目录
dump -0j -f /root/etc.dump.bz2 /etc
#完全备份/etc/目录,只能使用0级别进行完全备份,不再支持增量备份
2.2、restore命令
restore [模式选项][选项]
模式选项:rstore命令常用的模式有以下四种,这四个模式不能混用。
-C:比较备份数据和实际数据的变化
-i:进入交互模式,手工选择需要恢复的文件
-t:查看模式,用于查看备份文件中拥有哪些数据
-r:还原模式,用户数据还原
选项:
-f:指定备份文件的文件名
示例:
restore -C -f /tmp/shell.bz2 #比较备份数据和实际数据的变化
restore -t -f /tmp/shell.bz2 #查看备份文件内容
restore -r -f /tmp/shell.bz2 #恢复备份数据