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 

[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
但是没有定义保存在远程的哪一个文件啊?
其实保存在什么文件, 那是远程日志服务器接收到日志之后它自己的事情了.

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
目录
相关文章
|
SQL JSON 关系型数据库
golang存取PostgreSQL
golang如何存取PostgreSQL中的数据?
|
安全 Shell 网络安全
OpenSSH ProxyCommand命令注入漏洞(CVE-2023-51385)
enSSH存在命令注入漏洞(CVE-2023-51385),攻击者可利用该漏洞注入恶意Shell字符导致命令注入。
2612 1
|
Ubuntu
百度搜索:蓝易云【Ubuntu系统apt添加第三方PPA源教程】
现在,你已经成功在Ubuntu系统中添加了第三方PPA源。系统将会从该源获取更新和软件包。请注意,添加第三方PPA源时要确保其来源可信,以免引入不安全的软件包。
731 5
|
自然语言处理 算法 前端开发
《深挖React Native社交应用:好友推荐算法设计全解析》
在React Native构建的社交应用中,好友推荐算法是拓展社交网络的核心工具。基于三元闭包理论,通过共同好友数量衡量关系紧密度,优先推荐二度好友;结合用户兴趣标签、行为数据(如互动频率、浏览偏好)及时空维度(如地理位置和时间阶段),实现精准推荐。这些技术不仅洞悉用户潜在需求,还显著提升社交互动质量,为用户打造个性化、高效的社交体验,助力社交应用成功发展。
443 5
《深挖React Native社交应用:好友推荐算法设计全解析》
|
数据采集 BI 数据格式
【分享】打工人福音!AiPy 自动分析打卡记录,从此告别加班
每月统计考勤数据曾是行政人噩梦:手动核对数百人打卡记录、处理异常数据,月末加班成常态。但现在,AiPy让这一切迎刃而解!只需3分钟,即可高效完成考勤统计,准时下班不是梦。AiPy功能强大:一键锁定关键时间点,智能清洗数据,自动生成标准报表。告别重复劳动,提升工作效率,惊艳领导,快与同事分享,一起成为效率王者!
|
存储 网络协议 Linux
在Linux中,如何通过syslog进行远程日志转发?
在Linux中,如何通过syslog进行远程日志转发?
基于电压矢量变换的锁相环simulink建模与仿真
本课题基于电压矢量变换的锁相环(PLL)在MATLAB2022a中进行Simulink建模与仿真。该模型通过ab坐标变换和低通滤波,实现对三相电网电压的快速准确锁相,尤其在电压不平衡条件下表现优异。系统仿真结果显示,PLL能有效提取基波正序电压分量,适用于负序电压前馈控制及双序电流环控制策略。相比传统单相PLL,该方法更稳健地应对电网不平衡和频率突变,广泛应用于电力质量监测、三相PFC电路控制及分布式发电系统的并网控制等领域。
|
运维 Devops 应用服务中间件
DevOps实践:使用Ansible进行自动化部署
【9月更文挑战第28天】在当今快节奏的软件开发环境中,DevOps的实践已成为提升效率和可靠性的关键。本文将探讨如何利用Ansible这一强大的自动化工具来简化部署流程。通过实际示例,我们将展示如何配置Ansible playbook,实现代码的自动部署和服务器管理任务的自动化,从而帮助团队减少人为错误,加快发布周期,确保软件交付的一致性和可预测性。
|
API vr&ar Android开发
一文搞懂ARKit,ARCore,RealityKit和Vuforia
AR框架的一个核心是含能够理解特征的场景和各种类型的锚点。锚点有很多种,可根据特定场景来摆放3D模型 ,甚至可以真人来做距离测量(ARBodyAnchor)。并且这些框架不容忽视的优势是具有进行场景重建和人形遮挡(occlusion)的32位尝试数据。
2362 4