Telegraf inputs.tail 与 zimbra.log

Posted

技术标签:

【中文标题】Telegraf inputs.tail 与 zimbra.log【英文标题】:Telegraf inputs.tail with zimbra.log 【发布时间】:2021-01-23 17:32:15 【问题描述】:

我有一些问题,如何设置 telegraf.conf 文件以从“zimbra.conf”文件中收集日志? 现在我尝试使用这个配置文本,但它不起作用:((( 我想将此日志发送到 grafana

其中一行“zimbra.conf” 例如:

10 月 1 日 10:20:46 webmail postfix/smtp[7677]: BD5BAE9999: to=user@mail.com, relay=mo94.cloud.mail.com[92.97.907.14]:25, delay=0.73, 延迟=0.09/0.01/0.58/0.19, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as 4C25fk2pjFz32N5)

而且我不明白“grok_patterns ="

是如何工作的
[[inputs.tail]]
  files = ["/var/log/zimbra.log"]
  from_beginning = false
  grok_patterns = ['%SYSLOGTIMESTAMP:timestamp %SYSLOGHOST %DATA:program(?:\[%POSINT\])?: %GREEDYDATA:message']
  name_override = "zimbra_access_log"
  grok_custom_pattern_files = []
  grok_custom_patterns = '''
  TS_UNIX %MONTH%SPACE%MONTHDAY%SPACE%HOUR:%MINUTE:%SECOND
  TS_CUSTOM %MONTH%SPACE%MONTHDAY %HOUR:%MINUTE:%SECOND
  '''
  grok_timezone = "Local"
  data_format = "grok"

【问题讨论】:

这个问题有点含糊,你是不是想用电报向 Graphana 发送 zimbra 数据?稍微澄清一下你的问题。否则,很好的问题。 是的,正确的。我有 Zimbra 的服务器,我有日志文件 /var/log/zimbra.log,所以我想将此日志发送到 InfluxDB,然后使用 Grafana 检查此日志并创建一些查询以查找某个日期。 【参考方案1】:

我已将您的示例行复制到名为 Prueba.txt 的日志文件中,其中包含以下行:

Oct 3 00:52:32 webmail postfix/smtp[7677]: BD5BAE9999: to=user@mail.com, relay=mo94.cloud.mail.com[92.97.907.14]:25, delay=0.73, delays=0.09/0.01/0.58/0.19, dsn=2.0.0, status=sent (250 2.0$
Oct 13 06:25:01 webmail systemd-logind[949]: New session 229478 of user zimbra.
Oct 13 06:25:02 webmail zmconfigd[27437]: Shutting down. Received signal 15
Oct 13 06:25:02 webmail systemd-logind[949]: Removed session c296.
Oct 13 06:25:03 webmail sshd[28005]: Failed password for invalid user julianne from 120.131.2.210 port 10570 ssh2

我已经能够使用tail.input插件的这个配置解析数据:

[[inputs.tail]]
  files = ["Prueba.txt"]
  from_beginning = true
  data_format = "grok"
  grok_patterns = ['%TIMESTAMP_ZIMBRA %GREEDYDATA:source %DATA:program(?:\[%POSINT\])?: %GREEDYDATA:message']


  grok_custom_patterns = '''
    TIMESTAMP_ZIMBRA (\w3 \d1,2 \d2:\d2:\d2)
  '''

  name_override = "log_frames"

您需要用正则表达式匹配输入字符串。为此,您可以使用一些预定义的模式,例如 GREEDYDATA = .* 来匹配您的输入(另一个示例是 NUMBER = (?:%BASE10NUM) BASE16NUM (?<![0-9A-Fa-f])(?:[+-]?(?:0x)?(?:[0-9A-Fa-f]+)))。您还可以在 grok_custom_patterns 中定义自己的模式。看看这个网站有一些模式:https://streamsets.com/documentation/datacollector/latest/help/datacollector/UserGuide/Apx-GrokPatterns/GrokPatterns_title.html

在这种情况下,我定义了一个 TIMESTAMP_ZIMBRA 模式来匹配 Oct 3 00:52:32 和 Oct 03 00:52:33 类似的输入。

这是 Prometheus 收集的指标:

# HELP log_frames_delay Telegraf collected metric
# TYPE log_frames_delay untyped
log_frames_delaydelays="0.09/0.01/0.58/0.19",dsn="2.0.0",host="localhost.localdomain",message="BD5BAE9999:",path="Prueba.txt",program="postfix/smtp",relay="mo94.cloud.mail.com[92.97.907.14]:25",source="webmail",status="sent (250 2.0.0 Ok: queued as 4C25fk2pjFz32N5)",to="user@mail.com" 0.73

P.D.:确保 telegraf 有权访问日志文件。

【讨论】:

您好,非常感谢您的帮助。现在我正在尝试使用您的示例。我应该如何确保电报有权访问日志文件? 我不明白如何使用code 参数放置文本,所以我复制了我的tail config info txt 文件:-) yadi.sk/d/mwN2RqoikX5ctg 我试图从Grafana 和Chronograf 收集数据,但不能:( 我认为首先,您应该确保 telegraf 正在导出指标。为此,您可以尝试使用 telegraf --config ./telegraf.config --debug 在调试模式下运行它。因此,您将能够查看它是否正在导出指标,并且您还可以检查它是否具有读取文件的权限(通过向电报用户添加权限)。之后,确保将这些指标正确插入到 InfluxDB 中(也许您必须修改 telegraf 配置的 [outputs] 中的某些内容),最后,尝试通过添加 InfluxDB 数据源在 grafana 中将它们可视化。 我认为我的电报服务正在运行,因为我在 Grafana 中有来自 Zimbra 的这台服务器的指标 这是带有 zimbra ibb.co/ZKk8748 的服务器指标的屏幕截图 这是调试电报 @987654324 的日志@ 看看调试的输出:D! Grok 找不到匹配项:“10 月 13 日 06:25:01 webmail systemd-logind [949]:用户 zimbra 的新会话 229478。”模式与输入不匹配。我将尝试使模式更通用并更新它。

以上是关于Telegraf inputs.tail 与 zimbra.log的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Go 外部插件与 Telegraf 交互?

Telegraf安装与简易使用指南

Telegraf安装与简易使用指南

日志架构与部署

Grafana/Telegraf/Ruby/RVM:telegraf 用户无法找到 ruby​​ 路径

ZooKeeper监控数据采集方案——Telegraf Plugin