Linux日志管理
时间是日志管理的必要条件,必须要保持准确
CentOS系统中综合日志记录的内容存放在 /var/log/messages 文件中
日志的事件记录格式:
日期时间 主机 进程[pid]: 事件内容
在Centos6、7开始日志管理的有rsyslog服务、ELK,在本文中介绍的是rsyslog
rsyslog服务
因为不同的应用程序有不同特性,为便于查看,所以rsyslog对这些不同的应用程序(称为Facility 设施)进行了分类:
auth、authpriv、cron、daemon、ftp、kern、lpr、mail、news、security(auth)、user、uucp、local0-local7(自定义)、syslog
因为日志事件的多样性,rsyslog又会对不同Facility的类别定义不同的Priority(优先级别),级别从低到高(事件信息越来越严重)如下:
debug、info、notice、warn(warning)、err(error)、crit(critical)、alert、emerg(panic)
通过结合上面的Facility 设施和Priority优先级别,在配置文件中/etc/rsyslog.conf中定义了不同应用程序存放日志的类型、级别以及分类后的存放路径
(logger是一个测试日志的小工具,可生成一个日志信息)
rsyslog的配置
rsyslog是以“.service”结尾的服务,默认开机自动启动
端口号:514(默认是不打开端口号的)
主配置文件/etc/rsyslog.conf是由以下三部分组成:
MODULES 模块相关配置
GLOBAL DIRECTIVES 全局配置
RULES 日志记录的相关规则配置
从配置文件/etc/rsyslog.d/*.conf
每个设施对应的级别在配置文件中以“Facility.Priority TARGET”格式进行设置,其中TARGET有以下几种分类:
1./var/log/FILE_NAME 注意当路径前有“-”符号,则表示是异步写入日志
2.USER_NAME or * 表示不记录日志,直接通知指定用户,普通用户可能会因为权限问题接收不到
3.@IP(UDP协议);@@IP (TCP协议) 表示将日志发送至指定主机下的/etc/rsyslog.conf文件中默认指定的文件中
远程主机日志若是需要发送至rsyslog服务器进行保存,需要进行如下设置:
1.rsyslog服务器要在配置文件 /etc/rsyslog.conf 中取消tcp或者udp模块的注释以及开启对应协议下的端口号
2.远程主机在配置文件/etc/rsyslog.conf中的RULES规则配置下,定义Facility.Priority,以及在TARGET上填写上述得第3种配置
日志管理的命令:journalctl(Centos7开始有),配置文件 /etc/systemd/journald.conf,“journalctl -h”可查看相关用法
不同日志有着对应的的查看小命令,如下:
/var/log/btmp 用户失败登录日志----------------------> lastb
/var/log/wtmp 用户正常登录日志----------------------> last
/var/log/lastlog 每个用户最近一次登录信息----------> lastlog
/var/log/dmesg 系统引导过程日志----------------------> dmesg
实验:利用rsyslog将日志记录于MySQL数据库中
1.在rsyslog Server上安装需要的mysql模块程序包:rsyslog-mysql包
rsyslog-mysql包会提供专有的为日志建立的mysql数据库脚本,以及自带的模块,如下:
/usr/lib64/rsyslog/ommysql.so
/usr/share/doc/rsyslog-8.24.0/mysql-createDB.sql
2.在MySQL Server,将第1步rsyslog-mysql包产生的脚本拷贝过来,并导入至MySQL数据库中,授权指定用户用来管理脚本生成的日志数据库
3.在rsyslog Server修改配置文件,加入rsyslog-mysql包自带的模块,并且结合TCP/UDP模块、端口,一起开启,并且在RULES规则下补充一条自定义规则,格式如下:
Facility.Priority :ommysql:DB_HOST_IP,DB_NAME,DB_USER,PASSWORD(对应填写的是MySQL服务器地址以及被授权管理的相关信息)
4.启动服务,即可成功运用
根据上一个实验,进行如下实验
实验:在网页站点通过loganalyzer应用程序更好的展示数据库的日志(此次实验基于php模块方式)
1.在rsyslog Server上,安装httpd、php、php-mysql以及php-gd程序包
2.下载loganalyzer程序包至rsyslog server,解压缩并将目录下的src文件夹拷贝至默认的网页站点目录下,还需另外执行两条命令:
touch config.php
chmod 666 config.php(最少需要w权限,或者可使apache用户对其有写权限)
3.启动httpd服务后,在网页上打开loganalyzer,在界面上进行其配置如下:
(注意:Monitorware下的选项根据实际设定进行填写,注意大小写)
4.重启相关服务,即可实现应用
Logrotate日志存储
此工具是用来管理储存的日志文件不会过大,每个日志存储达到设定值大小后,会滚动生成新的文件继续进行存储新的日志
可在配置文件/etc/logrotate.conf 或在 /etc/logrotate.d/ 定义不同应用服务的转储策略