【问题标题】:How to use if condition in fluentd 0.12如何在fluentd 0.12中使用if条件
【发布时间】:2020-09-19 14:52:01
【问题描述】:

我使用的是 fluentd 0.12。

我有以下日志-

{"log":"2020-09-18 19:44:41 | INFO  | timeleft| 5a |  364 - core - 1.0.0.SNAPSHOT | TrafficTo:blue-connectorprocess from: blue-connectorprocess"}
{"log":"2020-09-18 19:44:41 | INFO  | timeleft| 6a |  351 - core - 1.0.0.SNAPSHOT | TrafficTo:httpRetrievedata from: retrieveSlaById"}
{"log":"2020-09-18 19:44:41 | INFO  | timeleft| 7a |  381 - core - 1.0.0.SNAPSHOT | TrafficTo:PromptConnector from: blue-connectorprocess"}

现在,我使用正则表达式将日志划分为几个字段 - 时间 | LOG_LEVEL |留言|版本| TRAFFIC_TO|来自

现在,我的要求是,当 fluentd 遇到字段 TRAFFIC_TO 的值“blue-connectorprocess”时,它应该添加新字段 NEW_TRAFFIC,并且该字段的值应该是 webconnector。

同样,如果在 TRAFFIC_TO 中遇到值“httpRetrievedata”,那么 NEW_TRAFFIC 字段应该具有值 uiconnector。如果我遇到值“PromptConnector”,那么 NEW_TRAFFIC 的值应该是 checkconnector。

我在下面的代码中尝试了 TRAFFIC_TO 值之一,但没有成功。

<filter sla.**>
  @type record_transformer
  <record>
    NEW_TRAFFIC ${if record["TRAFFIC_TO"] == "PromptConnector" then record["NEW_TRAFFIC"] = "checkconnector"; end;}
  </record>
</filter>

有人可以帮忙吗?

【问题讨论】:

  • 请显示您的过滤器日志。

标签: elasticsearch plugins fluentd td-agent


【解决方案1】:

您应该在过滤器块中使用 enable_ruby 才能工作。我的意思是你的代码看起来像这样:

<filter sla.**>
  @type record_transformer
  enable_ruby
  <record>
    NEW_TRAFFIC ${if record["TRAFFIC_TO"] == "PromptConnector" then record["NEW_TRAFFIC"] = "checkconnector"; end;}
  </record>
</filter>

它对我有用

【讨论】:

    猜你喜欢
    • 2016-03-08
    • 2019-04-25
    • 1970-01-01
    • 1970-01-01
    • 2020-10-02
    • 2018-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多