手工配置rsyslog配置文件详解

本文档提供了在Linux环境下手工配置rsyslog的方法,适用于无法使用脚本的情况。包括配置系统环境、更新rsyslog配置文件、重启rsyslog及验证配置等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

手工配置

如果您无法通过脚本生成配置文件,这份指导将帮助您通过简单的复制、粘贴手动完成配置。

假定您已拥有root或sudo权限,是在通用的Linux平台使用5.8.0或更高版本的rsyslog,rsyslog能接收本地系统日志,并通过5140端口与外界连接。


1 配置系统环境

粘贴以下脚本并运行,并且保证 /var/spool/rsyslog 目录已存在,如果是Ubuntu系统,还需要对目录进行权限设置。

sudo mkdir -v /var/spool/rsyslog 
if [ "$(grep Ubuntu /etc/issue)" != "" ]; then 
sudo chown -R syslog:adm /var/spool/rsyslog 
fi
2 更新rsyslog配置文件。

打开rsyslog配置文件,它通常在 /etc/ 目录下

sudo vim /etc/rsyslog.d/rizhiyi.conf

将下列内容粘贴在这个配置文件中

#real tran log
$ModLoad imfile               #装载imfile模块
$InputFilePollInterval 3          #检查日志文件间隔(秒)
$WorkDirectory /var/spool/rsyslog       #定义工作目录。例如队列文件存储存储文件夹。

$InputFileName FILEPATH           #读取日志文件
$InputFileTag APPNAME            #日志写入日志附加标签字符串 不要添加特殊符号
$InputFileStateFile stat_APPNAME     #定义记录偏移量数据文件名 不要添加特殊符号
$InputFileSeverity info          #日志等级
$InputFilePersistStateInterval 20000    #回写偏移量数据到文件间隔时间(秒)
$RepeatedMsgReduction off         #关闭重复消息控制
$InputRunFileMonitor            #This activates the current monitor. It has no parameters. If you forget this directive, no file monitoring will take place.
#https://www.rizhiyi.com/docs/fastuse/tag/  设置标签(rsyslog)
$template RizhiyiFormat_APPNAME,"<%pri%>%protocol-version% %timestamp:::date-rfc3339% %HOSTNAME% %app-name% %procid% %msgid% [06f69fae723038bbc5d75d29564051ea@32473     tag=\"TAG\"] %msg%\n" 
                                  #<85>          0    2014-09-14T16:52:59.814155+08:00   macbook    my_app       -      -   [91595477-c8e4-42b8-b1f9-696465b422ff@32473 tag="file_upload" tag="my_tag"]
if $programname == 'APPNAME' then @@log.rizhiyi.com:5140;RizhiyiFormat_APPNAME 
if $programname == 'APPNAME' then ~
---------------------------------------------------------------对应的单台测试机的配置如下---------------------------------------------------------------------------------------

并替换

  • FILEPATH: 需要上传的日志文件的绝对路径,必须包含日志文件名。 
    示例:/var/log/nginx/access.log
  • APPNAME: 用于标识上传的唯一应用来源,可用来定义日志分组,这将帮助您有效划分日志,缩小搜索范围。APPNAME设置正确与否直接影响到后台对日志字段的提取。如果您是VIP用户,日志易为您定制了日志解析规则,请填写日志易提供的针对该日志的APPNAME,以使定制的日志解析规则生效。 
    示例: nginx_access
  • TAG: 标签,标识日志的扩展信息,可定义多个标识,这里替换为您自行定义的标签,可用来定义日志分组,这将帮助您有效划分日志,缩小搜索范围。 
    示例: rizhiyi_search

注意:

  • 在 /etc/rsyslog.d/ 下的rsyslog配置文件中:
    • $InputFileTag定义的APPNAME必须唯一,同一台主机上不同的应用应当使用不同的APPNAME,否则会导致新定义的TOKEN和TAG不生效;
    • $template定义的模板名必须唯一,否则会导致新定义的TOKEN和TAG不生效;
    • $InputFileStateFile定义的StateFile必须唯一,它被rsyslog用于记录文件上传进度,否则会导致混乱;
  • 注意:@@log.rizhiyi.com:5140 该值为接收日志的服务器域名或者主机名。默认是log.rizhiyi.com:5140
3 重启rsyslog
$ sudo service rsyslog restart
4 验证

例如,配置文件中的tag字段已修改为"rizhiyi_search",可使用"tag:rizhiyi_search"搜索过去一小时的事件,检查日志易是否成功接收并正确识别日志,建立索引可能需要几十秒钟时间,需要等待几十秒钟。

#参考:

http://www.voidcn.com/blog/anghlq/article/p-4958086.html

http://www.wnqzw.com/article/10798.html

附:

