rsyslog日志总结

一 rsyslog介绍

syslogd被rsyslog取代

将日志写入数据库 可以利用模块和插件控制输入输出

rsyslog程序管理本地和远程日志

安装软件

根据需求修改配置文件

启动服务

测试验证

日志:
历史事件:时间,地点,人物,事件
日志级别:事件的关键性程度,Loglevel
系统日志服务:
sysklogd :CentOS 5之前版本
syslogd: system application 记录应用日志
klogd: linux kernel 记录内核日志
事件记录格式:
日期时间 主机 进程[pid]: 事件内容
C/S架构:通过TCP或UDP协议的服务完成日志记录传送,将分布在不同主机的日志实现集中管理

rsyslog特性:CentOS6和7
多线程
UDP, TCP, SSL, TLS, RELP
MySQL, PGSQL, Oracle实现日志存储
强大的过滤器,可实现过滤记录日志信息中任意部分
自定义输出格式
ELK:elasticsearch, logstash, kibana
非关系型分布式数据库
基于apache软件基金会jakarta项目组的项目lucene
Elasticsearch是个开源分布式搜索引擎
Logstash对日志进行收集、分析,并将其存储供以后使用
kibana 可以提供的日志分析友好的 Web 界面

二系统日志文件介绍

日志格式 文本日志/二进制日志/数据库日志

常见日志文件

/var/log/boot.log 系统引导日志,记录开机启动信息

/var/log/dmesg 核心的启动日志 (硬件相关)

/var/log/messages 系统的日志文件

/var/log/maillog 邮件服务的日志

/var/log/xferlog ftp服务的日tmp志

/var/log/secure 网络连接及系统登录的安全信息

/var/log/cron 定时任务的日志

/var/log/wtmp 记录所有的登入和登出 last -f 查看

/var/log/btmp 记录失败的登入尝试

三:日志级别

# man   syslog
日志信息分为以下级别,从上到下级别依次降低
none       不算是一个等级,它表示不记录服务的所有信息
0  emerg      系统不可用
1  alert      特别留意的报警信息
2  crit       非常严重的状况
3  err        错误信息
4  warning    警告信息
5  notice     稍微要注意的信息
6  info       正常信息
7  debug      调试信息,开发人员使用

四.日志配置

1.日志定义相关符号

配置文件中常见的表示符号
.       <---  用来分隔服务和级别
*       <---  任何服务,或者任何级别
=       <---有等号表示等于某一级别,没有等号表示或者等于某一级别   mail.=info
mail.info
!       <---  排除操作,前面有相同服务的表达式,这个操作才有意义
        代表从前面表达式所包含的内容中排除某些内容
;     <--- 用于分隔不同的服务,级别组合
cron.=info;mail.info
,     <--- 用于分隔不同的服务   cron,mail.=info
-     <--- 用于指定目标文件时,代表异步写入          -/var/log/maillog

举例:

cron.err  0123
cron.=info  6
cron.!=info 0123457
mail,cron,ftp=err  3
cron.info;cron.!err
0123456    4567
456  #取交集
mail.info;mail.!=err
0123456    0124567
012456 #取交集

配置文件详解

