You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在rsyslog的Elasticsearch索引名中添加日期子串?

在rsyslog的Elasticsearch索引名中添加日期子串的正确方法

问题描述

我在配置rsyslog将日志发送到Elasticsearch时,想在索引名后追加日期子串,但尝试了多种方法都没成功。

当前可正常运行的基础配置:

module(load="imfile" PollingInterval="10")
module(load="omelasticsearch")

input(type="imfile"
      persistStateInterval="10"
      file="/var/log/myapp/myapp.log"
      tag="my_app_log")

if ($syslogtag == "my_app_log") then {
      action(type="omelasticsearch"
          server=["172.x.x.x", "172.x.x.x", "172.x.x.x"]
          serverport="9200"
          searchIndex="app-logs"
          )
      stop
  }

我尝试用模板生成带日期的索引名,但直接写searchIndex="string_template"会创建名为string_template的索引;去掉引号后无任何效果,既不创建索引也无错误日志。我还尝试了多种searchIndex的取值组合,都没达到预期:

  • app_logs-$now (无模板)
  • "app_logs-$now" (无模板)
  • "app_logs-%$now%" (无模板)
  • string_template
  • "string_template"
  • $string_template
  • "$string_template"
  • %$string_template%
  • "%$string_template%"

正确配置方法

要实现带日期的索引名,需正确使用rsyslog模板的引用规则,同时指定合法的日期格式(避免索引名包含Elasticsearch不允许的特殊字符):

1. 定义带日期格式的模板

使用%$now-yyyy-MM-dd%生成符合规范的日期串(例如2024-05-20),模板定义如下:

template(name="daily_index" type="string" string="app-logs-%$now-yyyy-MM-dd%")

2. 在omelasticsearch中正确引用模板

在searchIndex参数中,用%模板名%的格式包裹模板名,并且保留引号,这是rsyslog引用模板变量的标准方式。

完整的可运行配置:

module(load="imfile" PollingInterval="10")
module(load="omelasticsearch")

# 定义按日分割的索引模板
template(name="daily_index" type="string" string="app-logs-%$now-yyyy-MM-dd%")

input(type="imfile"
      persistStateInterval="10"
      file="/var/log/myapp/myapp.log"
      tag="my_app_log")

if ($syslogtag == "my_app_log") then {
      action(type="omelasticsearch"
          server=["172.x.x.x", "172.x.x.x", "172.x.x.x"]
          serverport="9200"
          searchIndex="%daily_index%"  # 正确引用模板
          )
      stop
  }

关键注意点

  • 必须为日期变量指定格式,默认的$now包含空格和特殊字符,会导致Elasticsearch索引创建失败
  • 若需要按小时分割索引,可使用%$now-yyyy-MM-dd-HH%格式
  • 模板引用必须用百分号包裹模板名,同时保留引号,这是rsyslog识别模板变量的必要格式

内容的提问来源于stack exchange,提问作者Arno

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 06:10:33