rsyslog

为了使得应用程序不需要自身实现日志记录的功能,linux实现了系统日志服务。Rsyslog是syslog的升级版本, 其在RHEL5的版本中, 名称为syslog.在RHEL6/7其升级为Rsyslog。

Rsyslog的特性:
支持多线程
支持加密的方式记录传输远程主机日志同时支持tcp/udp
将日志可存储在mysql,pgsql,oracle等数据库管理系统中,便于筛选查询
强大的自定义过滤器,实现过滤日志信息中任何部分内容,实现选择性记录
自定义输出格式

syslog中含有两个服务进程,sysylogd 用户空间记录日志,klogd 内核日志记录。rsyslog中统一为syslogd

但是在一些访问并发量大的应用程序,是自身实现日志记录功能的。如httpd就是应用程序自己完成日志记录功能。

对于日志产生量巨大的服务程序,无论是存储在磁盘还是数据库都(插入新数据都要查找所有是否满足关系约束)不合适,所以一般基于分布式存储,或者非关系型数据库。

强大的日志收集及展示平台ELK:elasticsearch(存储、分析),logstash(收集),kibana(前端展示)

facility

一个主机上有多个程序都需要记录日志,对这些程序按照一定的定义进行归类,通过统一的管道向rsyslog发送日志。这样rsyslog就不需要单独处理每种应用程序的日志,分类记录提高速率。这样的收集管道叫做日志生成器(facility),收集到的日志按照级别(priority)记录在不同处。

facility:auth authpriv cron daemon kern lpr mail mark news security syslog user uucp local0~local7(自定义)

priority:debug  info   notice   warning(warn)   error(err)   crit   alert  emerg

配置文件

在配置文件/etc/rsyslog.conf中定义哪个facility的哪个级别记录在何处。使用格式:facility.priority  target

priority:

* : 所有级别

none : 没有级别,不记录

PRIORITY : 此级别以及高于此级别的所有级别

=PRIORITY : 仅此级别

!PRIORITY:在此级别之外的其他级别

target:指定日志记录的位置,有以下几种方式。

文件: 记录日志事件于指定的文件中,通常应用位于/var/log目录下,文件路径之前的"-"表示异步写入

用户: 将日志事件通知给指定的用户, 是通过将信息发送给登陆到系统上的用户的终端上

日志服务器: 使用@host,把日志送往指定的服务器主机 。host : 即日志服务器地址,默认监听在tcp/udp的514端口,@@host表示用tcp

管道: |COMMAND

关系型数据库: 例如: ommysql:localhost:Syslog:log:log

用户: 将日志事件通知给指定的用户, 是通过将信息发送给登陆到系统上的用户的终端上。* 表示所有登陆到系统上的用户

-  :表示异步写入

~  :表示丢弃

远程日志服务

rsyslog服务器:加载模块,打开监听即可。

# Provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514

# Provides TCP syslog reception
$ModLoad imtcp
$InputTCPServerRun 514

模块名称 imXXX表示输入模块,omXXX表示输出模块。

日志记录在mysql中

rsyslog支持将日志存储于MySQL服务器中:
1)安装配置好mysql数据库服务;
2)安装rsyslog-mysql包;
3)创建rsyslog依赖的数据库:
    #mysql < /usr/share/doc/rsyslog-5.8.10/createDB.sql
4)配置rsyslog启用模块
    在#### Modules #####启用模块:
    $ModLoad ommysql
5)在####rules####段中定义记录日志信息于数据库中
    facility.priority :ommysql:SERVER_IP,DATABASE,USERNAME,PASSWORD

图形展示日志

下载loganalyzer软件包

# yum -y install httpd php php-mysql php-gd
# tar xf loganalyzer-3.6.5.tar.gz
# mkdir /var/www/html/loganalyzer
# cp loganalyzer-3.6.5/src/* /var/www/html/loganalyzer/
# cp loganalyzer-3.6.5/contrib/* /var/www/html/loganalyzer/
# cd /var/www/html/loganalyzer/
# chmod +x configure.sh secure.sh
# ./configure.sh
# ./secure.sh
# chmod 666 config.php
# chown -R apache.apache ./*

通过URL访问并配置http://host/loganalyzer

日志相关命令

/var/log/dmesg  系统启动时的日志信息  kern.* /dev/console 即dmesg命令

/var/log/wtmp  成功登陆日志,即last命令

/var/log/btmp  失败登陆日志,即lastb命令

过滤保存指定的日志