日志輸出模板
通過模板可以更具需要來控制日志輸出的樣式。格式如下:
$template <TEMPLATE_NAME>,"text %<PROPERTY>% more text", [<options>]
$template 爲模板指令。<TEMPLATE_NAME> 爲模板名。"" 之間的文本爲模板格式。 被 % 包含的文本對應相關的屬性。<options> 指定修改 模板功能的一些選項,例如 sql 或者 stdsql 會格式化文本爲 SQL 查詢。
動態文件輸出
通過日志和/或系統屬性決定輸出文件名。
$template DynamicFile,"/var/log/test_logs/%timegenerated%-test.log"
*.* ?DynamicFile
使用 timegenerated 生成文件名,使用該模板則在前面加上 ?。
其他例子如下:
$template DailyPerHostLogs,"/var/log/syslog/%$YEAR%/%$MONTH%/%$DAY%/%HOSTNAME%/messages.log"
根據屬性控制日志輸出格式
使用下面的格式可以對模板之中的屬性做各種修改操作從而定制日志的格式:
%<propname>[:<fromChar>:<toChar>:<options>]%
<propname> 屬性名,可用的屬性名參考上文。
<fromChar> 和 <toChar> 表示對屬性值字符串的操作範圍。 設置 <fromChar> 爲 R,<toChar> 爲正則表達式即可以通過正則 表達式定義範圍。
<options> 則表示屬性選項。完整的列表可以參考 這裏的 Property Options 節。
一些示例如下:
%msg% # 日志的完整消息文本
%msg:1:2% # 日志消息文本的最開始兩個字符
%msg:::drop-last-lf% # 日志的完整消息文本,移出最後的換行符
%timegenerated:1:10:date-rfc3339% # 時間戳的頭10個字符並按 RFC3999 標准格式化
下面是一些模板例子。
輸出日志的級別,類別,收到日志時的時間錯,主機名,消息標簽,消息正文, 加上換行符:
$template verbose,"%syslogseverity%,%syslogfacility%,%timegenerated%,%HOSTNAME%,%syslogtag%,%msg%\n"
輸出日志來源,時間以及日志標簽,正文,同時還有蜂鳴聲(\7):
$template wallmsg,"\r\n\7Message from syslogd@%HOSTNAME% at %timegenerated% ...\r\n %syslogtag% %msg%\n\r"
格式化日志以便于直接進行 SQL 操作:
$template dbFormat,"insert into SystemEvents (Message, Facility,FromHost, Priority, DeviceReportedTime, ReceivedAt, InfoUnitID, SysLogTag) values ('%msg%', %syslogfacility%, '%HOSTNAME%',%syslogpriority%, '%timereported:::date-mysql%', '%timegenerated:::date-mysql%', %iut%, '%syslogtag%')",sql
以 json 格式輸出,方便程序解析:
$template jsonFormat,"{\"message\":\"%msg:::json%\",\"fromhost\":\"%HOSTNAME:::json%\",\"facility\":\"%syslogfacility-text%\",\"priority\":\"%syslogpriority-text%\",\"timereported\":\"%timereported:::date-rfc3339%\",\"timegenerated\":\"%timegenerated:::date-rfc3339%\"}\n"
注意,message 的內容會在最前面多一個空格,其解釋請參考這裏。
rsyslog 也提供了一些預定義的模板(以 RSYSLOG_ 爲前綴),參考 這裏 的 Reserved Template Names 節,其定義如下:
RSYSLOG_FileFormat
"%TIMESTAMP:::date-rfc3339% %HOSTNAME% %syslogtag%%msg:::sp-if-no-1st-sp%%msg:::drop-last-lf%\n\"
RSYSLOG_TraditionalFileFormat
"%TIMESTAMP% %HOSTNAME% %syslogtag%%msg:::sp-if-no-1st-sp%%msg:::drop-last-lf%\n\"
RSYSLOG_ForwardFormat
"<%PRI%>%TIMESTAMP:::date-rfc3339% %HOSTNAME% %syslogtag:1:32%%msg:::sp-if-no-1st-sp%%msg%\"
RSYSLOG_TraditionalForwardFormat
"<%PRI%>%TIMESTAMP% %HOSTNAME% %syslogtag:1:32%%msg:::sp-if-no-1st-sp%%msg%\"
使用這些模板,則在動作後附加 “;template_name” 即可,例如:
:programname,startswith,"cron" -/var/log/cron;RSYSLOG_TraditionalFileFormat

