目录
一、 系统日志管理
1.1 系统日志介绍
1.1.1 sysklogd 系统日志服务
1.1.2 rsyslog 系统日志服务
1.2 rsyslog 管理
1.2.1 系统日志术语
1.2.2 rsyslog 相关文件
1.2.3 rsyslog配置文件
1.3 日志文件
二、实验
2.1 实验一:将ssh服务的日志单独设置
2.2 实验二:开启日志的远程传输功能
三、总结
一、 系统日志管理
1.1 系统日志介绍
在现实生活中,记录日志也非常重要,比如银行的转账记录,飞机上的黑盒子,那么将系统和应用发生的事件记录至日志中,以助于排错和分析使用
日志记录的内容包括:
历史事件:时间,地点,人物,事件
日志级别:事件的关键性程度,Loglevel
1.1.1 sysklogd 系统日志服务
CentOS 5 之前版本采用的日志管理系统服务
syslogd: system application 记录应用日志
klogd: linux kernel 记录内核日志
事件记录格式:
日期时间 主机 进程[pid]: 事件内容
C/S架构:通过TCP或UDP协议的服务完成日志记录传送,将分布在不同主机的日志实现集中管理
1.1.2 rsyslog 系统日志服务
Rsyslog的全称是 rocket-fast system for log,它提供了高性能,高安全功能和模块化设计。rsyslog能够接受从各种各样的来源,将其输入,输出的结果到不同的目的地。rsyslog可以提供超过每秒一百万条消息给目标文件
rsyslog 特性
多线程
UDP, TCP, SSL, TLS, RELP
MySQL, PGSQL, Oracle实现日志存储
强大的过滤器,可实现过滤记录日志信息中任意部分
自定义输出格式
适用于企业级中继
1.2 rsyslog 管理
1.2.1 系统日志术语
#内置分类
auth(验证), authpriv, cron(定时任务), daemon,ftp,kern, lpr, mail, news, security(auth), user, uucp, syslog
#自定议的分类
local0-local7
日志等级(优先级)
数字越小紧急程度越高,一般在error就解决掉了,出现比error更严重的问题就是运维的失职
级号 | 等级名称 | 说 明 |
7 | debug (LOG_DEBUG) | 一般的调试信息说明 |
6 | info (LOG_INFO) | 基本的通知信息 |
5 | notice (LOG_NOTICE) | 普通信息,但是有一定的重要性 |
4 | warning(LOG_WARNING) | 警吿信息,但是还不会影响到服务或系统的运行 |
3 | error(LOG_ERR) | 错误信息, 一般达到err等级的信息已经可以影响到服务成系统的运行了 |
2 | crit (LOG_CRIT) | 临界状况信思,比err等级还要严® |
1 | alert (LOG_ALERT) | 状态信息,比crit等级还要严重,必须立即采取行动 |
0 | emerg (LOG_EMERG) | 疼痛等级信息,系统已经无法使用了 |
* | 代表所有日志等级。比如,“authpriv.*”代表amhpriv认证信息服务产生的日志,所有的日志等级都记录 |
服务名称
服务名称 | 说 明 |
auth(LOG AUTH) | 安全和认证相关消息 (不推荐使用authpriv替代) |
authpriv(LOG_AUTHPRIV) | 安全和认证相关消息(私有的) |
cron (LOG_CRON) | 系统定时任务cront和at产生的日志 |
daemon (LOG_DAEMON) | 与各个守护进程相关的曰志 |
ftp (LOG_FTP) | ftp守护进程产生的曰志 |
kern(LOG_KERN) | 内核产生的曰志(不是用户进程产生的) |
Iocal0-local7 (LOG_LOCAL0-7) | 为本地使用预留的服务 |
lpr (LOG_LPR) | 打印产生的日志 |
mail (LOG_MAIL) | 邮件收发信息 |
news (LOG_NEWS) | 与新闻服务器相关的日志 |
syslog (LOG_SYSLOG) | 存syslogd服务产生的曰志信息(虽然服务名称己经改为reyslogd,但是很多配罝依然沿用了 syslogd服务的,所以这里并没有修改服务名称) |
user (LOG_USER) | 用户等级类别的日志信息 |
uucp (LOG_UUCP> | uucp子系统的日志信息,uucp是早期Linux系统进行数据传递的协议,后来 也常用在新闻组服务中 |
1.2.2 rsyslog 相关文件
程序包:rsyslog
主程序:/usr/sbin/rsyslogd
CentOS 6:/etc/rc.d/init.d/rsyslog {start|stop|restart|status}
CentOS 7,8:/usr/lib/systemd/system/rsyslog.service
配置文件:/etc/rsyslog.conf,/etc/rsyslog.d/*.conf
库文件: /lib64/rsyslog/*.so
1.2.3 rsyslog配置文件
/etc/rsyslog.conf 配置文件格式:由三部分组成
MODULES:相关模块配置
GLOBAL DIRECTIVES:全局配置
RULES:日志记录相关的规则配置
1.3 日志文件
目录 | 含义 |
/var/log/secure | 系统安全日志,文本格式,应周期性分析 |
/var/log/btmp | 当前系统上,用户的失败尝试登录相关的日志信息,二进制格式,lastb命令进行查看 |
/var/log/wtmp | 当前系统上,用户正常登录系统的相关日志信息,二进制格式,last命令可以查看 |
/var/log/lastlog | 每一个用户最近一次的登录信息,二进制格式,lastlog命令可以查看 |
/var/log/dmesg | CentOS7 之前版本系统引导过程中的日志信息,文本格式,开机后的硬件变化将不再记录专用命令dmesg查看,可持续记录硬件变化的情况 |
/var/log/boot.log | 系统服务启动的相关信息,文本格式 |
/var/log/messages | 系统中大部分的信息 |
/var/log/anaconda | anaconda的日志 |
示例1
示例2
示例3
二、实验
2.1 实验一:将ssh服务的日志单独设置
1.vim /etc/ssh/sshd_config
shift+冒号 末行模式敲set nu 显示行号,上下键找到第32行,命令模式yy复制,p粘贴到下一行,将32行开头加上#号,按“i”进入编辑模式,将33行后面那个单词改为LOCAL6,保存退出
2.vim /etc/rsyslog.conf
shift+冒号 末行模式敲set nu 显示行号,上下键找到第73行,命令模式yy复制,p粘贴到下一行,按“i”进入编辑模式,改为如下
3.重启服务
systemctl restart sshd systemctl restart rsyslog
4.右击第一个标签复制会话
cd /var/log/ ls
可以看到创建的sshd.log文件存在了
vim sshd.log
可以看到操作记录
2.2 实验二:开启日志的远程传输功能
1.两台机子 vim /etc/rsyslog.conf
将19,20行的#注释去掉,开启tcp服务,保存退出
2.第二台机子 vim /etc/rsyslog.conf yy复制 p粘贴到下一行,后面加上@@第一台IP地址
查看第一台IP地址,在第一台机子上输入ifconfig,找到en33网卡下的IP地址就是本机的IP地址
注意:
使用tcp服务,IP地址前是@@
使用udp服务,IP地址前是@
保存退出然后重启服务,systemctl restart rsyslog
3.两台机子关闭防火墙和selinux
systemctl stop firewalld vim /etc/selinux/config
4.第二台机子测试,往日志中写入数据
[root@localhost ~]# logger "1111111111111111111111" [root@localhost ~]# logger "2222222222222222222222"
第一台机子的/var/log/messages文件可以看到,使用cat /var/log/messages命令
三、总结
在工作中我们要学会查看日志,及时解决问题,防患于未然
在真实生产环境中,会有几台或是几十台服务器,集中管理数以百万台服务器的日志信息