Linux-本地日志服务管理(rsyslog基础)


目录

  • 系统环境
  • 1.常见的两种日志管理服务
    • 1.1 RSYSLOG系统日志服务
    • 1.2 ELK
  • 2.RSYSLOG日志服务的相关知识
    • 2.1 RSYSLOG日志消息级别
    • 2.2 RSYSLOG日志服务的配置文件位置
    • 2.3 配置文件解析
      • 2.3.1 功能模块配置(MODULES)
      • 2.3.2 全局配置 (GLIVAK DURECTUVES)
      • 2.3.3 规则(RULES)
    • 2.4 日志格式解析
  • 3.服务日志位置更改
    • 3.1 修改服务日志组
    • 3.2 修改rsyslog的日志组规则
    • 3.3 重启rsyslog与对应服务
    • 3.4测试
  • 4.网络日志传输
    • 4.1 .4主机配置
    • 4.2 .5主机配置
    • 4.3 测试
    • 4.4是不是虚拟机BUG呢

系统环境 系统环境为CentOS Linux release 7.6.1810 (Core)
1.常见的两种日志管理服务 1.1 RSYSLOG系统日志服务 rsyslog是CentOS 6以后版本的系统管理服务,相较于Centos5的日志管理服务sysklogd,rsyslog提供了高性能,出色的安全性和模块化设计。如今大多数的Linux服务都提供了对应的rsyslog接口,以方便使用rsyslog来管理对应的服务日志。但具体是否支持还是需要靠经验与对应服务的官网介绍来了解。
1.2 ELK 当管理大量服务器的日志时,使用rsyslog便显得有些力不从心,因此在面临集群服务器的时候,便回采取ELK进行日志管理服务。
ELKELK平台是一套完整的日志集中处理解决方案,将ElasticSearch、Logstash和Kiabana三个开源工具配合使用,完成更强大的用户对日志的查询、排序、统计需求。
这里仅进行简单介绍,具体部署以后再说。
2.RSYSLOG日志服务的相关知识 2.1 RSYSLOG日志消息级别 系统日志级别共分为7类
等级名称 说 明
debug (LOG_DEBUG) 一般的调试信息说明
info (LOG_INFO) 基本的通知信息
notice (LOG_NOTICE) 普通信息,但是有一定的重要性
warning(LOG_WARNING) 警吿信息,但是还不会影响到服务或系统的运行
error(LOG_ERR) 错误信息, 一般达到err等级的信息已经可以影响到服务成系统的运行了
crit (LOG_CRIT) 临界状况信思,比err等级还要严重
alert (LOG_ALERT) 警告信息,比crit等级还要严重,必须立即采取行动
emerg (LOG_EMERG) 紧急等级信息,系统已经无法使用了
一般来说当出现error级别的信息时,就应该对服务系统进行对应的处理,否则到达更高级别的告警时,系统服务会出现严重问题,造成生产事故。
2.2 RSYSLOG日志服务的配置文件位置 使用rpm -qc rsyslog可以查看rsyslog的相关的配置文件,一般来说服务的配置文件都是以.conf为后缀的。
Linux-本地日志服务管理(rsyslog基础)
文章图片

所以可知rsyslog的配置文件为/etc/rsyslog.conf。
2.3 配置文件解析 rsyslog日志服务配置文件主要有三大模块。
2.3.1 功能模块配置(MODULES)
Linux-本地日志服务管理(rsyslog基础)
文章图片

功能模块是指rsyslog所开启的功能,通过注释符号“#”来标记一个模块功能是否开启。
2.3.2 全局配置 (GLIVAK DURECTUVES)
Linux-本地日志服务管理(rsyslog基础)
文章图片

全局配置是指rsyslog服务中所有子配置文件都需要遵守的规则,当子配置文件与全局配置冲突的时候,采取全局配置生效。
2.3.3 规则(RULES)
Linux-本地日志服务管理(rsyslog基础)
文章图片

这里定义着什么服务到达什么日志消息级别的日志记录到哪里的信息。以*.info; mail.none; authpriv.none; cron.none /var/log/messages为例。
  • *.info:所有服务到达info级别的日志都将被记录在日志文件中
  • /var/log/messages:日志文件记录位置
  • mail.none:mail组的日志不记录在这个日志里,其余的.none意义相同