### 回答1: rsyslog.conf是rsyslog日志服务的主要配置文件,用于指定日志的输入、输出、过滤、格式化等操作。以下是rsyslog.conf配置文件详解: 1. 输入模块配置 rsyslog.conf文件中的输入模块用于指定从哪些源获取日志信息,包括本地日志、远程日志、系统日志等。常用的输入模块包括: - imuxsock:用于从Unix域套接字读取本地日志信息。 - imudp:用于从UDP协议接收远程日志信息。 - imtcp:用于从TCP协议接收远程日志信息。 - imjournal:用于从systemd-journald服务读取系统日志信息。 2. 过滤模块配置 rsyslog.conf文件中的过滤模块用于根据规则过滤日志信息,只保留符合条件的日志信息。常用的过滤模块包括: - if:用于根据条件过滤日志信息。 - regex:用于根据正则表达式过滤日志信息。 - property:用于根据属性过滤日志信息。 3. 输出模块配置 rsyslog.conf文件中的输出模块用于指定将日志信息输出到哪些目标,包括文件、数据库、网络等。常用的输出模块包括: - omfile:用于将日志信息输出到文件。 - ommysql:用于将日志信息输出到MySQL数据库。 - omelasticsearch:用于将日志信息输出到Elasticsearch搜索引擎。 - omfwd:用于将日志信息转发到远程rsyslog服务器。 4. 格式化模块配置 rsyslog.conf文件中的格式化模块用于指定日志信息的格式,包括时间、主机名、进程名、日志级别等。常用的格式化模块包括: - template:用于定义日志信息的格式模板。 - property:用于指定日志信息中的属性,如时间、主机名、进程名等。 - msg:用于指定日志信息的内容。 以上是rsyslog.conf配置文件的主要内容和功能,通过合理配置可以实现高效的日志管理和分析。 ### 回答2: rsyslog是一款流行的系统日志管理工具,可以帮助用户收集和处理多个设备和应用程序的日志信息。rsyslog的主要配置文件rsyslog.conf,该文件包含一系列的配置项,用于指定日志的来源、目的地、格式化规则、过滤规则等。 rsyslog.conf文件的格式 rsyslog.conf文件采用基于行的格式,每个配置项都以$开头,并且每个配置项都有一个相应的值。下面是一个简单的rsyslog.conf文件的示例: $ModLoad imuxsock # 从Unix Socket收集日志 $ModLoad imklog # 从内核日志接口收集日志 $ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat $FileOwner root $FileGroup adm $FileCreateMode 0640 $DirCreateMode 0755 $Umask 0022 $WorkDirectory /var/spool/rsyslog 配置项说明 以下是rsyslog.conf文件中的常用配置项及其说明: $ModLoad:加载模块,用于收集不同来源的日志信息。比如,imfile模块用于从文件中收集日志,imudp模块用于从UDP协议中收集日志。 $Action:配置动作,用于指定将日志信息发送到哪个目的地。比如,将日志信息写入文件、发送到远程服务器、发送电子邮件等等。 $FileOwner:指定文件的所有者。 $FileGroup:指定文件的用户组。 $FileCreateMode:指定新创建文件的权限。 $DirCreateMode:指定新创建目录的权限。 $Umask:指定掩码,用于权限控制。 $WorkDirectory:指定rsyslog的工作目录。 rsyslog.conf 文件的安全性考虑 由于rsyslog.conf文件中包含敏感信息,例如日志来源、目的地和过滤规则,因此需要注意保护其安全性。一般建议将rsyslog.conf文件设置为只读或者仅给特定用户组或管理员访问。同时对其文件所在目录进行访问限制,避免敏感信息泄露。在系统更新或升级时也应该备份rsyslog.conf文件,以防丢失或损坏。 总结 rsyslog.conf是rsyslog主要的配置文件,包含了许多配置项,用于指定日志来源、目的地、格式化规则、过滤规则等。在实际使用中应当注意其安全性,并备份以避免不必要的损失。 ### 回答3: rsyslog是一个强大的系统日志收集工具,它可以从多种数据源收集日志,结合正则表达式过滤和匹配日志,并将日志发送到远程服务器或保存到本地文件中。rsyslog配置文件非常灵活,具体配置选项也非常多,本文将对rsyslog.conf配置文件进行详解rsyslog.conf文件是rsyslog的主要配置文件,通常位于/etc目录下。配置文件中定义了rsyslog如何接受、过滤、处理并转发日志。rsyslog.conf文件由多个模块组成,每个模块定义了一些规则,常用的模块包括: 1.基础模块 *MODULES - 定义rsyslog加载的模块。 *GLOBAL - 定义全局配置。可设置日志文件格式、工作目录、日志文件保存周期等。 *DEFAULT - 定义默认规则,用于处理日志消息的行为。 2.输入模块 *IMUDP - 通过UDP接收日志。 *IMTCP - 通过TCP接收日志。 *IMKLOG - 通过内核日志接收日志。 *IMFILE - 通过本地文件接收日志。 3.过滤器模块 *IF - 判断条件语句。 *EXPR - 操作符。 *PROPERTY - 判断日志属性。 *PRIFILT - 过滤器参数。 4.输出模块 *ACTION - 定义发送日志消息的操作。 *OMFILE - 将日志文件写入本地文件。 *OMSYSLOG - 发送日志至远程syslog服务器。 rsyslog.conf的基础语法类似于C语言的语法,其中#表示注释,$表示变量,*表示通配符。 例如: $ModLoad ompgsql # 加载PostgreSQL输出插件 $template myfmt, "SELECT user_info(%msg%) as usermsg" # 定义输出格式 *.* :ompgsql:localhost,mylog,postgres,postgres # 发送日志至PostgreSQL服务器 上面的示例代码定义了一个输出模块,利用PostgreSQL保存收集到的日志,并在输出前使用了自定义的输出模板。 需要注意的是,rsyslog.conf配置文件中的配置是按照从上到下逐步执行的,因此在编写配置文件时,需要仔细思考,确保各个模块的顺序和执行效率。 总之,rsyslog配置文件是非常灵活的,通过合理的配置,可以将日志收集、过滤、发送等各个环节完美的串联起来,为系统的监控和分析提供大大的便利和效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值