輕量級日誌監控工具 LoggiFly

簡介

什麼是 LoggiFly ?

LoggiFly 是一個輕量級工具,用於監控 Docker 容器日誌中的預定義關鍵字或正則表達式模式,併發送通知。它可以幫助用戶及時獲取安全漏洞、系統錯誤或自定義模式的實時警報。

主要功能

應用場景

LoggiFly 是一個理想的容器日誌監控解決方案,適用於需要實時監控和響應的各種 Docker 環境。

準備

安裝 Apprise

LoggiFly 支持 Ntfy 和 Apprise 兩種通知方式,之前老蘇都介紹過

文章傳送門:

  • 幾乎每個平臺都可以使用的推送通知 apprise

  • 無需註冊的通知服務 ntfy

因爲現在的 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

其中:

jS66fH

更詳細的說明,請參考官方文檔: 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/

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/Q8fFReKwZH5xHzIjIY66CQ