有什么方法能够实现: Linux 监控日志文件,若出现关键词就发消息提醒?

2022-09-08 13:32:20 +08:00
 dLvsYgJ8fiP8TGYU

具体需求:

在后台持续读取指定文件,如果新的 log 条目包含指定的关键词,就发出提醒?

提醒方法:(按偏好程度排序)

1.访问特定 URL (例如 Bark )

2.Telegram Bot

3.发邮件

最好是开源项目。有大佬知道可实现上述功能的工具吗?

3860 次点击
所在节点    程序员
26 条回复
ClownFish
2022-09-08 13:35:23 +08:00
我写了个功能,不过没开源
serialt
2022-09-08 13:36:44 +08:00
loki?
aheadlead
2022-09-08 13:37:11 +08:00
也许可以看看 fail2ban ?不是很确定
0o0O0o0O0o
2022-09-08 13:37:34 +08:00
fail2ban 有 notify ,但不知道是否满足你的需求
DingJZ
2022-09-08 13:42:21 +08:00
我自己的场景是直接扔到腾讯云上,这一套都可以配置,懒得折腾。一个月用不了几块钱
Jirajine
2022-09-08 13:58:46 +08:00
这还需要什么工具,直接写个脚本 tail | grep | while readline ; send 不就完了。
nilai
2022-09-08 14:37:20 +08:00
zabbix 可以
julyclyde
2022-09-08 14:42:48 +08:00
@Jirajine 你这组程序如果故障再启动,就不知道从哪儿开始读了,有可能中间少读一段
bjzhush
2022-09-08 14:45:25 +08:00
我做过类似需求,监控 NGINXlog 的。
用 filebeat 监控 log ,然后推送到 redis 队列,PHP 读取 redis 队列实现业务逻辑。
报警和推送用钉钉机器人就可以,免费,实时,手机安装个钉钉允许 push 消息即可。
如果需要电话报警,就接个阿里云或第三方平台的接口,非常简单,一个请求而已。
全程开发 2-3 小时足够
blindie
2022-09-08 14:45:52 +08:00
@julyclyde 这点再随便搞一下容错不就行了
byaiu
2022-09-08 14:50:52 +08:00
rsyslog 就能做,linux 自带的
cnoder
2022-09-08 14:55:06 +08:00
https://github.com/kasun/python-tail
这个挺简单的,聚合,时间间隔,关键词, 发企业微信
Jirajine
2022-09-08 14:59:25 +08:00
@julyclyde 够用不就行了,没必要把事情做那么复杂。严肃场景上 Prometheus grafana 那一整套监控套件呗。
wellsc
2022-09-08 15:08:28 +08:00
filebeat
tcsky
2022-09-08 15:10:25 +08:00
fail2ban 能满足
julyclyde
2022-09-08 15:42:37 +08:00
@Jirajine 连基本的正确性都无法保证,何谈够用?
nmap
2022-09-08 16:48:49 +08:00
一个简单的 shell 脚本就可以了吧
msg7086
2022-09-08 16:53:12 +08:00
扫日志执行操作,这个就是 fail2ban 的专长了。
qooweds
2022-09-08 18:59:30 +08:00
日志文件不大的话,
写个 shell 脚本,
过滤当前分钟的日志(容错的话可以过滤最近几分钟的)
过滤你需要的关键词
提醒就用 curl 或者 sendmail 触发就好了
放到 crontab 里面每分钟执行一下
Zy143L
2022-09-08 19:37:01 +08:00
最简单就暴力轮日志 grep 过滤
出现就给你发通知
用 serverchat pushplus 这些

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/878614

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX