日志服务管理

312 阅读8分钟

日志服务管理**

1 系统日志管理

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是CentOS 6以后版本的系统管理服务:它提供了高性能,出色的安全性和模块化设计。尽管rsyslog最初是常规的syslogd,但发展成为一种瑞士军刀式的记录工具,能够接受来自各种来源的输入,并将其转换,然后输出到不同的目的地。

当应用有限的处理时,RSYSLOG每秒可以将超过一百万的消息传递到本地目的地。即使在远程的目的地和更精细的处理中,性能通常也被认为是惊人的”。

rsyslog 特性

  • 多线程
  • UDP, TCP, SSL, TLS, RELP
  • MySQL, PGSQL, Oracle实现日志存储
  • 强大的过滤器,可实现过滤记录日志信息中任意部分
  • 自定义输出格式
  • 适用于企业级中继
[root@localhost ~]# rpm -qi rsyslog
Name        : rsyslog
Version     : 8.24.0
Release     : 12.el7
Architecture: x86_64
Install Date: 2022年03月17日 星期四 06时15分25秒
Group       : System Environment/Daemons
Size        : 2001814
License     : (GPLv3+ and ASL 2.0)
Signature   : RSA/SHA256, 2017年08月11日 星期五 03时43分05秒, Key ID 24c6a8a7f4a80eb5
Source RPM  : rsyslog-8.24.0-12.el7.src.rpm
Build Date  : 2017年08月07日 星期一 08时56分12秒
Build Host  : c1bm.rdu2.centos.org
Relocations : (not relocatable)
Packager    : CentOS BuildSystem <http://bugs.centos.org>
Vendor      : CentOS
URL         : http://www.rsyslog.com/
Summary     : Enhanced system logging and kernel message trapping daemon
Description :
Rsyslog is an enhanced, multi-threaded syslog daemon. It supports MySQL,
syslog/TCP, RFC 3195, permitted sender lists, filtering on any message part,
and fine grain output format control. It is compatible with stock sysklogd
and can be used as a drop-in replacement. Rsyslog is simple to set up, with
advanced features suitable for enterprise-class, encryption-protected syslog
relay chains.

1.1.3 ELK

ELK:由Elasticsearch, Logstash, Kibana三个软件组成

  • 非关系型分布式数据库基于apache软件基金会jakarta项目组的项目lucene
  • Elasticsearch是个开源分布式搜索引擎,可以处理大规模日志数据,比如:Nginx、Tomcat、系统日志等功能
  • Logstash对日志进行收集、分析,过滤,并将其存储供以后使用
  • Kibana 可以提供的日志分析友好的 Web 界面

1.2 rsyslog 管理

1.2.1 系统日志术语

  • facility:设施,从功能或程序上对日志进行归类
#内置分类
auth(验证), authpriv, cron(定时任务), daemon,ftp,kern, lpr, mail, news, security(auth), user, uucp, syslog
#自定议的分类
local0-local7
  • Priority 优先级别,从低到高排序
debug, info, notice, warn(warning), err(error), crit(critical), alert, emerg(panic)
  • 参看帮助: man 3 syslog,man logger
[root@centos8 ~]#man 3 syslog
level
       This  determines  the  importance  of the message.  The levels are, in order of decreasing impor‐
       tance:

       LOG_EMERG      system is unusable

       LOG_ALERT      action must be taken immediately

       LOG_CRIT       critical conditions

       LOG_ERR        error conditions

       LOG_WARNING    warning conditions

       LOG_NOTICE     normal, but significant, condition

       LOG_INFO       informational message

       LOG_DEBUG      debug-level message

日志等级**

等级名称说 明
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)疼痛等级信息,系统已经无法使用了
*代表所有日志等级。比如,“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:日志记录相关的规则配置
[root@localhost ~]#rpm -ql rsyslog |grep imuxsock
/usr/lib64/rsyslog/imuxsock.so

RULES配置格式:

facility.priority; 
#分类      优先级


