Log Bull 是一個強調易用性的日誌收集系統。它可以通過 .sh 腳本、Docker 和 Docker Compose 進行部署。該項目完全開源,採用 Apache 2.0 許可證。Log Bull 是一個強調易用性的日誌收集系統。它可以通過 .sh 腳本、Docker 和 Docker Compose 進行部署。該項目完全開源,採用 Apache 2.0 許可證。

ELK、Loki 和 Graylog 太過複雜,所以我建立了 Log Bull

2025/10/16 23:31

大約五年來,我一直面臨著收集日誌的任務,通常是來自小型到中型的程式碼庫。從程式碼發送日誌不是問題:Java 和 Go 幾乎都有現成的函式庫可用。但部署一些東西來收集它們卻是一個頭痛的問題。我明白這是一個可解決的任務(甚至在 ChatGPT 之前,現在更是如此)。然而,所有的日誌系統主要都是針對大型企業世界及其需求而設計的,而不是針對只有幾根棍子、膠水和「昨天」截止日期的小團隊或單個開發人員。

每次啟動 ELK 對我來說都是一個挑戰:一堆設置,一個不簡單的部署,當我進入 UI 時,我的眼睛被那些標籤頁弄得眼花繚亂。使用 Loki 和 Graylog 會稍微容易一些,但仍然有比我需要的多得多的功能。同時,在專案之間分離日誌並向系統添加其他用戶,使他們看不到不應該看到的內容,也不是最明顯的過程。

所以大約一年前,我決定製作自己的日誌收集系統。一個盡可能易於使用和啟動的系統。它可以通過單個命令部署在伺服器上,無需任何配置或介面中不必要的標籤頁。這就是 Log Bull 的由來,現在它是開源的:一個為擁有中型專案的開發人員設計的日誌收集系統。

目錄:

  • 關於專案
  • 如何部署 Log Bull?
  • 如何發送日誌?
  • 如何查看日誌?
  • 結論

關於專案

Log Bull 是一個強調易用性的日誌收集系統(最小配置,最少功能,啟動時零配置)。該專案完全在 Apache 2.0 許可下開源。我的主要優先事項是創建一個解決方案,使初級開發人員能夠輕鬆弄清楚如何啟動系統,如何向其發送日誌,以及如何在大約 15 分鐘內查看它們。

專案的主要特點:

  • 通過 .sh 腳本或 Docker 命令使用單個命令部署。
  • 您可以創建多個隔離的專案來收集日誌(並向其添加用戶)。
  • 極其簡單的介面,最少的配置,啟動時完全不需要配置(零配置)。
  • 支援 Python、Java、Go、JavaScript(TS \ NodeJS)、PHP、C# 的函式庫。計劃支援 Rust 和 Ruby。
  • 免費、開源且自託管。
  • 搜索日誌不需要了解 LogQL、Kibana DSL 或其他查詢語言。

https://www.youtube.com/watch?v=8H8jF8nVzJE&embedable=true

該專案使用 Go 開發,並建立在 OpenSearch 上。

專案網站 - https://logbull.com

專案 GitHub - https://github.com/logbull/logbull

P.S. 如果您覺得這個專案有用並且擁有 GitHub 帳戶,請給它一個星星 ⭐️。最初的星星很難收集。我將非常感謝您的支持!

如何部署 Log Bull?

部署專案有三種方式:通過 .sh 腳本(我推薦的方式)、通過 Docker 和通過 Docker Compose。

方法 1:通過腳本安裝

該腳本將安裝 Docker,將專案放在 /opt/logbull 文件夾中,並在系統重新啟動時配置自動啟動。安裝命令:

sudo apt-get install -y curl && \ sudo curl -sSL https://raw.githubusercontent.com/logbull/logbull/main/install-logbull.sh \ | sudo bash 

方法 2:通過 Docker Compose 啟動

創建 docker-compose.yml 文件,內容如下:

services:   logbull:     container_name: logbull     image: logbull/logbull:latest     ports:       - "4005:4005"     volumes:       - ./logbull-data:/logbull-data     restart: unless-stopped     healthcheck:       test: ["CMD", "curl", "-f", "http://localhost:4005/api/v1/system/health"]       interval: 5s       timeout: 5s       retries: 30 

然後運行命令 docker compose up -d。系統將在 4005 端口上啟動。

方法 3:通過 Docker 命令啟動

在終端中運行以下命令(系統也將在 4005 端口上啟動):

docker run -d \   --name logbull \   -p 4005:4005 \   -v ./logbull-data:/logbull-data \   --restart unless-stopped \   --health-cmd="curl -f http://localhost:4005/api/v1/system/health || exit 1" \   --health-interval=5s \   --health-retries=30 \   logbull/logbull:latest 

如何發送日誌?

我設計這個專案時考慮到了便利性,主要是為了開發人員。這就是為什麼我為大多數流行的開發語言創建了函式庫。我這樣做的想法是,Log Bull 可以作為處理器連接到任何流行的函式庫,而無需更改當前的程式碼庫。

我強烈建議查看網站上的示例,因為那裡有一個用於選擇語言的互動面板:

Code examples picler

讓我們以 Python 為例。首先,您需要安裝函式庫(雖然您也可以通過 HTTP 發送;有 cURL 的示例):

pip install logbull 

然後從程式碼發送:

import time from logbull import LogBullLogger  # Initialize logger logger = LogBullLogger(     host="http://LOGBULL_HOST",     project_id="LOGBULL_PROJECT_ID", )  # Log messages (printed to console AND sent to LogBull) logger.info("User logged in successfully", fields={     "user_id": "12345",     "username": "john_doe",     "ip": "192.168.1.100" })  # With context session_logger = logger.with_context({     "session_id": "sess_abc123",     "user_id": "user_456" })  session_logger.info("Processing request", fields={     "action": "purchase" })  # Ensure all logs are sent before exiting logger.flush() time.sleep(5) 

如何查看日誌?

所有日誌都會立即顯示在主屏幕上。您可以:

  • 減少消息的大小(通過將行截斷到約 50-100 個字符)。

  • 展開發送字段的列表(user_id、order_id 等)。

  • 點擊字段並將其添加到過濾器中。使用條件搜索日誌:

    Logs search with conditions

    Regular logs view

    Viewing messages text only (you can cut extra fields):

您還可以收集條件組(例如,消息包含某些文本,但排除特定伺服器 IP 地址)。

結論

我希望我的日誌收集系統對那些不想或不能(由於專案資源有限)實施「重量級」解決方案(如 ELK)的開發人員有所幫助。我已經在生產專案中使用 Log Bull,一切進展順利。我歡迎在 GitHub 上提供反饋、改進建議和問題報告。

免責聲明:本網站轉載的文章均來源於公開平台,僅供參考。這些文章不代表 MEXC 的觀點或意見。所有版權歸原作者所有。如果您認為任何轉載文章侵犯了第三方權利,請聯絡 service@support.mexc.com 以便將其刪除。MEXC 不對轉載文章的及時性、準確性或完整性作出任何陳述或保證,並且不對基於此類內容所採取的任何行動或決定承擔責任。轉載材料僅供參考,不構成任何商業、金融、法律和/或稅務決策的建議、認可或依據。
分享文章

您可能也會喜歡