/etc/rsyslog.conf    rsyslog日志的主配置文件
/etc/rsyslog.d/*.conf    rsyslog日志的辅助配置文件
/var/log/        日志文件的目录
cat /etc/rsyslog.conf
*.info;mail.none;authpriv.none;cron.none                /var/log/messages
#记录所有服务产生的日志,除了mail/验证/任务计划相关日志都记录/
authpriv.*         /var/log/secure
telnet  ssh  设备载体

#记录所有跟验证有关日志信息               mail.*             -/var/log/maillog                   #记录所有跟邮件有关日志信息
cron.*               /var/log/cron
#记录所有跟任务计划有关日志信息
*.emerg               :omusrmsg:*
#把所有级别为emerg的信息发送给所有登录到系统上的用户
uucp,news.crit      /var/log/spooler
local7.*           /var/log/boot.log
#记录所有跟启动相关的日志
1.修改sshd的配置文件
vim /etc/ssh/sshd_config
SyslogFaclity local1


2.修改rsyslog程序的配置文件
vim /etc/rsyslog.conf
*.info;mail.none;authpriv.none;cron.none;local1.none
authpric.*;local1.none
local1.*
3.重启服务测试验证

总结:

本地日志管理:服务的日志和系统的日志

服务日志:

1.服务本身可以做管理自己的日志,比如ftp服务。----->服务的配置文件,vsftpd.conf

2.使用rsyslog程序管理服务的日志。rsyslog.conf--->日志设备载体.info /var/log/ftp.log

五远程日志管理

目的:把多台服务器的日志远程记录到其中一台日志服务器集中化管理,方便对其统一分析和管理;

需求:

将ssh服务的日志远程记录到日志管理服务器上保存

环境准备

ssh-server 10.1.1.250(管理端)

log-server:10.1.1.1

ssh-server:10.1.1.3

client:10.1.1.2

思路:

1.在ssh-server上将ssh服务的日志单独记录

2.在ssh-server上通过修改rsyslog.conf文件来将本地ssh服务日志远程传送到log-server服务器上

3.在log-server上打开514端口等待客户来传送日志

4.测试验证

步骤:

ssh-server
1.在日志服务器端完成以下事情
1)安装rsyslog文件
rpm -qa rsyslog
2)在log-server上打开514端口
vim /etc/rsyslog.conf
# Provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514

# Provides TCP syslog reception
$ModLoad imtcp
$InputTCPServerRun 514
systemctl  restart rsyslog
netstat -tnulp|grep 514
2.在ssh-server上将ssh服务的日志单独记录
修改sshd的配置文件
vim /etc/ssh/sshd_config
SyslogFaclity local1
1)ssh服务的日志载体定义为local1
2)删除原来的本地保存
#local1.*                         /var/log/sshd.log
local1.* @@10.1.1.1:514
第一个@代表UDP协议传送;@@代表tcp协议传输
3)重启rsyslog服务
systemctl  restart rsyslog
useradd stu1
echo  123|passwd --stdin stu1

日志轮转

日志轮转介绍

日志轮换
logrotate 日志轮换的工具
日志存放的地方: /var/log/*

常见的日志文件:
/var/log/messages
/var/log/wtmp
/var/log/btmp

轮换工具的配置文件: /etc/logrotate.conf

/var/log/wtmp { <---需要轮换的日志的据对路径
monthly <---采用每个月轮换一次的设定
minsize 1M <----日志轮换的时候日志文件必须不少于1M,尽管轮换的时间到了,如果文件达不到1M也不去轮换
create 0664 root utmp <----新建的日志文件权限是什么?拥有者是谁,组是谁?
rotate 1
}

size 512k <---尽管轮换的时间还没到,如果日志文件达到512kb,也进行轮换

对ssh服务日志进行轮转

要求:

1.每天进行轮转,保留5天的日志文件

2.日志文件大小大于5M进行轮转,不管是否到轮转周期

思路:

修改logrotate程序的主配置文件或者在/etc/logrotate.d/目录创建一个文件

步骤:

log-server
vim /etc/rsyslog.conf
local1.*                         /var/log/sshd.log
#local1.* @@10.1.1.1:514
find /var/log -type f -exec rm -f {} \;
find /var/log/ -type f -delete
systemctl restart rsyslog
方法1:修改主配置文件
vim /etc/logrotate.conf
...
/var/log/sshd.log {
daily
rotate 5
size 5M
}
测试验证
logrotate -f /etc/logrotate.conf

方法2:创建子配置文件
vim /etc/logrotate.d/sshd
/var/log/sshd.log {
missingok
daily
rotate 5
size 5M
}
nodateext   //不以日期作为后缀
find /var/log/ -type f -delete
systemctl restart rsyslog
logrotate -f /etc/logrotate.conf

对FTP服务日志进行轮转

要求:

1.每个月轮转1次,保留一个月的日志

2.日志文件大小超过500M不管有没有到轮转周期必须轮转

3.如果日志文件不存在也不报错

思路:

1.首先得在当前系统中有ftp服务的日志

ftp服务自己本身管理日志(/var/log/xferlog)

交给rsyslog程序管理(vsftpd.conf--->syslog_enable=YES;设备载体默认是FTP);rsyslog.conf

----->ftp.* /var/log/ftp.log

log-server
yum install vsftpd -y
systemctl restart vsftpd
systemctl enable vsftpd
vim /etc/rsyslog.conf
ftp.*                                     /var/log/ftp.log
vim /etc/vsftpd/vsftpd.conf
lftp localhost
vim /etc/logrotate.d/vsftpd
添加
/var/log/ftp.log {
missingok
monthly
rotate 1
size 500M
}
logrotate -f /etc/logrotate.conf
03-06 22:12