轻量级日志监控工具LoggiFly

在这里插入图片描述
昨天的又没通过,可以去另两个渠道观看
在这里插入图片描述


简介

什么是 LoggiFly ?

LoggiFly 是一个轻量级工具,用于监控 Docker 容器日志中的预定义关键字或正则表达式模式,并发送通知。它可以帮助用户及时获取安全漏洞、系统错误或自定义模式的实时警报。

主要功能

  • 日志检测:支持简单关键词、正则表达式及多行日志检测。
  • 通知发送:可以通过 NtfyApprise 将通知发送到 100 多种服务(如 SlackDiscordTelegram)。
  • 容器控制:可以在检测到特定关键字时触发容器的重启或停止。
  • 日志附加:自动将日志文件包含在通知中,以提供上下文。
  • 自动重载:当配置文件发生变化时,自动重新加载。
  • 可配置警报:可以过滤日志行并使用模板定制消息和通知标题。
  • 支持远程主机:可以连接多个远程 Docker 主机。
  • 多平台支持:兼容 DockerDocker SwarmPodman

应用场景

  • 安全监控:捕捉安全漏洞,例如 Vaultwarden 中的失败登录尝试。
  • 崩溃调试:附加日志上下文以帮助调试应用程序崩溃。
  • 容器管理:在检测到特定错误时重启或停止容器,确保系统稳定运行。
  • 行为监测:监控应用程序的自定义行为,例如用户在 Audiobookshelf 服务器上下载有声书时的日志。

LoggiFly 是一个理想的容器日志监控解决方案,适用于需要实时监控和响应的各种 Docker 环境。

准备

安装 Apprise

LoggiFly 支持 NtfyApprise 两种通知方式,之前老苏都介绍过

文章传送门:

因为现在的 Apprise 已经支持 WxPusher,所以老苏选择了使用 Apprise 做日志通知

# 新建文件夹 apprise 和 子目录
mkdir -p /volume1/docker/apprise/config

# 进入 apprise 目录
cd /volume1/docker/apprise

# 运行容器
docker run -d \
   --restart unless-stopped \
   --name apprise \
   -p 8181:8000 \
   -v $(pwd)/config:/config \
   caronc/apprise:latest

详细的使用可以参考官方的详细说明: https://github.com/caronc/apprise/wiki/Notify_wxpusher

老苏采用的是 wxpusher://{app_token}@{userid} 格式

示例:wxpusher://AT_123456/UID_789012

config.yaml

老苏没采用环境变量方式,而是用了挂载 config.yaml 的方式,这也是官方推荐的方式,因为这种方式能进行精细控制并访问所有功能,如正则表达式、容器操作、消息格式等。

以监控 bitwarden(vaultwarden) 容器的登录为例

记得需要采用 utf-8 格式保存;

containers:        
    bitwarden:
    # The next 5 settings override the global settings only for this container.
      attachment_lines: 50     
      notification_cooldown: 2  
      keywords:
        - login
        - error

global_keywords:
  keywords:
    - panic
  keywords_with_attachment:
    - fatal

notifications:                       
  apprise:
    url: "wxpusher://AT_123456/UID_789012"    # Any Apprise-compatible URL (https://github.com/caronc/apprise/wiki)
  
# settings are optional because they all have default values
settings:          
  log_level: INFO               # DEBUG, INFO, WARNING, ERROR
  notification_cooldown: 5      # Seconds between alerts for same keyword (per container)
  attachment_lines: 20          # Number of Lines to include in log attachments
  multi_line_entries: true      # Detect multi-line log entries
  disable_restart: false        # Disable restart when a config change is detected 
  disable_start_message: false  # Suppress startup notification
  disable_shutdown_message: false  # Suppress shutdown notification
  disable_restart_message: false   # Suppress config reload notification

其中:

  • login:是关键字,用于捕捉和登录相关的日志;
  • erroe:也是关键字,用于捕捉和 error相关的日志;
参数描述默认值选项/备注
settings
log_level日志级别INFODEBUG, INFO, WARNING, ERROR
notification_cooldown相同关键字的通知冷却时间(每个容器)5 秒
attachment_lines附件中包含的日志行数20
multi_line_entries是否监控跨多行的日志条目true
disable_restart检测到配置更改时是否禁用重启false
disable_start_message是否抑制启动通知false
disable_shutdown_message是否抑制关闭通知false
disable_restart_message是否抑制配置重载通知false
notifications
ntfyNtfy 通知配置
- urlNtfy 服务器的 URL
- topicNtfy 的主题
- tokenNtfy 令牌(如果需要身份验证)
- usernameNtfy 用户名(如果需要身份验证)
- passwordNtfy 密码(如果需要身份验证)
- priorityNtfy 通知的优先级(1-5)3
- tagsNtfy 标签/表情符号
appriseApprise 通知配置
- urlApprise 兼容的 URL
containers
container-name要监控的容器名称,必须与实际容器名称匹配
- ntfy_topic针对特定容器的 Ntfy 主题
- ntfy_tags针对特定容器的 Ntfy 标签
- ntfy_priority针对特定容器的 Ntfy 优先级
- attachment_lines针对特定容器的日志附件行数
- notification_cooldown针对特定容器的通知冷却时间
global_keywords应用于所有监控容器的关键字
- keywords监控的简单文本匹配关键字
- keywords_with_attachment触发通知时附加日志文件的关键字

更详细的说明,请参考官方文档: https://clemcer.github.io/loggifly/guide/config-structure.html

安装

在群晖上以 Docker 方式安装。

本文写作时, latest 版本对应为 v1.4.1

docker cli 安装

如果你熟悉命令行,可能用 docker cli 更快捷

# 新建文件夹 loggifly
mkdir -p /volume1/docker/loggifly

# 进入 loggifly 目录
cd /volume1/docker/loggifly

# 将 config.yaml 放入当前目录

# 运行容器
docker run -d \
   --restart unless-stopped \
   --name loggifly \
   -v /var/run/docker.sock:/var/run/docker.sock \
   -v $(pwd)/config.yaml:/app/config.yaml \
   -e TZ=Asia/Shanghai \
   ghcr.io/clemcer/loggifly:latest

docker-compose 安装

也可以用 docker-compose 安装,将下面的内容保存为 docker-compose.yml 文件

version: "3"

services:
  logsend:
    image: ghcr.io/clemcer/loggifly:latest
    container_name: loggifly
    restart: unless-stopped
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - ./config.yaml:/app/config.yaml
    environment:
      - TZ=Asia/Shanghai

然后执行下面的命令

# 新建文件夹 loggifly
mkdir -p /volume1/docker/loggifly

# 进入 loggifly 目录
cd /volume1/docker/loggifly

# 将 docker-compose.yml 和 config.yaml 放入当前目录

# 一键启动
docker-compose up -d

运行

软件启动后, WxPusher 会收到一条消息,显示开始监控容器 bitwarden

打开 bitwarden 界面,故意输入错误的密码

日志中能看到错误日志

WxPusher 中收到了两条关于 login 的通知

点开分别是

因为采用了 login 关键字,所以登录成功也一样会有日志

参考文档

clemcer/loggifly: Monitor Docker Logs and send Notifications
地址:https://github.com/clemcer/loggifly

LoggiFly
地址:https://clemcer.github.io/loggifly/

几乎每个平台都可以使用的推送通知apprise | 老苏的blog
地址:https://laosu.tech/2021/09/06/几乎每个平台都可以使用的推送通知apprise

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杨浦老苏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值