Skip to main content

Local-first Linux host resource diagnosis (procdiag): record CPU/memory/disk over time, then explain what to fix.

Project description

host-check-tool

This package ships procdiag — a local-first Linux host-resource diagnosis tool. **「なぜこの PC が重い・落ちる・ディスクが満杯か」**に答える。

CPU・メモリ・ディスクの使用状況を一定期間低負荷で記録し、決定論的な検出ルールに 基づいて運用レベルの改善提案を日本語レポートとして出力する。リアルタイム監視 ダッシュボードではなく**「記録 → 診断 → 提案」の事後診断ワークフロー**であり、 工場のエッジ PC・ラインサーバーなど IT 人材が常駐しない環境を主用途とする。

  • オフライン・閉域網ファースト — 外部通信ゼロ。レポートは CDN 参照なしの単一 HTML
  • 3 コマンドで動くpip installprocdiag initprocdiag record
  • 決定論的な診断 — 13 の検出ルール × テンプレートで提案を生成 (LLM 非依存)。 出力は機械可読 (JSON) で、外部での活用は利用者に委ねる
  • 観測者効果の最小化と透明性 — 自身のオーバーヘッドを計測・報告し、 予算超過時は自動減速する

Python Version License

Quick Start

# インストール
pip install host-check-tool

# 設定と data/ ディレクトリを生成
procdiag init

# 記録を開始 (Ctrl-C で安全に停止)
procdiag record

# 別のターミナルから — または記録停止後に実行
procdiag check

# HTML + JSON レポートを生成
procdiag report --out report.html --json report.json

コマンドリファレンス

コマンド 内容
procdiag init [DIR] config.pydata/ を生成
procdiag record 常駐ループで CPU/メモリ/ディスクを記録
procdiag check 記録済みデータに診断ルールを実行し改善提案を出力
procdiag report HTML + JSON レポートを一括生成
procdiag status 記録期間・サンプル数・自己負荷を表示
procdiag doctor 記録開始前にホストの観測能力 (PSI/cgroup/権限/センサ等) を診断
procdiag explain [RULE|sampler] ルールまたはサンプラーの詳細を表示
procdiag list-rules 登録済みルールを一覧表示
procdiag list-samplers 登録済みサンプラーを Tier 別に一覧表示
procdiag export 記録データを CSV または JSON でエクスポート
procdiag prune 保持ポリシーの手動実行
procdiag service print systemd ユニットファイルを表示
procdiag service install user systemd ユニットを配置

主要オプション:

procdiag record --duration 24h --config config.py --db data/procdiag.db
procdiag check  --format json --output findings.json
procdiag check  --only MEM-LEAK-01,DISK-FULL-01

終了コード

procdiag check (alias: procdiag advise) はスクリプト・CI に組み込めるよう 終了コードで結果を返す:

コード 意味
0 Finding なし (正常)
1 critical / warning の Finding あり
2 info レベルの Finding のみ

systemd 運用

# ユーザー systemd として配置
procdiag service install --config /etc/procdiag/config.py

# 有効化
systemctl --user daemon-reload
systemctl --user enable --now procdiag.service

# ログアウト後も継続する場合
sudo loginctl enable-linger $USER

system ユニット (root) として配置する場合:

procdiag service print --system | sudo tee /etc/systemd/system/procdiag.service

設定

procdiag init で生成される config.py を編集する。 Pydantic モデルで検証されるため、タイポや型ミスは起動時にエラーになる。

config = ProcdiagConfig(
    db_path="./data/procdiag.db",
    sampling=SamplingConfig(
        system_interval=1.0,    # Tier1: PSI + CPU/Mem/IO (秒)
        cgroup_interval=5.0,    # Tier2a: cgroup v2 統計
        process_interval=10.0,  # Tier2b: プロセス走査
        disk_interval=60.0,     # Tier3: ディスク使用量
        watch_dirs=[
            WatchDir(path="/var/log", time_budget_sec=10),
        ],
    ),
    retention=RetentionConfig(raw="48h", rollup="90d"),
)

依存関係

  • Python 3.10+
  • psutil — OS メトリクス取得
  • pydantic — 設定バリデーション
  • jinja2 — HTML レポートテンプレート
  • click — CLI フレームワーク
  • 標準ライブラリのみ (sqlite3, signal, threading, …)

numpy・pandas・rich は不要。外部ネットワーク通信ゼロ。

詳細ドキュメント

設計・アーキテクチャ・ルールカタログは docs/procdiag.md を参照。

ライセンス

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

host_check_tool-0.3.0.tar.gz (110.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

host_check_tool-0.3.0-py3-none-any.whl (137.3 kB view details)

Uploaded Python 3

File details

Details for the file host_check_tool-0.3.0.tar.gz.

File metadata

  • Download URL: host_check_tool-0.3.0.tar.gz
  • Upload date:
  • Size: 110.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.3.1 CPython/3.11.10 Linux/6.8.0-124-generic

File hashes

Hashes for host_check_tool-0.3.0.tar.gz
Algorithm Hash digest
SHA256 686187417fc3cedc4ecc48c613b0c093d5a1babc7f066347daea4fa187eb4262
MD5 30fc9a07a49f232b308f5bf79a012d0a
BLAKE2b-256 717ce07222cbb6159e7d236b188adb9ffc5ab91d32d66441c25beb33c64399b8

See more details on using hashes here.

File details

Details for the file host_check_tool-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: host_check_tool-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 137.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.3.1 CPython/3.11.10 Linux/6.8.0-124-generic

File hashes

Hashes for host_check_tool-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ef4d9a0b325fbea3d1acbebfaa663dde9ab8f501d2992d408c9e148e81113d5d
MD5 49365d48f10d04c22c1f05885c7a8d1a
BLAKE2b-256 9d5ffcfbeb5495926e0fbef2ebcc99c27c3406e7c761cca625289dc8d967e7df

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page