V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
dLvsYgJ8fiP8TGYU
V2EX  ›  程序员

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

  •  
  •   dLvsYgJ8fiP8TGYU · 2022-09-08 13:32:20 +08:00 · 3900 次点击
    这是一个创建于 799 天前的主题,其中的信息可能已经有所发展或是发生改变。

    具体需求:

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

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

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

    2.Telegram Bot

    3.发邮件

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

    26 条回复    2022-09-09 17:04:52 +08:00
    ClownFish
        1
    ClownFish  
       2022-09-08 13:35:23 +08:00
    我写了个功能,不过没开源
    serialt
        2
    serialt  
       2022-09-08 13:36:44 +08:00
    loki?
    aheadlead
        3
    aheadlead  
       2022-09-08 13:37:11 +08:00
    也许可以看看 fail2ban ?不是很确定
    0o0O0o0O0o
        4
    0o0O0o0O0o  
       2022-09-08 13:37:34 +08:00 via iPhone
    fail2ban 有 notify ,但不知道是否满足你的需求
    DingJZ
        5
    DingJZ  
       2022-09-08 13:42:21 +08:00
    我自己的场景是直接扔到腾讯云上,这一套都可以配置,懒得折腾。一个月用不了几块钱
    Jirajine
        6
    Jirajine  
       2022-09-08 13:58:46 +08:00   ❤️ 3
    这还需要什么工具,直接写个脚本 tail | grep | while readline ; send 不就完了。
    nilai
        7
    nilai  
       2022-09-08 14:37:20 +08:00
    zabbix 可以
    julyclyde
        8
    julyclyde  
       2022-09-08 14:42:48 +08:00
    @Jirajine 你这组程序如果故障再启动,就不知道从哪儿开始读了,有可能中间少读一段
    bjzhush
        9
    bjzhush  
       2022-09-08 14:45:25 +08:00
    我做过类似需求,监控 NGINXlog 的。
    用 filebeat 监控 log ,然后推送到 redis 队列,PHP 读取 redis 队列实现业务逻辑。
    报警和推送用钉钉机器人就可以,免费,实时,手机安装个钉钉允许 push 消息即可。
    如果需要电话报警,就接个阿里云或第三方平台的接口,非常简单,一个请求而已。
    全程开发 2-3 小时足够
    blindie
        10
    blindie  
       2022-09-08 14:45:52 +08:00
    @julyclyde 这点再随便搞一下容错不就行了
    byaiu
        11
    byaiu  
       2022-09-08 14:50:52 +08:00
    rsyslog 就能做,linux 自带的
    cnoder
        12
    cnoder  
       2022-09-08 14:55:06 +08:00   ❤️ 1
    https://github.com/kasun/python-tail
    这个挺简单的,聚合,时间间隔,关键词, 发企业微信
    Jirajine
        13
    Jirajine  
       2022-09-08 14:59:25 +08:00
    @julyclyde 够用不就行了,没必要把事情做那么复杂。严肃场景上 Prometheus grafana 那一整套监控套件呗。
    wellsc
        14
    wellsc  
       2022-09-08 15:08:28 +08:00
    filebeat
    tcsky
        15
    tcsky  
       2022-09-08 15:10:25 +08:00
    fail2ban 能满足
    julyclyde
        16
    julyclyde  
       2022-09-08 15:42:37 +08:00
    @Jirajine 连基本的正确性都无法保证,何谈够用?
    nmap
        17
    nmap  
       2022-09-08 16:48:49 +08:00
    一个简单的 shell 脚本就可以了吧
    msg7086
        18
    msg7086  
       2022-09-08 16:53:12 +08:00
    扫日志执行操作,这个就是 fail2ban 的专长了。
    qooweds
        19
    qooweds  
       2022-09-08 18:59:30 +08:00
    日志文件不大的话,
    写个 shell 脚本,
    过滤当前分钟的日志(容错的话可以过滤最近几分钟的)
    过滤你需要的关键词
    提醒就用 curl 或者 sendmail 触发就好了
    放到 crontab 里面每分钟执行一下
    Zy143L
        20
    Zy143L  
       2022-09-08 19:37:01 +08:00 via Android
    最简单就暴力轮日志 grep 过滤
    出现就给你发通知
    用 serverchat pushplus 这些
    kidlj
        21
    kidlj  
       2022-09-08 20:19:36 +08:00 via iPhone
    Zabbix
    neochen13
        22
    neochen13  
       2022-09-08 22:57:59 +08:00
    filebeat => logstash => httpserver
    swulling
        23
    swulling  
       2022-09-09 07:09:26 +08:00   ❤️ 1
    ainon
        24
    ainon  
       2022-09-09 09:07:55 +08:00
    rsyslog ,过滤关键字
    qW7bo2FbzbC0
        25
    qW7bo2FbzbC0  
       2022-09-09 13:20:09 +08:00   ❤️ 2
    grep 或者 tail 配合行号 基本就是 https://github.com/kasun/python-tail
    anakinsky
        26
    anakinsky  
       2022-09-09 17:04:52 +08:00
    loki + grafana
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1783 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 16:50 · PVG 00:50 · LAX 08:50 · JFK 11:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.