linux下的日志采集---rsyslog
来源:互联网 发布:java函数名命名规则 编辑:程序博客网 时间:2024/05/22 15:30
一、linux日志文件及日志分析
1、linux日志简介
Linux系统拥有非常灵活和强大的日志功能,可以保存几乎所有的操作记录,并可以从中检索出我们需要的信息。
大部分Linux发行版默认的日志守护进程为 syslog(后续升级rsyslog),位于 /etc/syslog 或 /etc/syslogd,默认配置文件为 /etc/syslog.conf,任何希望生成日志的程序都可以向 syslog 发送信息。
Linux系统内核和许多程序会产生各种错误信息、警告信息和其他的提示信息,这些信息对管理员了解系统的运行状态是非常有用的,所以应该把它们写到日志文件中去。完成这个过程的程序就是syslog。syslog可以根据日志的类别和优先级将日志保存到不同的文件中。例如,为了方便查阅,可以把内核信息与其他信息分开,单独保存到一个独立的日志文件中。默认配置下,日志文件通常都保存在“/var/log”目录下。
2、日志类型
下面是常见的日志类型,但并不是所有的Linux发行版都包含这些类型:
所有的系统应用都会在/var/log 目录下创建日志文件,或创建子目录再创建日志文件。如:
我们可以粗略的分为两类日志:系统日志和应用日志,系统日志主要存放系统内置程序或系统内核之类的日志信息如alternatives.log
、btmp
等,应用日志主要是安装的第三方应用产生的日志如tomcat7
、apache2
等。
文件目录/日志名称 记录信息
二、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.配置日志输出格式
6.等等..
2、rsyslog配置
1)首先查看一下当前linux系统中rsyslog是哪个版本,
rsyslogd -version
[root@master ~]# rsyslogd -version
rsyslogd 5.8.10, compiled with:
FEATURE_REGEXP: Yes
FEATURE_LARGEFILE: No
GSSAPI Kerberos 5 support: Yes
FEATURE_DEBUG (debug build, slow code): No
32bit Atomic operations supported: Yes
64bit Atomic operations supported: Yes
Runtime Instrumentation (slow code): No
See http://www.rsyslog.com for more information.
如果rsyslog不存在,安装rsyslog
centos:yum -y rsyslog
debian:apt-get install rsyslog
2)rsyslog配置文件
配置文件/etc/rsyslog.conf大概分为三个部分: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
*.*;auth,authpriv.none -/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
mail.err /var/log/mail.err
news.crit /var/log/news/news.crit
news.err /var/log/news/news.err
news.notice -/var/log/news/news.notice
*.=debug;\
auth,authpriv.none;\
news.none;mail.none -/var/log/debug
*.=info;*.=notice;*.=warn;\
auth,authpriv.none;\
cron,daemon.none;\
mail,news.none -/var/log/messages
*.emerg :omusrmsg:*
daemon.*;mail.*;\
news.err;\
*.=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下,需要/etc/rsyslog.conf去包含这个目录下的子配置文件:
vim /etc/rsyslog.d/apache-biglog.conf
复制以下内容到apache-biglog.conf,注意注释部分的修改:
$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 @10.x.x.x:514;BiglogFormatApache
if $programname == 'apache-access' then ~
if $programname == 'apache-error' then @10.x.x.x:514;BiglogFormatApache
if $programname == 'apache-error' then ~
注:通过Rsyslog配置日志接收端的时候,如上示例@10.x.x.x:514,用于指定接收日志的服务器的协议、IP地址和端口号。使用@代表走UDP协议,使用@@代表走TCP协议,冒号后面的514代表接收端口。
第三步:重启Rsyslog服务,日志采集开始工作
service rsyslog restart
此时可以通过观察系统中的Rsyslog日志,确定是否正常工作。
cat /var/log/messages |grep rsyslog
2)Linux系统日志配置远程Syslog采集
第一步:创建Liunx系统日志采集配置
新建Rsyslog的子配置文件,他通常在/etc/rsyslog.d下,需要/etc/rsyslog.conf去包含这个目录下的子配置文件:
vim /etc/rsyslog.d/linux-biglog.conf
复制以下内容到linux-biglog.conf,注意注释部分的修改:
## 定义日志格式模板:
$template BiglogFormatLinux,"%msg%\n"
## 注意syslog日志服务器接收地址,根据实际情况修改:
*.* @10.x.x.x:514;BiglogFormatLinux
注:通过Rsyslog配置日志接收端的时候,如上示例@10.x.x.x:514,用于指定接收日志的服务器的协议、IP地址和端口号。使用@代表走UDP协议,使用@@代表走TCP协议,冒号后面的514代表接收端口。
第二步:重启Rsyslog服务,日志采集开始工作
service rsyslog restart
此时可以通过观察系统中的Rsyslog日志,确定是否正常工作。
cat /var/log/messages |grep rsyslog
3)Tomcat日志配置远程Syslog采集
第一步:初始化日志采集环境
先确保系统中的/var/spool/rsyslog 目录已存在:
mkdir -v /var/spool/rsyslog
if [ "$(grep Ubuntu /etc/issue)" != "" ]; then
chown -R syslog:adm /var/spool/rsyslog
fi
第二步:创建Tomcat日志文件采集配置
新建Rsyslog的子配置文件,他通常在/etc/rsyslog.d下,需要/etc/rsyslog.conf去包含这个目录下的子配置文件:
vim /etc/rsyslog.d/tomcat-biglog.conf
复制以下内容到tomcat-biglog.conf,注意注释部分的修改:
$ModLoad imfile
$InputFilePollInterval 10
$WorkDirectory /var/spool/rsyslog
$PrivDropToGroup adm
## 指定日志格式模板:
$template BiglogFormatTomcat,"%msg%\n"
## Tomcat的catalina.log路径,根据实际情况修改:
$InputFileName /var/log/tomcat6/catalina.log
$InputFileTag catalina-log
$InputFileStateFile stat-catalina-log
$InputFileSeverity info
$InputFilePersistStateInterval 25000
$InputRunFileMonitor
## Tomcat的catalina.out路径,根据实际情况修改:
$InputFileName /var/log/tomcat6/catalina.out
$InputFileTag catalina-out
$InputFileStateFile stat-catalina-out
$InputFileSeverity info
$InputFilePersistStateInterval 25000
$InputRunFileMonitor
## Tomcat的host-manager.log路径,根据实际情况修改:
$InputFileName /var/log/tomcat6/host-manager.log
$InputFileTag host-manager
$InputFileStateFile stat-host-manager
$InputFileSeverity info
$InputFilePersistStateInterval 25000
$InputRunFileMonitor
## Tomcat的initd.log路径,根据实际情况修改:
$InputFileName /var/log/tomcat6/initd.log
$InputFileTag initd
$InputFileStateFile stat-initd
$InputFileSeverity info
$InputFilePersistStateInterval 25000
$InputRunFileMonitor
## Tomcat的localhost.log路径,根据实际情况修改:
$InputFileName /var/log/tomcat6/localhost.log
$InputFileTag localhost-log
$InputFileStateFile stat-localhost-log
$InputFileSeverity info
$InputFilePersistStateInterval 25000
$InputRunFileMonitor
## Tomcat的manager.log路径,根据实际情况修改:
$InputFileName /var/log/tomcat6/manager.log
$InputFileTag manager
$InputFileStateFile stat-manager
$InputFileSeverity info
$InputFilePersistStateInterval 25000
$InputRunFileMonitor
## 注意syslog日志服务器接收地址,根据实际情况修改:
if $programname == 'catalina-log' then @10.x.x.x:514;BiglogFormatTomcat
if $programname == 'catalina-log' then ~
if $programname == 'catalina-out' then @10.x.x.x:514;BiglogFormatTomcat
if $programname == 'catalina-out' then ~
if $programname == 'host-manager' then @10.x.x.x:514;BiglogFormatTomcat
if $programname == 'host-manager' then ~
if $programname == 'initd' then @10.x.x.x:514;BiglogFormatTomcat
if $programname == 'initd' then ~
if $programname == 'localhost-log' then @10.x.x.x:514;BiglogFormatTomcat
if $programname == 'localhost-log' then ~
if $programname == 'manager' then @10.x.x.x:514;BiglogFormatTomcat
if $programname == 'manager' then ~
注:通过Rsyslog配置日志接收端的时候,如上示例@10.x.x.x:514,用于指定接收日志的服务器的协议、IP地址和端口号。使用@代表走UDP协议,使用@@代表走TCP协议,冒号后面的514代表接收端口。
第三步:重启Rsyslog服务,日志采集开始工作
service rsyslog restart
此时可以通过观察系统中的Rsyslog日志,确定是否正常工作。
cat /var/log/messages |grep rsyslog
- linux下的日志采集---rsyslog
- Flume采集rsyslog发送的audit日志
- Rsyslog日志采集
- linux的系统日志rsyslog
- 日志采集——rsyslog
- Linux环境下使用rsyslog管理日志
- 【Linux】 Rsyslog日志系统的应用
- linux 下rsyslog 和 logrotate 的配置
- Linux集中日志服务器rsyslog
- Flume采集rsyslog日志并发送到elasticsearch上
- linux下rsyslog syslog比较
- linux 服务——rsyslog日志服务
- linux系统日志及其rsyslog服务
- Linux系统服务 1 ---- rSyslog日志服务
- it-linux--日志分析-- rsyslog+loganalyzer尝试
- Linux 之 rsyslog 系统日志转发
- Linux 之 rsyslog 系统日志转发
- CentOS7下利用rsyslog+loganalyzer配置日志服务器及Linux和windows客户端配置
- Android Studio 开发调试简介
- Frogger POJ
- 西门子S7-300PLC的置位/复位指令及示例
- 采购订单相关Table
- openvpn客户端获得固定IP
- linux下的日志采集---rsyslog
- 最简单生产消费者模型理解(线程同步,共享资源,信号
- 浅谈URLEncoder编码算法
- Android--------ListView多条目展示数据
- Xamarin XAML语言教程基本页面ContentPage占用面积
- 关于我用SecureCRT连接出的问题
- 为什么要去了解虚拟机是怎样使用内存的?
- 500. Keyboard Row
- Windows 下CL使用zip/unzip