定义系统默认的日志收集还算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=tPJuftxO3EjGYKe77IH4rnjVAmjWju9_A1LTOrj0nBeigy7letgPq9nokXXizXB_95eoOsiKNBlViBClAnm3zgNruGOi3hLAY0kzjiyZueu

http://my.oschina.net/duxuefeng/blog/317570

http://blog.clanzx.net/2013/12/31/rsyslog.html

还有N多模块!!!

~~~~~~~~~~~~~~~

a. mysql支持
rsyslog很多功能都是以模块的形式实现的,比如这个mysql支持,首先在编译的时候我们必须将这个模块编译进去,然后在/etc/rsyslog.conf加载”$ModLoad ommysql“,然后在指定哪些日志需要存放在数据里。在使用mysql模块前,我们需要手工建库、定义表,这些步骤手册里都有详细说明,操作起来也不难。

b. filter(日志筛选)
filter是rsyslog的一大亮点,通常情况下,我们并不是所有的日志都要收集,比如我们只需要error以下级别的日志、或者我们再要包含特定内容的日志。灵活运用filter我们可以很轻易地实现这些需求。下面举几个例子,使用方法手册里有详细介绍:

1
2

:msg, contains,

"test_message"
 
/
var/log/test.log

&~

如果日志内容包含”test_message”就存放在/var/log/test.log中,”&~”的意思是丢弃,不做后续处理。即使后面还有”:msg, contains, “test_message” /var/log/test2.log”,这条日志也不会再存在test2.log中。

1
2

if

$msg

contains

'test_message'

then /
var/log/test.log

&~

上面的例子的另一种写法,用if的好处是可以定义一些复杂的条件匹配
filter非常的实用,syslog中仅仅定义的local0~local7几个用户自定义的facility。使用filter我们轻松解决自定义facility不够用的问题

c. template
使用template定义日志格式模板,可以规范不通的类型的日志,很方便我们查看,使用起来也很简单,但是template的定义必须放在rsyslog.conf的顶端。

1
2

$template

myFormat,
"%timestamp% 
%hostname%  %pri-text% 
%msg%\n"

$ActionFileDefaultTemplate

myFormat

第一行我们定义了一个名为myFormat的模板,第二行的意思是把我们定义的myFormat作为rsyslog的默认模板。如果只是需要在特定日志上套用这个模板可以这样写

1

$template

myFormat,
"%timestamp% 
%hostname%  %pri-text% 
%msg%\n"
;Format
~~~~~~~~~~~~~~
服务器:
mkdir /data/apache/logs 
chown apache:apache /data/apache/logs

/etc/rsyslog.conf文件最后添加

$template access_log, "%msg:2:$%\n" 
$template error_log, "%msg%\n"

# web1-access-log 
$template access_log_file_web1, "/data/apache/logs/%$NOW%/access-log/web1-access_log" 
# web1-error-log 
$template error_log_file_web1, "/data/apache/logs/%$NOW%/error-log/web1-error_log"

# web1-access-log 
if $syslogfacility-text == 'local6' and $syslogtag == 'http-access:' and $fromhost-ip == '10.1.5.241' then -?access_log_file_web1;access_log 
# web1-error-log 
if $syslogfacility-text == 'local6' and $syslogtag == 'http-error:' and $fromhost-ip == '10.1.5.241' then -?error_log_file_web1;error_log

[root@master ~]# /etc/init.d/rsyslog restart

~~~~~~~~~~~~~~~~~~~~

