首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SSSD日志的Grok模式

SSSD日志的Grok模式
EN

Stack Overflow用户
提问于 2020-11-19 13:12:09
回答 1查看 88关注 0票数 2

我试图使用Logstash模式解析SSSD恶魔日志,以获得更好的可见性。

日志样本

代码语言:javascript
复制
(Mon Nov  9 12:08:56 2020) [sssd[nss]] [client_recv] (0x0200): Client disconnected!
(Mon Nov  9 12:08:56 2020) [sssd[nss]] [client_close_fn] (0x2000): Terminated client [0x55ffd29d93c0][22]

我已经创建了自定义Grok模式,如下所示:

代码语言:javascript
复制
SSSD_TIME [ \(%{DAY} %{MONTH} %{MONTHDAY} %{TIME} %{YEAR}\)]+
SSSD_DEMON \[[a-z]*\[[a-z]*\]\]+
SSSD_FUNCTION \[[a-z,_]*\]+
SSD_LOG_LEVEL (\(\dx\d*\))+

我使用上述自定义grok模式获取以下输出,用于下面的查询

代码语言:javascript
复制
%{SSSD_TIME:time} %{SSSD_DEMON:demon} %{SSSD_FUNCTION:function} %{SSD_LOG_LEVEL:loglevel}[:]\s+%{GREEDYDATA:message}

输出:

代码语言:javascript
复制
{
  "function": "[client_recv]",
  "loglevel": "(0x0200)",
  "time": "(Mon Nov  9 12:08:56 2020)",
  "demon": "[sssd[nss]]",
  "message": "Client disconnected!"
}

我只需要提取括号中的值,而不是整个内容。

我试着跳过括号,但它只适用于第一个值。

下面查询跳过第一个括号

代码语言:javascript
复制
\(%{SSSD_TIME:time}\) %{SSSD_DEMON:demon} %{SSSD_FUNCTION:function} %{SSD_LOG_LEVEL:loglevel}[:]\s+%{GREEDYDATA:message}

我需要得到下面的输出

代码语言:javascript
复制
{
  "function": "client_recv",
  "loglevel": "0x0200",
  "time": "Mon Nov  9 12:08:56 2020",
  "demon": "sssd[nss]",
  "message": "Client disconnected!"
}

如果有人能帮我,那就太好了

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-19 18:05:53

下面是您想要的输出的grok模式:

\((?<timestamp>%{DAY} %{MONTH} %{MONTHNUM} %{TIME} %{YEAR})\) \[(?<daemon>(.*))\] \[%{DATA:function}\] \(%{DATA:log_level}\): %{GREEDYDATA:message}

我使用格罗克调试器创建了from模式。

以下是输出的屏幕截图:

如果需要,可以使用logstash的DAY过滤器删除不必要的标记,如MONTH等。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64912407

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档