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=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

[[email protected] ~]# /etc/init.d/rsyslog restart

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

======================================================================
实例: 指定日志文件, 或者终端
======================================================================
[[email protected] ule-sa3]# vi /etc/rsyslog.conf
[[email protected] ule-sa3]# grep local3 !$
grep local3 /etc/rsyslog.conf
local3.*                                                /var/log/local3.log
[[email protected] ule-sa3]# rm -rf /var/log/local3.log
[[email protected] ule-sa3]# /etc/init.d/rsyslog reload
Reloading system logger…                                 [  OK  ]
[[email protected] ule-sa3]# ls /var/log/local3.log
/var/log/local3.log
[[email protected] ule-sa3]# logger -t ‘LogTest’ -p local3.info ‘KadeFor is testing the rsyslog and logger’
[[email protected] ule-sa3]# cat /var/log/local3.log
Jun 10 04:55:52 kadefor LogTest: KadeFor is testing the rsyslog and logger
[[email protected] 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
但是没有定义保存在远程的哪一个文件啊?
其实保存在什么文件, 那是远程日志服务器接收到日志之后它自己的事情了.

时间: 2024-12-25 00:11:15

RSYSLOG没那么简单的相关文章

缘来幸福没那么简单

曾以为幸福一直在手中,可以信手拈来,但是原来幸福没那么简单,尤其是要等属于自己的缘来,幸福没那么简单.幸福要等待,要争取,要经营,并非理所当然,并非会一直停在那里等我去拿.  当我刚离开父母追求属于我的生活,属于我的幸福时,刚开始我觉得这是一件轻而易举的事情.我相信我可以轻松地重新找到一份我喜欢的工作,遇到一个适合我的人,然后事业爱情双丰收,就这样幸福地生活下去.我绝不会如同父母所说的那样后悔放弃已经拥有的一切,选择到一个陌生的城市重新开始的,一定要向父母证明我一定会得到幸福.  然而,当我求职

/dev/mem可没那么简单

这几天研究了下/dev/mem.发现功能非常奇妙,通过mmap能够将物理地址映射到用户空间的虚拟地址上.在用户空间完毕对设备寄存器的操作,于是上网搜了一些/dev/mem的资料. 网上的说法也非常统一,/dev/mem是物理内存的全映像,能够用来訪问物理内存,一般使用方法是open("/dev/mem",O_RDWR|O_SYNC),接着就能够用mmap来訪问物理内存以及外设的IO资源,这就是实现用户空间驱动的一种方法.用户空间驱动听起来非常酷.可是对于/dev/mem,我认为没那么简

javascript没那么简单(转)

原文出处:http://www.cnblogs.com/bestfc/archive/2010/08/02/1790173.html 写在前面:似乎园子里最近少了些人,各个文章的阅读量少了许多废话不说,写此文目的是为了让更多的程序员理解javascript的一些概念,对是理解不是了解我们已经了解得够多了,该是向深入理解的方向靠拢的时候了为什么这么说,前些日子收到面试邀请,那就去试试呗,有几年没有面试过了吧和面试官坐在沙发上,聊天式的他问我答,以下就是几个javascript方面的问题>请创建一个

全站HTTPs,没那么简单

“全站 HTTPs”俨然成了目前的热门话题,很多网站都在摩拳擦掌要实行全站 HTTPs.凑巧,我们(沪江)也在推行这个计划. 一开始大家想得都很简单,把证书购买了.配好了,相应的路径改一改,就没有问题.事实也确实如此,单个独立站点的 HTTPs 改造是很容易的.一旦走向“全站”,才发现事情远远比想象的要复杂,全站意味着所有资源面对所有客户端,涉及的因素异常多,网络上又没有太多资料,只能自己摸索.下面我简单讲讲遇到的几个问题,提供一些经验给大家参考. HSTS 如果一个网站既提供了 HTTP 服务

马云打错字没那么简单,盯盯惹着钉钉了?

日前,马云先生替阿里钉钉向腾讯以及马化腾道歉一事引发了网友热议.然而在马云的道歉信中,第一句话就把“钉钉”错打成“盯盯”.在很多人看来,这是因为拼音输入法的问题,导致马云打错字.但实际上,真的只是这么简单吗? 打错字的背后是什么? 按照很多媒体解读只是输入法的问题,才导致打错.可如果马云使用的是五笔输入法,不可能不会连“钉钉”两个字都不会写,因此马云极大可能使用的是拼音输入法. 但是在拼音输入法中,拼音输入法会根据用户平常最关注或者经常输入的词语排在前面.按理来说,马云输入拼音“dingding

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

运维案例:HP服务器,LINUX系统在保障数据的前提下扩展/home分区 部门需求:研发部门提出需要在现有的服务器上扩容磁盘空间,以满足开发环境的磁盘需求.现有空间1.6T需要增加到2T. 需求调查分析:1.硬件环境:服务器 hp dl380 GEN9,磁盘配置(600G*4),raid5:当前还有4个硬盘槽位可用.2.系统:ubuntu 1404,系统整体空间1.6T./分区 100G /Home分区 1.6T /SWAP 20G.有此需求的服务器数量5台. 解决方案:1.加硬盘:增加1块60

(转)Python: super 没那么简单

原文:https://mozillazg.com/2016/12/python-super-is-not-as-simple-as-you-thought.html python 约定? 单继承? 多继承? super 是个类? 多继承中 super 的工作方式? 参考资料? 说到 super, 大家可能觉得很简单呀,不就是用来调用父类方法的嘛.如果真的这么简单的话也就不会有这篇文章了,且听我细细道来.?? 约定 在开始之前我们来约定一下本文所使用的 Python 版本.默认用的是 Python

农夫与蛇?没那么简单!

昨天文章留言区,无数的读者在留言说“农夫与蛇”,于是今天决定,写一篇历史的文章,从犹太人为什么被西方世界集体围剿说起,来看一看农夫应该怎么处理跟蛇的关系. 犹太人经济上的崛起和政治上的被迫害,都起源于欧洲的中世纪,原因是自罗马帝国解体之后,欧洲进入到封建制社会. 散落各地的领主们为了满足各自的欲望,都需要向领地内的民众大幅征税,但是领主们又要避免征税使得自己沦为民众们的对立面,于是就对中间执行的“胥吏”阶级有了巨大的需求. 而在欧洲,那些非常聪明又勤奋的犹太人,很快就被各地的领主们选中,作为他们

一个工具就够了?原型设计没那么简单!

原型设计是软件设计开发过程中必不可少的一部分,但是现在我们能够看到的原型设计工具种类多到让人眼花缭乱.如果你只是选择了其中的一款工具,并且觉得原型设计工具只需要一个,对于整个设计开发过程就足够了,那你就大错特错了.事实上,这些原型设计工具连接起来,才是一个完整的设计流程. 草图/线框图阶段:纸笔.白板.Balsamiq.Mockplus 无论是美术设计还是用户体验设计,或者是用户界面设计,首先要做的事情就是画草图.打草稿.当我们天马行空的进行想象的时候,记录的工作交给它们就好了.纸笔和白板不用多