本文转载http://litaotao.blog.51cto.com/6224470/1283871,觉得他前面对日志服务配置文件相关参数将的很详细,自己在通过查阅相关资料,在这位博主基础上增加了很多东西,使日志服务器学习更加完整,方便以后自己学习。
参考:http://gm100861.blog.51cto.com/1930562/1191164
目录:
扩扑图
rsyslog的介绍
logrotate日志滚动的介绍
rsyslog的存储途径
基于web的loganalyzer日志分析工具的搭建
一、rsyslog的介绍
Linux的日志记录了用户在系统上一切操作,看日志去分析系统的状态是运维人员必须掌握的基本功。
rsyslog日志服务器的优势:
1、日志统一,集中式管理
2、日志实时传送到一个更加安全的远端服务器上,真正记录用户行为,使日志的2次更改可能性大大降低,从而能够对日志进行真实回放,便于问题追踪。
rsyslog的新功能:
rsyslog是一个加强版的syslog,具有各种各样的新功能,典型的有:
1、直接将日志写入到数据库。
2、日志队列(内存队列和磁盘队列)。
3、灵活的模板机制,可以得到多种输出格式。
4、插件式结构,多种多样的输入、输出模块。
5、可以把日志存放在Mysql ,PostgreSQL,Oracle等数据库中
rsyslog的软件包
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
[root@jie1 ~]
# rpm -qa | grep rsyslog
rsyslog-5.8.10-6.el6.x86_64
#软件包系统默认已经安装
[root@jie1 ~]
# rpm -ql rsyslog #只显示了部分信息
/etc/logrotate
.d
/syslog
/etc/rsyslog
.conf
#rsyslog的配置文件
/etc/sysconfig/rsyslog
/lib64/rsyslog/imfile
.so
/lib64/rsyslog/imklog
.so
#rsyslog的模块,i开头的是输入模块
/lib64/rsyslog/immark
.so
/lib64/rsyslog/impstats
.so
/lib64/rsyslog/imptcp
.so
/lib64/rsyslog/imtcp
.so
/lib64/rsyslog/imudp
.so
/lib64/rsyslog/imuxsock
.so
/lib64/rsyslog/lmnet
.so
/lib64/rsyslog/lmnetstrms
.so
/lib64/rsyslog/lmnsd_ptcp
.so
/lib64/rsyslog/lmregexp
.so
/lib64/rsyslog/lmstrmsrv
.so
/lib64/rsyslog/lmtcpclt
.so
/lib64/rsyslog/lmtcpsrv
.so
/lib64/rsyslog/lmzlibw
.so
/lib64/rsyslog/ommail
.so
#o开头的模块是输出模块
/lib64/rsyslog/omprog
.so
/lib64/rsyslog/omruleset
.so
/lib64/rsyslog/omtesting
.so
/lib64/rsyslog/omuxsock
.so
/lib64/rsyslog/pmlastmsg
.so
|
rsyslog配置文件(/etc/rsyslog
.conf)
的详解
1
2
3
4
5
6
7
8
|
#### MODULES 日志的模块####
$ModLoad imuxsock
#imuxsock是模块名,支持本地系统日志的模块
$ModLoad imklog
#imklog是模块名, 支持内核日志的模块
#$ModLoad immark #immark是模块名,支持日志标记
#$ModLoad imudp #imupd是模块名,支持udp协议
#$UDPServerRun 514 #允许514端口接收使用UDP和TCP协议转发过来的日志
#$ModLoad imtcp #imtcp是模块名,支持tcp协议
#$InputTCPServerRun 514
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
#### GLOBAL DIRECTIVES ####定义全局日志格式的指令
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
#定义日志格式默认模板
#### RULES ####
*.info;mail.none;authpriv.none;
cron
.none
/var/log/messages
#####记录所有日志类型的info级别以及大于info级别的信息到/var/log/messages,但是mail邮件信息,authpriv验证方面的信息和cron时间#任务相关的信息除外
authpriv.*
/var/log/secure
#####authpriv验证相关的所有信息存放在/var/log/secure
mail.* -
/var/log/maillog
#####邮件的所有信息存放在/var/log/maillog; 这里有一个-符号, 表示是使用异步的方式记录, 因为日志一般会比较大
cron
.*
/var/log/cron
####计划任务有关的信息存放在/var/log/cron
*.emerg * (*表示所有用户)
###记录所有的大于等于emerg级别信息, 以wall方式发送给每个登录到系统的人
uucp,news.crit
/var/log/spooler
####记录uucp,news.crit等存放在/var/log/spooler
local7.*
/var/log/boot
.log
####本地服务器的启动的所有日志存放在/var/log/boot.log中
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
###rsyslog.conf中日志规则的定义的格式
facitlity.priority Target
#facility: 日志设备(可以理解为日志类型):
==============================================================
auth
#pam产生的日志,认证日志
authpriv
#ssh,ftp等登录信息的验证信息,认证授权认证
cron
#时间任务相关
kern
#内核
lpr
#打印
mail
#邮件
mark(syslog)
#rsyslog服务内部的信息,时间标识
news
#新闻组
user
#用户程序产生的相关信息
uucp
#unix to unix copy, unix主机之间相关的通讯
local
1~7
#自定义的日志设备
===============================================================
#priority: 级别日志级别:
=====================================================================
debug
#有调式信息的,日志信息最多
info
#一般信息的日志,最常用
notice
#最具有重要性的普通条件的信息
warning, warn
#警告级别
err, error
#错误级别,阻止某个功能或者模块不能正常工作的信息
crit
#严重级别,阻止整个系统或者整个软件不能正常工作的信息
alert
#需要立刻修改的信息
emerg, panic
#内核崩溃等严重信息
###从上到下,级别从低到高,记录的信息越来越少,如果设置的日志内性为err,则日志不会记录比err级别低的日志,只会记录比err更高级别的日志,也包括err本身的日志。
=====================================================================
Target:
#文件, 如/var/log/messages
#用户, root,*(表示所有用户)
#日志服务器,@172.16.22.1
#管道 | COMMAND
|
二、logrotate日志滚动的介绍
所有的日志文件都会随着时间的推移和访问次数的增加而迅速增长,因此必须对日志文件进行定期清理以免造成磁盘空间的不必要的浪费,同时也加快了管理员查看日志所用的时间。因而logrotate就非常有存在的必要了,Redhat系统中已经默然安装logrotate且利用logrotate设置了相关对rsyslog日志迅速增长的设置。
logrotate的执行由crond服务实现。在/etc/cron.daily目录中,有个文logrotate,它实际上是个shell script,用来启动logrotate。
logrotate程序每天由cron在指定的时间(/etc/crontab)启动。
logrotate的软件包
1
2
3
4
5
6
7
8
9
10
11
12
13
|
[root@jie1 ~]
# rpm -qa | grep logrotate
logrotate-3.7.8-16.el6.x86_64
#日志回滚的软件包默认已经安装
[root@jie1 ~]
# rpm -ql logrotate
/etc/cron
.daily
/logrotate
/etc/logrotate
.conf
#日志回滚的配置文件
/etc/logrotate
.d
#日志回滚的子目录
/usr/sbin/logrotate
/usr/share/doc/logrotate-3
.7.8
/usr/share/doc/logrotate-3
.7.8
/CHANGES
/usr/share/doc/logrotate-3
.7.8
/COPYING
/usr/share/man/man5/logrotate
.conf.5.gz
/usr/share/man/man8/logrotate
.8.gz
/var/lib/logrotate
.status
|
logrotate的配置文件(/etc/logrotate.conf)详解
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
[root@jie1 ~]
# sed -e '/^#/d' -e '/^$/d' /etc/logrotate.conf
weekly
#每周清理一次日志文件
rotate 4
#保存四个轮换日志
create
#清除旧日志的同时,创建新的空日志文件
dateext
#使用日期为后缀的回滚文件 #可以去/var/log目录下看看
include
/etc/logrotate
.d
#包含/etc/logrotate.d目录下的所有配置文件
/var/log/wtmp
{
#对/var/log/wtmp这个日志文件按照下面的设定日志回滚
monthly
#每月轮转一次
create 0664 root utmp
#设置wtmp这个日志文件的权限,属主,属组
minsize 1M
#日志文件必须大于1M才会去轮换(回滚)
rotate 1
#保存一个轮换日志
}
/var/log/btmp
{
missingok
#如果文件丢失不报错
monthly
create 0600 root utmp
rotate 1
}
[root@jie1 ~]
# cat /etc/logrotate.d/syslog
/var/log/cron
#这些文件是rsyslog.conf文件中全局配置定义中指定的Target的路径
/var/log/maillog
/var/log/messages
/var/log/secure
/var/log/spooler
{
sharedscripts
postrotate
# 轮换之后重启rsyslog服务
/bin/kill
-HUP `
cat
/var/run/syslogd
.pid 2>
/dev/null
` 2>
/dev/null
||
true
endscript
}
|
三、rsyslog的存储途径
a)日志存储在指定的文件中
1
2
3
4
5
6
7
8
9
10
11
12
13
|
[root@jie1 ~]
# vim /etc/rsyslog.conf
############vim /etc/rsyslog.conf################################
#====注释掉两行,然后添加一行
#*.info;mail.none;authpriv.none;cron.none /var/log/messages
*.*
/systemlog/jie
.log
#authpriv.* /var/log/secure
#################################################################
#*.info;mail.none;authpriv.none;cron.none /var/log/messages
===
#这行表示,所有facitlity(设施)的info消息记录,及info级别以上的记录都会保存到 /var/log/messages文件中,除了邮件的所有信息,认证授权的所有信息,计划任务的所有信息。
#authpriv.* /var/log/secure
===
#这行表示认证授权的所有信息,都会保存在/var/log/secure文件中
*.*
/systemlog/jie
.log
===
#添加的这行表示所有设施的所有信息都会保存在 /systemlog/jie.log文件中,而且此文件不必自己创建,启动rsyslog服务时系统会自动创建,而且权限都是600
|