linux下的⽇志采集---rsyslog
⼀、linux⽇志⽂件及⽇志分析
1、linux⽇志简介
Linux系统拥有⾮常灵活和强⼤的⽇志功能,可以保存⼏乎所有的操作记录,并可以从中检索出我们需要的信息。
⼤部分Linux发⾏版默认的⽇志守护进程为 syslog(后续升级rsyslog),位于 /etc/syslog 或 /etc/syslogd,默认配置⽂件为 /f,任何希望⽣成⽇志的程序都可以向syslog 发送信息。
Linux系统内核和许多程序会产⽣各种错误信息、警告信息和其他的提⽰信息,这些信息对管理员了解系统的运⾏状态是⾮常有⽤的,所以应该把它们写到⽇志⽂件中去。完成这个过程的程序就是syslog。syslog可以根据⽇志的类别和优先级将⽇志保存到不同的⽂件中。例如,为了⽅便查阅,可以把内核信息与其他信息分开,单独保存到⼀个独⽴的⽇志⽂件中。默认配置下,⽇志⽂件通常都保存在“/var/log”⽬录下。
2、⽇志类型
下⾯是常见的⽇志类型,但并不是所有的Linux发⾏版都包含这些类型:
类型说明
auth⽤户认证时产⽣的⽇志,如login命令、su命令。
authpriv与 auth 类似,但是只能被特定⽤户查看。
console针对系统控制台的消息。
cron系统定期执⾏计划任务时产⽣的⽇志。
daemon某些守护进程产⽣的⽇志。
ftp FTP服务。write.blog.csdn/postedit/72920400
kern系统内核消息。
local0.local7由⾃定义程序使⽤。
lpr与打印机活动有关。
mail邮件⽇志。
mark 产⽣时间戳。系统每隔⼀段时间向⽇志⽂件中输出当前时间,每⾏的格式类似于 May 26 11:17:09 rs2 -- MARK --,可以由此推断系统发⽣故障的⼤概时间。
news⽹络新闻传输协议(nntp)产⽣的消息。
ntp⽹络时间协议(ntp)产⽣的消息。
user⽤户进程。
uucp UUCP⼦系统
3、常见⽇志⽂件
所有的系统应⽤都会在/var/log ⽬录下创建⽇志⽂件,或创建⼦⽬录再创建⽇志⽂件。如:
我们可以粗略的分为两类⽇志:系统⽇志和应⽤⽇志,系统⽇志主要存放系统内置程序或系统内核之类的⽇志信息如alternatives.log 、btm p等,应⽤⽇志主要是安装的第三⽅应⽤产⽣的⽇志如tomcat7 、apache2等。
⽂件⽬录/⽇志名称记录信息
/
var/log/alternatives.log系统的⼀些更新替代信息记录,如系统软件包升级更新,记录了程序作⽤,⽇期,命令,成功与否的返回码/var/log/apport.log应⽤程序崩溃信息记录,暂时这⽅⾯⽇志信息
/var/log/apt/history.log使⽤apt-get安装卸载软件的信息记录,包含时间、安装命令、版本信息、结束时间等
/var/log/apt/term.log使⽤apt-get时的具体操作,如 package 的下载打开等
/var/log/apt/term.log使⽤apt-get时的具体操作,如 package 的下载打开等
⽂件⽬录/⽇志名称记录信息
/var/log/auth.log登录认证的信息记录,包含:⽇期与 ip 地址的来源以及登陆的⽤户与⼯具
/var/log/boot.log系统启动时的程序服务的⽇志信息
/var/log/btmp错误登陆的信息记录
/var/log/Consolekit/history控制台的信息记录
/var/log/dist-upgrade dist-upgrade这种更新⽅式的信息记录
/var/log/dmesg启动时,显⽰屏幕上内核缓冲信息,与硬件有关的信息
/var/log/dpkg.log dpkg命令管理包的⽇志。
/var/log/faillog⽤户登录失败详细信息记录
/var/log/fontconfig.log与字体配置有关的信息记录
/var/log/kern.log内核产⽣的信息记录,在⾃⼰修改内核时有很⼤帮助
/var/log/lastlog⽤户的最近信息记录
/var/log/wtmp登录信息的记录。wtmp可以出谁正在登陆进⼊系统,谁使⽤命令显⽰这个⽂件或信息等
/var/log/syslog系统信息记录
⼆、rsyslog⽇志采集
1、rsyslog介绍
linux下的⽇志是如何产⽣的,从上⾯可以看出⼤部分的⽇志信息似乎格式都都很类似,并且为什么都会出现在这个⽂件夹中。
这样的实现可以通过两种⽅式,⼀种是由软件开发商⾃⼰来⾃定义⽇志格式然后指定输出⽇志位置,还有⼀种⽅式就是 Linux 提供的⽇志服务程序,⽽我们这⾥系统⽇志是通过 syslog 来实现,提供⽇志管理服务。
syslog 是⼀个系统⽇志记录程序,在早期的⼤部分 Linux 发⾏版都是内置 syslog,让其作为系统的默认⽇志收集⼯具,虽然时代的进步与发展,syslog 已经年⽼体衰跟不上时代的需求,所以他被 rsyslog 所代替了,较新的Ubuntu、Fedora 等等都是默认使⽤ rsyslog 作为系统的⽇志收集⼯具
rsyslog的全称是 rocket-fast system for log,它提供了⾼性能,⾼安全功能和模块化设计。rsyslog能够接受从各种各样的来源,将其输⼊,输出的结果到不同的⽬的地。rsyslog可以提供超过每秒⼀百万条消息给⽬标⽂件,
这样能实时收集⽇志信息的程序都会有其守护进程如 rsyslog 的守护进程便是 rsyslogd
rsyslog的特性:1.多线程
                2.⽀持加密协议:ssl,tls,relp
                3.mysql、oracle、postgreSQL
                4.过滤⽇志内容的部分信息