具体服务属于什么组,这由各个服务的配置文件决定(支持rsyslog的服务)。
除这里由rsyslog定义的组外,还有自定义LOCAL0-7共8个组由自己自定义规则,并将服务加入在对应组当中。
2.4 日志格式解析 由2.3.3可知,一般服务的日志都储存在/var/log/messages中,这里使用cat,查看一下日志信息的基本结构。
Linux-本地日志服务管理(rsyslog基础)
文章图片

Mar 13 22:39:27 localhost systemd: Started Hostname Service.为例。
  • Mar 13 22:39:27:时间
  • localhost:主机名称
  • systemd:服务名称
  • started Hostname Service.:事件
3.服务日志位置更改 要更改服务日志的位置,有以下几个步骤。
graph TD A[定位服务配置文件] --> B[修改该服务的日志组] B --> C[在rsyslog定义该日志组的日志记录规则] C --> D[重启rsyslod与对应服务] 3.1 修改服务日志组 以SSH服务为例,该服务的配置文件为/etc/ssh/sshd_config,进入编辑该服务配置文件。
Linux-本地日志服务管理(rsyslog基础)
文章图片

可以看见原来SSH的日志写入规则是定义在rsyslog的"authrriv"中的,由2.3.3中的截图可知,如果不对其进行修改,该服务的日志的写入位置应该为/var/log/secure中。先将SSH服务加入到自定义组LOCAL0中。(原有的配置最好采用注释的方法使他不生效,如果出了故障,方便还原)
Linux-本地日志服务管理(rsyslog基础)
文章图片

保存并退出。
3.2 修改rsyslog的日志组规则 在rsyslog的RULUES模块下,定义新的日志组LOCAL0日志写入规则
定义LOCAL0组内服务的所有日志全都写在/var/log/ssh.log中。
Linux-本地日志服务管理(rsyslog基础)
文章图片

保存并退出。
3.3 重启rsyslog与对应服务 重启rsyslog和ssh服务以使对应的配置文件生效。
Linux-本地日志服务管理(rsyslog基础)
文章图片

3.4测试 测试使用ssh连接192.168.186.4.
Linux-本地日志服务管理(rsyslog基础)
文章图片

查看/var/log/ssh.log是否有日志产生。
Linux-本地日志服务管理(rsyslog基础)
文章图片

4.网络日志传输 主机为192.168.186.5,想要将日志使用TCP连接方式,将日志传输到192.168.186.4 分为以下几个步骤。
graph TD A[.4主机防火墙开启514端口] --> B[.4主机配置rsyslog文件开启TCP接收日志服务] B --> C[.5主机配置日志传输至.4主机] 4.1 .4主机配置 1.防火墙开启514端口
[root@localhost ~]# firewall-cmd --zone=public --add-port=514/tcp --permanent success

2.编辑/etc/rsyslog.conf,开启TCP接收日志功能(19,20行注释删掉)
Linux-本地日志服务管理(rsyslog基础)
文章图片

3.重启防火墙服务与rsyslog服务
[root@localhost ~]# systemctl restart firewalld.service rsyslog.service
4.查看514端口是否正常打开
[root@localhost ~]# ss -ntap |grep 514 LISTEN025*:514*:*users:(("rsyslogd",pid=9617,fd=3)) LISTEN025:::514:::*users:(("rsyslogd",pid=9617,fd=4))

4.2 .5主机配置 【Linux-本地日志服务管理(rsyslog基础)】1.配置TCP传输日志消息
Linux-本地日志服务管理(rsyslog基础)
文章图片

2.重启rsyslog服务
[root@localhost ~]# systemctl restart rsyslog.service
4.3 测试 1.在.5主机输入
logger "this is testing log from 192.168.186.5"
2.在.5主机查看messages信息,这条日志的时间是显示的是.4主机的时间
Linux-本地日志服务管理(rsyslog基础)
文章图片

4.4是不是虚拟机BUG呢 由于rsyslog日志中在未经过特殊设置只显示主机名,不显示IP地址,所以区分不同主机的信息需要更改主机名称。
将.5主机的主机名称设置为store5。
[root@localhost ~]# hostnamectl set-hostname store5 [root@localhost ~]# su root [root@store5 ~]#

测试日志消息为
logger "this is test log from store5"
.4主机接收到的日志中主机名依旧为localhost(未改名的主机名称)
Linux-本地日志服务管理(rsyslog基础)
文章图片

将.5主机的网络断开重连后再次测试,主机名依旧没有改变。重启后主机名才变化。
Linux-本地日志服务管理(rsyslog基础)
文章图片

    推荐阅读