1. 介绍

rsyslog可以简单的理解为syslog的超集,在老版本的Linux系统中,Red Hat Enterprise Linux 3/4/5默认是使用的syslog作为系统的日志工具,从RHEL 6 开始系统默认使用了rsyslog。

 其特性包括:

  • 支持输出日志到各种数据库,如 MySQL,PostgreSQL,MongoDB,ElasticSearch,等等;
  • 通过 RELP + TCP 实现数据的可靠传输(基于此结合丰富的过滤条件可以建立一种 可靠的数据传输通道供其他应用来使用);
  • 精细的输出格式控制以及对消息的强大 过滤能力;
  • 高精度时间戳;队列操作(内存,磁盘以及混合模式等); 支持数据的加密和压缩传输等。

2. 配置

/etc/rsyslog.conf

syslog的配置文件有多种书写方法:

  • sysklogd(一些结构不兼容新特性),
  • legacy rsyslog(以“$”开头的写法,如:$ModLoad imtcp.so),
  • RainerScript(一种新的格式,是最推荐使用的一种,尤其是需要做复杂的配置时)

在本文中的配置都比较简单,就采用了legacy rsyslog的配置书写方法。更多详情参考:

http://www.rsyslog.com/doc/master/configuration/basic_structure.html#statement-types

rsyslog的配置主要有以下模块:

  • modules,模块,配置加载的模块,如:ModLoad imudp.so配置加载UDP传输模块
  • global directives,全局配置,配置ryslog守护进程的全局属性,比如主信息队列大小(MainMessageQueueSize)
  • rules,规则(选择器+动作),每个规则行由两部分组成,selector部分和action部分,这两部分由一个或多个空格或tab分隔,selector部分指定源和日志等级,action部分指定对应的操作
  • 模板(templates)
  • 输出(outputs)

2.1 常用的modules

  • imudp,传统方式的UDP传输,有损耗
  • imtcp,基于TCP明文的传输,只在特定情况下丢失信息,并被广泛使用
  • imrelp,RELP传输,不会丢失信息,但只在rsyslogd 3.15.0及以上版本中可用

更多参考:http://www.rsyslog.com/doc/master/configuration/modules/index.html

2.2 规则(rules)

规则的选择器(selectors)

selector也由两部分组成,设施和优先级,由点号.分隔。第一部分为消息源或称为日志设施,第二部分为日志级别。多个选择器用;分隔,如:*.info;mail.none

日志设施有:

  • auth(security), authpriv: 授权和安全相关的消息
  • kern: 来自Linux内核的消息
  • mail: 由mail子系统产生的消息
  • cron: cron守护进程相关的信息
  • daemon: 守护进程产生的信息
  • news: 网络消息子系统
  • lpr: 打印相关的日志信息
  • user: 用户进程相关的信息
  • local0 to local7: 保留,本地使用

日志级别有(升序):

  • debug:包含详细的开发情报的信息,通常只在调试一个程序时使用。
  • info:情报信息,正常的系统消息,比如骚扰报告,带宽数据等,不需要处理。
  • notice: 不是错误情况,也不需要立即处理。
  • warning: 警告信息,不是错误,比如系统磁盘使用了85%等。
  • err:错误,不是非常紧急,在一定时间内修复即可。
  • crit:重要情况,如硬盘错误,备用连接丢失。
  • alert:应该被立即改正的问题,如系统数据库被破坏,ISP连接丢失。
  • emerg:紧急情况,需要立即通知技术人员。

日志设施的配置:

  • . 代表比后面还要高的消息等级都会记录下来
  • .= 代表只有后面的这个消息等级会被记录下来
  • .! 代表除了后面的这个消息等级,其他的都会被记录下来。
local0.=debug                /home/admin/applogs/app-name/debug.log
local0.err;local0.warning;local0.info                /home/admin/applogs/app-name/info.log
local0.err                /home/admin/applogs/app-name/error.log

2.3 动作 (action)

action是规则描述的一部分,位于选择器的后面,规则用于处理消息。总的来说,消息内容被写到一种日志文件上,但也可以执行其他动作,比如写到数据库表中或转发到其他主机。

写到本地文件/var/log/lyh.log中

#
# Save message to other file
#
local0.*    /var/log/lyh.log

写到mysql数据库中

# modules, 要将日志写到mysql中需要加载ommysql模块
$ModLoad ommysql
# rule, send to mysql
#*.*       :ommysql:database-server,database-name,database-userid,database-password
*.*       :ommysql:127.0.0.1,Syslog,syslogwriter,topsecret

2.4 模板(templates)

模板允许你指定日志信息的格式,也可用于生成动态文件名,或在规则中使用。

TEMPLATE_NAME:模板的名字;

PROPERTY:rsyslog本身支持的一些属性参数。

$template TEMPLATE_NAME,"text %PROPERTY% more text", [OPTION]
$template DynamicFile,"/var/log/test_logs/%timegenerated%-test.log"
$template DailyPerHostLogs,"/var/log/syslog/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/messages.log"*.info ?DailyPerHostLogs
*.* ?DynamicFile

2.5 输出(outputs)

输出频道为用户可能想要的输出类型提供了保护,在规则中使用前要先定义.其定义如下所示,

NAME:指定输出频道的名称;FILE_NAME:指定输出文件;MAX_SIZE指定日志文件的大小,单位是bytes; ACTION:指定日志文件到达MAX_SIZE时的操作。

