Skip to content

peeeechi/syslog-filter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Syslog Filter App - Unified & Enhanced

概要

このプロジェクトは、既存の peeeechi/syslog-filter アプリケーションをベースに、より統一された設計と強化された機能を提供するために再構築されました。Syslogファイルを効率的にフィルタリング・抽出・分析できる、モジュール化されたWebアプリケーションです。

このプロジェクトの主な変更点:

  • 元の app.py ファイルは削除され、新しい src/app.py がアプリケーションのエントリーポイントになりました。
  • 全ての機能がモジュール化され、src/ ディレクトリに集約されています。
  • 時系列図作成機能は、現時点では含まれていません。

主な機能

1. データ読み込みの一元化 (半自動化されたワークフロー)

  • 柔軟なファイルアップロード: .log, .txt, .zip ファイルのアップロードに対応。
  • 自動アーカイブ展開: アップロードされた .zip ファイルと、その中に含まれる .zst 圧縮ログファイルを自動で展開します。
  • スマートなログファイル選択: 展開されたアーカイブ内に .log ファイルが1つのみの場合は自動で読み込み、複数ある場合は選択リストを表示。
  • 自動ページナビゲーション: ログデータの読み込み完了後、自動で「日時指定・抽出」ページへ遷移します。

2. 日時指定・抽出 (ステップ2の主要機能)

  • 日付範囲の指定: 開始日と終了日をそれぞれ指定し、複数日にまたがるログを抽出できます。
  • 時刻範囲のより詳細な指定: 「時」と「分」を個別に設定でき、分は1分単位で指定可能です。
  • 設定の保持: 一度指定した日時設定は、ページ移動後も自動的に保持され、再度ページにアクセスした際に自動的に復元されます。
  • 絞り込み結果の視覚的な確認: 絞り込み後のログが多数ある場合、最初と最後の3行ずつを表示し、中略があることを明示します。
  • 抽出結果のダウンロード: 抽出されたログを CSV または LOG 形式でダウンロードできます。
  • フィルタスキップの柔軟性: 日時指定を実行しなくても、そのまま次の「ログ分析」ステップ(キーワードフィルタリング)に進めます。この場合、分析ページは全ログデータを対象とします。

3. キーワードフィルタリング (ステップ3のログ分析機能)

  • オリジナルの高度なフィルタリング機能を完全に再現。
  • キーワード検索の対象拡張: ログメッセージだけでなく、タイムスタンプ (Timestamp)、Hostname、AppName、PID も検索キーワードの対象となります。
  • 表示・出力列のカスタマイズ: 結果テーブルに表示する列や、ダウンロードするCSV/LOGファイルに含める列を、チェックボックスで個別にON/OFF選択できます。
  • 日時による抽出: このページでは、「日時指定・抽出」ページで絞り込まれたデータを対象とします。設定された日時範囲がページ上で表示されます。
  • 表示行数のカスタマイズ: 結果表示の最大行数をスライダーで調整できます。
  • 結果のダウンロードの堅牢性: CSVダウンロード時のエスケープエラーを修正し、より確実にダウンロードできるようになりました。LOG形式のダウンロードも選択された列を反映します。

4. アプリケーションの基盤と利便性

  • 統一された設計: src/ ディレクトリにコードを集約し、モジュール化された構造で管理。
  • 単一コマンドでの起動: プロジェクトのルートディレクトリから streamlit run src/app.py で実行。
  • 堅牢なインポート: src/app.py がプロジェクトルートをPythonパスに自動で追加するため、安定したモジュールインポートが可能。
  • グローバルUI: どのページにいても、サイドバーのボタンで「このアプリケーションについて」を表示したり、画面右上の「日時指定ページへ」ボタン(日時指定ページとデータ読み込みページ以外で表示)で直接日時指定ページへ移動したり、「トップページへ戻る」ボタンでデータ読み込みページに戻ったりできます。
  • グローバル一時ファイルクリーンアップ: temp_syslog_upload ディレクトリと関連データを、サイドバーのボタンから完全に削除できます。

セットアップと実行方法

前提条件

  • Git
  • Python 3.8+
  • pip (Pythonパッケージインストーラ)

インストール

  1. リポジトリをクローンする (またはあなたのフォークをクローン):

    git clone [https://github.com/peeeechi/syslog-filter.git](https://github.com/peeeechi/syslog-filter.git)
    cd syslog-filter

    (もしフォークしている場合は、peeeechi をあなたのGitHubユーザー名に置き換えてください。)

  2. 依存関係をインストールする:

    pip install -r requirements.txt

アプリケーションの実行

syslog-filter ディレクトリにいる状態で、以下のコマンドを実行します。

streamlit run src/app.py

ファイル構造

syslog-filter/
├── .gitignore                  # Git管理から除外するファイル/ディレクトリ
├── requirements.txt            # Pythonの依存関係リスト
└── src/                        # 主要なアプリケーションコードを格納するディレクトリ
    ├── __init__.py             # src ディレクトリをPythonパッケージとして認識させるためのファイル
    ├── app.py                  # アプリケーションの新しいエントリーポイント (旧 main_app.py)
    ├── app_pages/              # 各機能を独立したモジュールとして管理するディレクトリ
    │   ├── __init__.py
    │   ├── upload_data_page.py   # ステップ1: 全てのファイルアップロードとデータ処理を担当
    │   ├── datetime_spec_page.py # ステップ2: 日時によるログの絞り込みと抽出を担当
    │   ├── existing_filter_page.py # ステップ3: キーワードフィルタリング機能のページ
    │   └── about_page.py         # アプリケーション情報ページ
    └── utils/                  # 再利用可能なヘルパー関数群
        ├── __init__.py
        ├── file_handlers.py    # ZIP/ZST展開やファイル処理ロジック
        └── log_parser_utils.py # Syslogのパースユーティリティ

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages