約5年間、私は小型から中型のコードベースからログを収集するという課題に直面してきました。コードからログを送信することは問題ではありません:JavaとGoには、このためのライブラリがほぼ箱外にあります。しかし、それらを収集するために何かを展開することは頭痛です。 小さなチームや単一の開発者よりも、いくつかのスタック、レイヤー、そして「昨日」の締め切りがあります。 r ELKをリリースすることは、毎回私にとって挑戦です: セットアップのバック、非トリビアなデプロイ、そして私がUIに入ると、私の目はタブから野生に走ります LokiとGraylogで、それは少し簡単ですが、まだ私が必要とするよりも多くの機能があります。 だから、約1年前、私は自分のログ収集システムを作ることに決めました。できるだけ簡単に使用して起動できるシステムです。 それは、構成やインターフェイス内の不要なタブなしに、単一のコマンドでサーバーに展開されます。それでLog Bullが登場し、今ではオープンソースです:ログ収集システム 中規模のプロジェクト for developers Table of contents: プロジェクトについて どうやってLog Bullを導入するの? ログを送る方法は? ログをどう見るか。 結論 プロジェクトについて Log Bull は、使いやすさ(最小限の構成、最小限の機能、スタート時にゼロコンフィグ)を重視するログ収集システムです。このプロジェクトは、Apache 2.0 ライセンスの下で完全にオープンソースです。私の主な優先順位は、ジュニア開発者がシステムを起動する方法、ログを送信する方法、および約 15 分でそれらを表示する方法を簡単に把握できるソリューションを作成することでした。 Key features of the project: .sh スクリプトまたは Docker コマンドを介して単一のコマンドで展開します。 ログを収集するための複数の単独プロジェクトを作成できます(ユーザーをそれらに追加できます)。 最小限の構成で非常にシンプルなインターフェイスで、起動時に構成は必要ありません(zero-config)。 Python、Java、Go、JavaScript(TS \ NodeJS)、PHP、C#のライブラリ。 無料、オープンソース、自己ホスト ログを検索するには、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を導入するの? プロジェクトを展開する方法は、3つあります: .sh スクリプト(私が推奨する)、Docker 、Docker Compose を介して。 Method 1: Installation via script スクリプトは、Docker をインストールし、プロジェクトを /opt/logbull フォルダに置き、システムが再起動されたときに自動起動を設定します。 sudo apt-get install -y curl && \ sudo curl -sSL https://raw.githubusercontent.com/logbull/logbull/main/install-logbull.sh \ | sudo bash Method 2: Launch via 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 コマンドを実行する。 システムはポート4005で起動します。 docker compose up -d Method 3: Launch via Docker command ターミナルで次のコマンドを実行します(システムはポート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 は、現在のコードベースを変更せずにプロセッサとして一般的なライブラリに接続できるという考えで作成しました。 チェックアウトをお勧めします♪ なぜなら、言語を選択するためのインタラクティブなパネルがあるからです。 ウェブサイト上の例 まず、ライブラリをインストールする必要があります(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) ログをどう見るか。 すべてのログはメインスクリーンにすぐに表示されます. You can: メッセージのサイズを減らす(ラインを50~100文字に切り取る)。 送信フィールドのリストを拡張する(user_id、order_id、等)。 フィールドをクリックし、フィルターに追加します. Logs search with conditions: また、条件のグループを収集することもできます(たとえば、メッセージには特定のテキストが含まれますが、特定のサーバーIPアドレスは除外されます)。 結論 私のログ収集システムは、Log Bullのような「重い」ソリューションを実装することを望まない、または(プロジェクトの限られたリソースのために)できない開発者に役立つことを願っています。 . GitHubについて