$outchannel NAME, FILE_NAME, MAX_SIZE, ACTION

在规则中使用输出频道按照如下的格式:

selectors :omfile:$NAME

3. demo

#include <stdio.h>
#include <stdlib.h>
#include <syslog.h>int main()
{openlog("msg-lyh", LOG_PID, LOG_LOCAL0);syslog(LOG_INFO, "this is a test");closelog();return 0;
}

在/etc/rsyslog.conf中增加。

#
# Save message to other file
#
local0.*    /var/log/lyh.log

注:需要sudo service rsyslog restart 重启服务,配置才能生效

syslog 和 rsyslog相关推荐

  1. syslog和rsyslog有什么不同?

    syslog和rsyslog有什么不同? syslog日志收集器: syslog是早期的centos版本的日志收集器,应该是centos5之前的版本. syslog的两个重要的守护进程: 1.sysl ...

  2. syslog与rsyslog

    rsyslog常用配置 近期在思考一种简单的系统日志统一分析监控方案.在开始后面的内容之间先说下rsyslog,rsyslog目前是redhat.Ubuntu等常见linux发行版上自带的日志管理软件 ...

  3. Linux ❀ Rsyslog(Syslog)服务与配置文件参数详解

    文章目录 1.日志服务简介 2.linux系统中的常见日志 3.日志服务Rsyslog (1)服务对应rpm包 (2)服务配置文件 (3)配置文件格式 服务名称 连接符号 日志等级 日志记录位置 (4 ...

  4. rsyslog的学习

    rsyslog: 日志:历史日志 历史事件 时间,事件 日志级别:事件的关键性程度,loglevel 系统日志服务: syslog: syslogd:system klogd:kernel,记录内核日 ...

  5. rsyslog日志管理+LogAnalyzer

    简介RSYSLOG 用于日志处理系统.它提供高性能,高安全×××和模块化设计. 支持多线程,TCP,SSL,TLS,RELP 支持MySQL,PostgreSQL,Oracle数据库 配置说明 配置文 ...

  6. Centos6.3下利用rsyslog+loganalyzer+mysql部署日志服务器

    作为一名系统运维工程师,平时查看分析LINUX系统日志我觉得是我们每天必做的功课,但时间长了会发现每次查看站点日志都得挨个进后台,几台服务器还可以这么对付,但如果管理成百上千台线上服务器,这种方法就捉 ...

  7. mysql+enable+sql+log_CentOS7下利用rsyslog+loganalyzer配置日志服务器及Linux和windows客户端配置...

    随着机房内的服务器和网络设备增加,日志管理和查询就成了让系统管理员头疼的事. 系统管理员遇到的常见问题如下: 1.日常维护过程中不可能登录到每一台服务器和设备上去查看日志: 2.网络设备上的存储空间有 ...

  8. linux 多线程 写日志,rsyslog多线程远程日志记录介绍(lamp+rsyslog)

    rsyslog多线程远程日志记录介绍(lamp+rsyslog) rsyslog: rsyslog: 多线程: 支持UDP, TCP, SSL, TLS, RELP远程日志记录 rsyslog支持将日 ...

  9. mysql 搭建日志服务器_一、架构01-搭建日志服务器Rsyslog

    搭建日志服务器 1.环境配置 环境: node01  192.168.32.132  rsyslog服务器 node02  192.168.32.128  rsyslog客户端 2.node01.no ...

最新文章

  1. Cocos2d之Action类详解
  2. Kendo Web UI Grid数据绑定,删除,编辑,并把默认英文改成中文
  3. Java设计模式(十三):代理设计模式
  4. mysql迁移之后读取速度变慢_如何解决数据库迁移之后变慢的问题
  5. Effective STL中文版pdf
  6. 大学计算机在线答题,大学计算机基础网上考试答题卷理论部分(含答案)
  7. c语言英文星期几,输入字母,判断星期几,求大神指点
  8. python编程(supervisor程序管理)
  9. JS函数生成器,function* () {}
  10. Android Root权限静默安装
  11. ODAC安装配置与使用详解
  12. VMware ESXi 7.0 U3 SLIC 2.6 Unlocker 集成 Intel NUC 网卡、USB 网卡和 NVMe 驱动
  13. 移动平台前端开发总结
  14. Codeforces Problem-705A Hulk
  15. 人人网市值缩水近80%,究竟发生了什么?
  16. gcd函数(C/C++)
  17. 2022Mothercup建模比赛
  18. 第四届橙瓜网络文学奖网文之王,烽火戏诸侯舍我其谁?
  19. 效率值计算机公式,工作效率提升怎么计算(学会十个Excel公式)
  20. 聚合支付收款码怎么申请

热门文章

  1. 如何在轻量云上创建协同办公云文档
  2. 搜狗2015校园招聘javaproject师面经
  3. 高校/中职人工智能实验室建设
  4. Python 练习实例23 题目:打印出如下图案(菱形)
  5. 第22回 多线程是干什么滴!
  6. h5(梅花网页制作)
  7. 【STM32F429开发板用户手册】第40章 STM32F429的LCD控制器LTDC基础知识和HAL库API
  8. 七牛云免费对象存储,并绑定到cloudreve中
  9. CDH6.2.1 hive2.1导入orc分区表异常处理过程
  10. Unity配置安卓JDK方法