Influxdb 使用Telegraf和XDB测量失败的SMTP登录

Influxdb 使用Telegraf和XDB测量失败的SMTP登录,influxdb,telegraf,influxql,Influxdb,Telegraf,Influxql,有很多关于问题根源的问题没有答案,所以我想更深入地说明我的问题,希望能得到一些关于如何实现它的想法 警告:XDB新手来了,请耐心等待 所以,我的根本问题是不能在InfluxQL中按字段分组,因为字段没有索引。然而,只要我明白我必须写下一些字段才能在XDB中获得一行,它就不能只包含标记 其想法是通过解析日志条目并生成可以稍后用计时仪绘制的测量值,从后缀日志中收集失败的登录尝试 原始日志条目如下所示: Nov 18 06:30:55 moonshine postfix/smtps/smtpd[116

有很多关于问题根源的问题没有答案,所以我想更深入地说明我的问题,希望能得到一些关于如何实现它的想法

警告:XDB新手来了,请耐心等待

所以,我的根本问题是不能在InfluxQL中按字段分组,因为字段没有索引。然而,只要我明白我必须写下一些字段才能在XDB中获得一行,它就不能只包含标记

其想法是通过解析日志条目并生成可以稍后用计时仪绘制的测量值,从后缀日志中收集失败的登录尝试

原始日志条目如下所示:

Nov 18 06:30:55 moonshine postfix/smtps/smtpd[11656]: warning: unknown[1.2.3.4]: SASL LOGIN authentication failed: UGFzc3dvcmQ6
此日志条目在XDB线路协议中生成以下测量值:

smtp_failed_login,host=moonshine,path=/var/log/mail.log,program=postfix/smtps/smtpd source_ip="1.2.3.4" 1574301125000000000
您可以看到Telegraf将客户的IP转换为字段。这只是因为我认为我需要一些领域,而IP是这里最好的申请人

只要我理解了文档,Telegraf的输入解析器就不能同时生成一个标记和字段,我必须决定哪个去哪个地方

我想在Chronograph中创建多个图表的目标是,根据1在选定的时间间隔内生成的失败日志条目的数量和2生成图表-和警报-如果某个IP达到关于失败登录的限制,则触发警报消息并采取行动。这有点类似于Fail2Ban,但我真的很想得到图表,因为有时失败的登录操作是有效的


我只是不知道如何查询2,并对1有一些基本的想法。如果有人能帮我指点一下如何编写这些查询或如何更改模式以实现目标,我将非常感激。

您的模式看起来不太好。source_ip应该是标记,因为您希望将其用于分组+创建常量字段,例如value=1。然后:

一,。在所选时间间隔内生成的失败日志项的数量:

SELECT COUNT(value) 
FROM <measurement>
WHERE <time condition>
二,。此处使用的IPs在所选间隔子查询中已达到定义的限制,它可能具有更好的单查询等效项:

SELECT * FROM (
  SELECT COUNT(value) 
  FROM <measurement>
  WHERE <time condition>
  GROUP BY "source_ip"
) WHERE count_value > <failed-login-limit>

查询^^未准备用于复制和粘贴测试。它们可能需要一些开发,因此请检查XDB文档的语法是否正确。

如何使用Telegraph创建常量字段?或者我能给它任何价值吗?我不知道。检查一下文件。现在还不清楚,你使用的是哪个输入插件,插件配置使用了什么。我使用的是logparser插件。我无法从中生成单个1,但我可以输入一个固定字符串作为字段值。