輕量級日誌監控工具 LoggiFly
簡介
什麼是 LoggiFly ?
LoggiFly是一個輕量級工具,用於監控Docker容器日誌中的預定義關鍵字或正則表達式模式,併發送通知。它可以幫助用戶及時獲取安全漏洞、系統錯誤或自定義模式的實時警報。
主要功能
-
日誌檢測:支持簡單關鍵詞、正則表達式及多行日誌檢測。
-
通知發送:可以通過
Ntfy或Apprise將通知發送到100多種服務(如Slack、Discord、Telegram)。 -
容器控制:可以在檢測到特定關鍵字時觸發容器的重啓或停止。
-
日誌附加:自動將日誌文件包含在通知中,以提供上下文。
-
自動重載:當配置文件發生變化時,自動重新加載。
-
可配置警報:可以過濾日誌行並使用模板定製消息和通知標題。
-
支持遠程主機:可以連接多個遠程
Docker主機。 -
多平臺支持:兼容
Docker、Docker Swarm和Podman。
應用場景
-
安全監控:捕捉安全漏洞,例如
Vaultwarden中的失敗登錄嘗試。 -
崩潰調試:附加日誌上下文以幫助調試應用程序崩潰。
-
容器管理:在檢測到特定錯誤時重啓或停止容器,確保系統穩定運行。
-
行爲監測:監控應用程序的自定義行爲,例如用戶在
Audiobookshelf服務器上下載有聲書時的日誌。
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
其中:
-
login:是關鍵字,用於捕捉和登錄相關的日誌; -
erroe:也是關鍵字,用於捕捉和error相關的日誌;
更詳細的說明,請參考官方文檔: 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/loggiflyLoggiFly
地址:https://clemcer.github.io/loggifly/
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/Q8fFReKwZH5xHzIjIY66CQ