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的主要内容,如果未能解决你的问题,请参考以下文章