*: 所有级别
none:没有级别,即不记录
PRIORITY:指定级别(含)以上的所有级别
=PRIORITY:仅记录指定级别的日志信息

文件路径:通常在/var/log/,文件路径前的-表示异步写入
用户:将日志事件通知给指定的用户,* 表示登录的所有用户
日志服务器:@host,把日志送往至指定的远程UDP日志服务器 @@host 将日志发送到远程TCP日志服务器
管道: | COMMAND,转发给其它命令处理

通常的日志文件的格式:

日志文件有很多,如: /var/log/messages,cron,secure等,基本格式都是类似的。格式如下

[root@localhost ~]# tail /var/log/messages
Mar 30 22:30:01 localhost systemd: Started Session 12 of user root.
Mar 30 22:30:01 localhost systemd: Starting Session 12 of user root.
Mar 30 22:40:01 localhost systemd: Started Session 13 of user root.
Mar 30 22:40:01 localhost systemd: Starting Session 13 of user root.
Mar 30 22:50:01 localhost systemd: Started Session 14 of user root.
Mar 30 22:50:01 localhost systemd: Starting Session 14 of user root.
Mar 30 23:00:01 localhost systemd: Started Session 15 of user root.
Mar 30 23:00:01 localhost systemd: Starting Session 15 of user root.
Mar 30 23:01:01 localhost systemd: Started Session 16 of user root.
Mar 30 23:01:01 localhost systemd: Starting Session 16 of user root.

1.3 实际操作,将ssh服务的日志单独设置

原来ssh的日志位置:    /var/log/secure 
[root@localhost ~]#tail -f /var/log/secure
#查看ssh服务的日志位置


[root@localhost ~]#vim /etc/ssh/sshd_config
#修改ssh配置文件,32下一行添加自己的自定义
32 #SyslogFacility AUTHPRIV
33 SyslogFacility LOCAL6

local 0-7


[root@localhost ~]#vim /etc/rsyslog.conf
#76 行添加自己的文件位置
74 local6.*                                                /var/log/ssh.log

1.4网络日志(远程日志功能)

#开启日志的远程传输功能在192.168.91.100
[root@localhost ~]#rpm -ql rsyslog 
/usr/lib64/rsyslog/imtcp.so
/usr/lib64/rsyslog/imudp.so
[root@localhost ~]#ss -ntap |grep 514



[root@localhost ~]#vim /etc/rsyslog.conf 
#打开19 20 行
19 #$ModLoad imtcp
20 #$InputTCPServerRun 514
[root@localhost ~]#ss -ntap |grep 514
#查看514端口是否打开

#在192.168.91.101 上设置发送到哪台主机去
[root@centos7-2 ~]#vim /etc/rsyslog.conf 
#修改配置文件
54 *.info;mail.none;authpriv.none;cron.none                /var/log/messages
#复制54行                                                   改成ip地址
55 *.info;mail.none;authpriv.none;cron.none                @@192.168.91.100

如果修改 的是udp  @192.168.91.100
如果要想指定端口  @192.168.91.100:端口号

[root@centos7-2 ~]#logger "this is test log from 192.168.91.101 2"
#测试,写日志进去

1.5 日志文件

  • /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的日志
[root@localhost ~]#lastb
#btmp 无法查看需要使用 lastb  来查看
root     :0           :0               Tue Mar  8 01:32 - 01:32  (00:00)    
root     ssh:notty    192.168.91.101   Tue Mar  8 00:53 - 00:53  (00:00)    
root     ssh:notty    192.168.91.101   Tue Mar  8 00:50 - 00:50  (00:00)    

btmp begins Tue Mar  8 00:50:35 2022
[root@localhost ~]#last
#上一次成功登录包括重启
root     pts/2        192.168.91.101   Tue Mar  8 00:50 - 00:53  (00:02)    
root     pts/0        192.168.91.1     Mon Mar  7 23:44   still logged in   


[root@localhost ~]#lastlog
#最后一次登录