======================================================================
实例: 指定日志文件, 或者终端
======================================================================
[root@kadefor ule-sa3]# vi /etc/rsyslog.conf
[root@kadefor ule-sa3]# grep local3 !$
grep local3 /etc/rsyslog.conf
local3.*                                                /var/log/local3.log
[root@kadefor ule-sa3]# rm -rf /var/log/local3.log
[root@kadefor ule-sa3]# /etc/init.d/rsyslog reload
Reloading system logger…                                 [  OK  ]
[root@kadefor ule-sa3]# ls /var/log/local3.log
/var/log/local3.log
[root@kadefor ule-sa3]# logger -t ‘LogTest’ -p local3.info ‘KadeFor is testing the rsyslog and logger’
[root@kadefor ule-sa3]# cat /var/log/local3.log
Jun 10 04:55:52 kadefor LogTest: KadeFor is testing the rsyslog and logger
[root@kadefor ule-sa3]#
自己实验日志发送给某个终端
======================================================================
实例:  过滤特定的日志到文件, 忽略(丢弃)包含某个字符串的日志
======================================================================
# 过滤日志, 由:号开头
:msg, contains, “error” /var/log/error.log
:msg, contains, “error” ~         # 忽略包含error的日志
:msg, contains, “user nagios”   ~
:msg, contains, “user kadefor”   ~
:msg, contains, “module-alsa-sink.c: ALSA woke us up to write new data to the device, but there was actually nothing to write” ~
local3.*    ~
PS.
&   ~       # 忽略所有的日志
把包含’oracle’的日志保存在/var/log/oracle.log
======================================================================
实例:  使用模板来定义日志格式
======================================================================
定义默认的日志格式:

 
  1. $template myFormat,”%rawmsg%\n”

  2. $ActionFileDefaultTemplate myFormat

  3. #如果不要$ActionFileDefaultTemplate myFormat这一行, 就需要像这样来使用模板:

  4. #在日志文件后添加模板名, 并用;号分隔

  5. $template myFormat,”%rawmsg%\n”

  6. # The authpriv file has restricted access.

  7. authpriv.*      /var/log/secure;myFormat

  8. # Log all the mail messages in one place.

  9. mail.*          /var/log/maillog;myFormat

  10. # Log cron stuff

  11. cron.*          /var/log/cron;myFormat

  12. # Everybody gets emergency messages

  13. *.emerg                                       *

  14. # Save news errors of level crit and higher in a special file.

  15. uucp,news.crit  /var/log/spooler;myFormat

  16. # Save boot messages also to boot.log

  17. local7.*        /var/log/boot.log;myFormat

======================================================================
实例: remote log 远程发送与接收:
======================================================================
如果要修改为非514的端口, 需要设置selinux
只要在rsyslog.conf中加入
*.* @192.168.0.10
*.* @192.168.0.10:10514     # 带端口号
*.* @@192.168.0.10      # TCP
但是没有定义保存在远程的哪一个文件啊?
其实保存在什么文件, 那是远程日志服务器接收到日志之后它自己的事情了.

