syslog 和 rsyslog

2023-11-11 16:32
文章标签 syslog rsyslog

本文主要是介绍syslog 和 rsyslog,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/391407

相关文章

splunk指定syslog来源的sourcetype

日常工作使用splunk来分析数据,由于会接收到来自不同网络设备的数据,大多由sysylog发送出来,默认端口为udp的514端口,这样就会造成数据类型sourcetype没法确定,在使用过程中只能依靠host(来源ip)来判断,如果一台设备发送不同类型的数据,就没办法区分。因此需要用splunk的配置文件来指定udp:514的sourcetype。 在$HOME/etc/apps

Linux日志服务rsyslog深度解析(上)

🐇明明跟你说过:个人主页 🏅个人专栏:《Linux :从菜鸟到飞鸟的逆袭》🏅 🔖行路有良友,便是天堂🔖 目录 一、引言 1、日志在Linux系统中的作用 2、rsyslog历史背景  3、rsyslog与syslogd的比较  二、rsyslog基础知识  1、rsyslog的安装与配置基础 2、rsyslog的组件架构 一、引言 1、日志在Linux

如何在开源代码中使用syslog打印日志

syslog的启动命令: /bin/syslogd -O /var/messages -s 1024 -b 0 -l 3 & /bin/syslogd -O /usr/protest/messages -s 1024 -b 0 -l 3 & -l后面的数字是打印的日志的级别,有时候进程启动了,但是就是不打印,可能是级别设置的不对。 如下文件是存放日志的文件: /usr/protest/

telegraf收集syslog:inputs.syslog,在telegraf里面并没有生成syslog表

这个问题不是我遇到的,是技术群有人遇到的,以防下次自己遇到,做个记录 报错:Undefined but requested input: syslog 刚开始的时候,他安装的是telegraf 1.6版本的,在telegraf.conf里面添加了[[inputs.syslog]]插件,然后按照官网(https://github.com/influxdata/telegraf/blob/mast

CentOS7+Rsyslog+MySQL 搭建 Rsyslog 日志服务器

文章目录 1、主机环境2、rsyslog搭建2.1、rsyslog-server搭建2.2、rsyslog-client2.2.1、测试 2.3、rsyslog日志分类2.3.1、测试 3、基于mysql存储日志信息3.1、安装mariadb3.2、配置mariadb数据库3.3、配置rsyslog-server3.4、配置rsyslog-client3.5、测试 1、主机环

rsyslog研究

第零章 综述 最近因为工作需要研究了rsyslog,主要是把官网的文档看了一遍,因为学习的过程中,发现中文资料很少,所以研究的差不多以后,决定拿出来分享一下。 rsyslog官网的文档还是挺烂的(在我看完后,官网有了一次改版,可能好一些了),尤其是配置文件部分,每个版本都有改动,但是官网只有最新版本的参数介绍,好几次我按照文档的参数写配置文件,或者报错,或者参数不起作用,因此大家使

RHEL 6.x 搭建rsyslog日志服务器和loganalyzer 日志分析工具

RHEL 6.x  搭建rsyslog日志服务器和loganalyzer日志分析工具 =============================================== rsyslog的介绍 logrotate日志滚动的介绍 rsyslog的存储途径 基于web的loganalyzer日志分析工具的搭建 ======================

rsyslog搭建远程日志服务器

背景 在两台机器上,通过rsyslog提供的日志转发功能,将其中一台机器的日志转发到另一台,也就是需要一个日志服务器。 机器环境 服务端:CentOS 7.2系统 客户端:CentOS 6.5系统 服务搭建 1、服务端 服务端主要做的是配置监听端口,决定采用TCP还是UDP方式。本例子使用UDP方式,服务端配置/etc/rsyslog.conf如下, [root@CentOS-7-2

syslog客户端编程

Log是什么意思? Log,就是日志消息(Log Message)。 Log是由网络设备的操作系统产生的,当一台网络设备完成了某个操作、处理了某些内容、出现了某些错误……都会用一条简短的文字在系统中记录下来,这就是Log消息。 而网络管理员可以登陆到设备上,对日志消息进行分析,然后找到问题,就可以对设备的性能进行优化,也可以经过分析Log用来对设备进行故障的诊断。 如下图,是Cisco设备上

rsyslog 传输mysql 日志

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!                 在另外一种环境中,让我们假定你已经在机器上安装了一个名为“foobar”的应用程序,它会在/var/log下生成foobar.log日志文件。现在,你想要将它的日志