elasticsearch - Rsyslog模板捕获组

标签 elasticsearch rsyslog

我正在创建一个Rsyslog模板以将Apache日志解析为JSON,以便发送到 Elasticsearch 。

我目前正在尝试从access_log捕获请求时间,但似乎无法使我的正则表达式正常工作。

模板常量的Rsyslog配置:

constant(value="\",\"request_time\":\"")     property(name="msg" regex.expression="(\\[(.*)\\])" regex.type="ERE" regex.match="2")

即使regex在rsyslog regex测试页上似乎可以正常工作,我也从中不断得到“NO MATCH”。如果我将regex.match替换为0,则会得到完整的时间戳记,但其中包含我希望避免的[]。

请求示例:
192.168.33.1 - - [30/Mar/2016:08:45:38 +0000] "GET /TEST HTTP/1.1" 404 281 "-" "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36"

任何建议,将不胜感激。
谢谢!

最佳答案

我设法通过缩小所需的特定数据而不是“那些方括号之间的任何内容”来使它起作用:

  constant(value="\",\"request_time\":\"")     property(name="msg" regex.expression="([0-9]*\\/[a-zA-Z]*\\/[0-9]*:[0-9]*:[0-9]*:[0-9]{2})" regex.type="ERE" regex.match="0")

关于elasticsearch - Rsyslog模板捕获组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36303897/

相关文章:

linux - ubuntu - 禁用从特定进程/rsyslog 进程记录到 syslog

linux - 使用 rsyslog 重定向日志

amazon-web-services - 将数据记录到 elasticsearch 服务器

docker - 如何在 Kubernetes 上部署 Elasticsearch?

elasticsearch - 添加where子句以聚合查询

gcc - 为什么 rsyslogd 找不到 libgcc_s.so.1?

c - 如何从 loadrunner vugen 脚本运行 linux 命令?

Elasticsearch 6.3 绑定(bind)或发布到非环回地址,强制执行 Bootstrap 检查

elasticsearch - 我们正在 Elasticsearch 集群中丢失数据

nginx - 如何通知资源是否在 nginx 中完全下载