基于设施/优先级的过滤器(如:  mail.info         /var/log/maillog)
基于属性的过滤器(如:  :msg, contains, "message want to be dropped"  ~  #将一个在一直写日志的kernel报错,把包含这条报错信息的内核日志丢弃)
基于表达式的过滤器(使用了rsyslog自定义的脚本语言RainerScript构建复杂的filter)
关于日志过滤器及模板的使用可以查看Linux环境下使用rsyslog管理日志

参考:Linux日志rsyslog      rsyslog和logrotate

时间: 2024-10-14 10:34:32

rsyslog的相关文章

RSYSLOG没那么简单

定义系统默认的日志收集还算EASY. 但如何在公司项目里要配置程序员们写的自定义日志,那可能就要用到LOCAL及FILTER过滤这些东东了... 慢慢走吧.. 收集URL备用,都是讲LOCAL,TEMPLAT,FILTER比较好的CASE: http://blog.sina.com.cn/s/blog_4a80a5730101m2b3.html http://my.oschina.net/0757/blog/198329 http://wenku.baidu.com/link?url=tPJuf

删除rsyslog中的#011

操作步骤: 打开VPN 谷歌浏览器输入 rsyslog #011 查看关键字的网络: 摘自:http://wiki.rsyslog.com/index.php/Snare_and_rsyslog 摘自:http://www.wowza.com/forums/showthread.php?17836-Wowza-logging-via-rsyslog          mail.abc.com#011MSWinEventLog#0111#011Security#0114169#011Fri One

rsyslog配置解析

RSYSLOG is the rocket-fast system for log processing. 本地Rsyslog版本: 8.25.0-1.el6.x86_64 配置 基本语法 Rsyslog 现在支持三种配置语法格式: sysklogd legacy rsyslog RainerScript sysklogd 是老的简单格式,一些新的语法特性不支持.legacy rsyslog 是以dollar符($)开头的语法,在v6及以上的版本还在支持,一些插件和特性可能只在此语法下支持.Ra

基于rsyslog+mysql+loganalyzer构建一个小而美的日志服务器

前言: 每当我们遇到问题抓耳挠腮,一脸懵那啥的时候,也许看一下日志就瞬间豁然开朗,所以,一个易用的日志服务器还是很重要的.我们先不介绍elk,那个牛逼吊炸天的日志分析系统.今天我们先来构建一个小的日志服务器.elk我们以后再说~ 正文: 当我们配置完一个服务,启动报错时,那感觉就像吃了啥一样,别提多难受,除非服务程序本身有检测配置文件的程序,不然我们就得依赖linux自己的集中日志服务器rsyslog了.不过,有时候也许我们想搜索一下某条日志,或者向用可视化的界面进行统计分析.此时我们可以把日志

搭建 rsyslog+mysql+loganalyzer

实验环境: 当前操作系统:Linux CentOS 7 3.10.0-327.el7.x86_64 所需要的软件包: 1,mysql: mariadb-5.5.44-2.el7.centos.x86_64 2, loganalyzer: loganalyzer-3.6.5 3, httpd: httpd-2.4.6-40.el7.centos.x86_64 4, php: php-5.4.16-36.el7_1.x86_64 5, php-mysql: php-mysql-5.4.16-36.e

利用rsyslog 对linux 操作进行审计

环境:客户端和服务端都需要安装rsyslog服务 rsyslog  server端 cd /etc/rsyslog.d/ cat server.conf $ModLoad imtcp $InputTCPServerRun 514   vim    /etc/rsyslog.conf local4.*                                                /var/log/history.log rsyslog client端 cat /etc/rsyslo

rsyslog 详解3

http://www.centosabc.com/archives/601 http://www.cnblogs.com/aguncn/p/4249175.html rsyslog服务和logrotate服务======================================================================rsyslog 是一个 syslogd 的多线程增强版.现在Fedora和Ubuntu, rhel6默认的日志系统都是rsyslog了rsyslog负责

CentOS 6.7下利用Rsyslog+LogAnalyzer+MySQL部署日志服务器

一.简介 LogAnalyzer 是一款syslog日志和其他网络事件数据的Web前端.它提供了对日志的简单浏览.搜索.基本分析和一些图表报告的功能.数据可以从数据库或一般的syslog文本文件中获取,所以LogAnalyzer不需要改变现有的记录架构.基于当前的日志数据,它可以处理syslog日志消息,Windows事件日志记录,支持故障排除,使用户能够快速查找日志数据中看出问题的解决方案. LogAnalyzer 获取客户端日志会有两种保存模式,一种是直接读取客户端/var/log/目录下的

Rsyslog使用

1.Rsyslog介绍 Rsyslog is Rocket-fast System for Log processing.Rsyslog是CentOS6系列默认的日志处理软件.Rsyslog基于模块化设计,提供高性能,安全的日志处理系统.Rsyslog是多线程的,支持TCP,UDP,TLS,RELP.Rsyslog实际上syslog的一个增强版本. 2.安装Rsyslog CentOS下默认已经安装了rsyslog 查看rsyslog运行状态 $service rsyslog status rs

rsyslog的配置,最简

根据按照程序名称进行分离首先参考一下原本配置# A template to for higher precision timestamps + severity logging$template SpiceTmpl,"%TIMESTAMP%.%TIMESTAMP:::date-subseconds% %syslogtag% %syslogseverity-text%:%msg:::sp-if-no-1st-sp%%msg:::drop-last-lf%\n" :programname,