RSYSLOG没那么简单的更多相关文章

  1. 【转载 来自sdnlab】 开放网络没那么简单

    链接:开放网络没那么简单 本文是云杉网络工程师张攀对当前开源网络技术现状的一些思考和探索. 开放网元.释放数据的价值 从2012年开始至今,网络行业明显是O字辈的天下.所有我接触过了解过的组织和项目, ...

  2. /dev/mem可没那么简单

    这几天研究了下/dev/mem.发现功能非常奇妙,通过mmap能够将物理地址映射到用户空间的虚拟地址上.在用户空间完毕对设备寄存器的操作,于是上网搜了一些/dev/mem的资料. 网上的说法也非常统一 ...

  3. /dev/mem可没那么简单【转】

    转自:http://blog.csdn.net/skyflying2012/article/details/47611399 这几天研究了下/dev/mem,发现功能很神奇,通过mmap可以将物理地址 ...

  4. C#中的interface没那么简单

    最近在园子里闲逛看到一篇文章“(抽象)类和接口细节分析”,尽管作者很细心很细致.可事实上C#里面的interface没那么简单,interface有着大量不为人知的小秘密的说. 1.值类型也能实现接口 ...

  5. 安全开发Java:日志注入,并没那么简单

    摘要:当web工程比较大,历史代码较多时, 应当使用log4j2框架的能力来修改日志注入问题,而不是按照有些博文里写的逐个进化参数的方式. 案例故事 某个新系统上线了,小A在其中开发了个简单的登录模块 ...

  6. 全站HTTPs,没那么简单

    “全站 HTTPs”俨然成了目前的热门话题,很多网站都在摩拳擦掌要实行全站 HTTPs.凑巧,我们(沪江)也在推行这个计划. 一开始大家想得都很简单,把证书购买了.配好了,相应的路径改一改,就没有问题 ...

  7. 在Linux服务器上增加硬盘没那么简单【转】

    运维案例:HP服务器,LINUX系统在保障数据的前提下扩展/home分区 部门需求:研发部门提出需要在现有的服务器上扩容磁盘空间,以满足开发环境的磁盘需求.现有空间1.6T需要增加到2T. 需求调查分 ...

  8. 当阿里面试官问我:Java创建线程有几种方式?我就知道问题没那么简单

    这是最新的大厂面试系列,还原真实场景,提炼出知识点分享给大家. 点赞再看,养成习惯~ 微信搜索[武哥聊编程],关注这个 Java 菜鸟. 昨天有个小伙伴去阿里面试实习生岗位,面试官问他了一个老生常谈的 ...

  9. CSS魔法堂:Box-Shadow没那么简单啦:)

    前言  说起box-shadow那第一个想法当然就是用来实现阴影,其实它还能用于实现其他好玩的效果的,本篇就打算说说box-shadow的那些事. 二话不说看效果 3D小球 <style typ ...

随机推荐

  1. Java设计模式之简单工厂、工厂方法和抽象工厂

    在前面的学习中(参见前面的博客),我们学到了很多OO原则: 封装变化 多用组合,少用继承 针对接口/超类编程,不针对实现编程 松耦合 开闭原则 让我们从一个简单的类开始,看看如何将之改造成符合OO原则 ...

  2. erlang mnesia 数据库查询

    Mnesia是一个分布式数据库管理系统,适合于电信和其它需要持续运行和具备软实时特性的Erlang应用,越来越受关注和使用,但是目前Mnesia资料却不多,很多都只有官方的用户指南.下面的内容将着重说 ...

  3. python 学习资料

    Python是一种面向对象.直译式计算机程序设计语言.它的语法简捷和清晰,尽量使用无异义的英语单词,与其它大多数程序设计语言使用大括号不一样,它使用縮进来定义语句块.与Scheme.Ruby.Perl ...

  4. js时间基本操作

    js 获取前一天的时 var today=new Date(); var yesterday_milliseconds=today.getTime()-1000*60*60*24; var yeste ...

  5. lession2:使用HTTP Cookie 管理器来传递cookies值

    在实际进行压力测试的时候,经常会出现使用cookie传递值的情况,此时就需要使用[HTTP Cookie 管理器]来传递cookie值. 1.参照lession1中,创建线程组.sampler及聚合报 ...

  6. Jmeter接口测试案例实践(一)

    1.1. 接口介绍 本次测试的接口采用内网中的通讯录查询接口进行测试,接口参数如下: 1.2. 使用Jmeter进行接口测试 1.2.1. 打开Jmeter 下载好Jmeter后,双击bin目录下的j ...

  7. .NET基本权限管理框架源代码

    有兴趣的朋友欢迎加群讨论:312677516 1.菜单导航管理 2.操作按钮 3.角色管理 4.部门管理 5.用户管理(用户权限) 6.用户组管理(设置成员,用户组权限) 7.系统配置(动态配置系统参 ...

  8. javascriipt类型转换

  9. jquery之onchange事件2

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...

  10. (五)《Java编程思想》——final关键字

    可能使用final的三种情况:数据.方法.类. 1.final数据 final 常量必须是基本类型数据,且在定义时须赋值: 一个既是static又是final的域只占据一段不能改变的存储空间,只有一份 ...