5.配置⽇志输出格式linux系统安装步骤csdn
6.等等..
2、rsyslog配置
1)⾸先查看⼀下当前linux系统中rsyslog是哪个版本,
rsyslogd -version
如果rsyslog不存在,安装rsyslog
centos:yum -y rsyslog
debian:apt-get install rsyslog
2)rsyslog配置⽂件
配置⽂件/f⼤概分为三个部分:MODULES、GLOBAL DIRECTIVES、RULES
  #MODULES
  这个部分是针对接收配置的,主要是指定接收⽇志的协议和端⼝。若要配置⽇志服务器,则需要将相应的配置项去掉注释。  #GLOBAL DIRECTIVES
  这个部分主要⽤来配置模板,模板的作⽤是指定你希望在⽇志⽂件中保存的⽇志格式。
  默认配置为:    # Use default timestamp format
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
debian7默认的配置⽂件
>>>##
#### MODULES ####
>>>##
$ModLoad imuxsock #装载imuxsock模块
$ModLoad imklog    #装载imklog模块
*.* @192.168.2.72:514
>>>>>##
#### GLOBAL DIRECTIVES ####
>>>>>##
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
$FileOwner root
$FileGroup adm
$FileCreateMode 0640
$DirCreateMode 0755
$Umask 0022
$WorkDirectory /var/spool/rsyslog
$IncludeConfig /etc/rsyslog.d/*.conf
>>>
#### RULES ####
>>>
auth,authpriv.*            /var/log/auth.log
*.*;        -/var/log/syslog
daemon.*            -/var/log/daemon.log
kern.*                -/var/log/kern.log
lpr.*                -/var/log/lpr.log
mail.*                -/var/log/mail.log
user.*                -/var/log/user.log
mail.info            -/var/log/mail.info
mail.warn            -/var/log/mail.warn
<            /var/
<            /var/log/
*.=debug;\
;\
<;    -/var/log/debug
*.=info;*.=notice;*.=warn;\
;\
;\
        -/var/log/messages
*.emerg                :omusrmsg:*
daemon.*;mail.*;\
<;\
*.=debug;*.=info;\
*.=notice;*.=warn    |/dev/xconsole
3、rsyslog⼯作流程
简单的来说:⾸先数据通过进⼊主队列,然后经由分解到各个⼦队列,最后交给。
4、⽇志采集案例
1)Apache⽇志配置远程Syslog采集
第⼀步:初始化⽇志采集环境
先确保系统中的/var/spool/rsyslog ⽬录已存在:
mkdir -v /var/spool/rsyslog
if [ "$(grep Ubuntu /etc/issue)" != "" ]; then
chown -R syslog:adm /var/spool/rsyslog
fi
第⼆步:创建Apahce⽇志⽂件采集配置
新建Rsyslog的⼦配置⽂件,他通常在/etc/rsyslog.d下,需要/f去包含这个⽬录下的⼦配置⽂件:
vim /etc/rsyslog.f
复制以下内容到f,注意注释部分的修改:
$ModLoad imfile
$InputFilePollInterval 10
$WorkDirectory /var/spool/rsyslog
$PrivDropToGroup adm
## Apache访问⽇志⽂件路径,根据实际情况修改:
$InputFileName /var/log/apache2/access.log
$InputFileTag apache-access:
$InputFileStateFile stat-apache-access
$InputFileSeverity info
$InputFilePersistStateInterval 25000
$InputRunFileMonitor
## Apache错误⽇志⽂件路径,根据实际情况修改:
$InputFileName /var/log/apache2/error.log
$InputFileTag apache-error:
$InputFileStateFile stat-apache-error
$InputFileSeverity error
$InputFilePersistStateInterval 25000
$InputRunFileMonitor
## 指定⽇志格式模板:
$template BiglogFormatApache,"%msg%\n"
## 注意syslog⽇志服务器接收地址,根据实际情况修改:
if $programname == 'apache-access' then @:514;BiglogFormatApache
if $programname == 'apache-access' then ~
if $programname == 'apache-error' then @:514;BiglogFormatApache
if $programname == 'apache-error' then ~
注:通过Rsyslog配置⽇志接收端的时候,如上⽰例@:514,⽤于指定接收⽇志的服务器的协议、IP地址和端⼝号。使⽤@代表⾛UDP协议,使⽤@@代表⾛TCP协议,冒号后⾯的514代表接收端⼝。
第三步:重启Rsyslog服务,⽇志采集开始⼯作
service rsyslog restart
此时可以通过观察系统中的Rsyslog⽇志,确定是否正常⼯作。
cat /var/log/messages |grep rsyslog
2)Linux系统⽇志配置远程Syslog采集

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。

发表评论