Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
cpra — CPRAは、大規模なマイクロサービスアーキテクチャを管理するプラットフォームチーム向けに設計された高性能インフラストラクチャ監視システムです。Entity-Component-System(ECS)アーキテクチャと待ち行列理論の原理に基づき、CPRAは自動ワーカープールスケーリングによりSLO目標を達成しながら、100万以上の同時ヘルスチェックを処理します。 | Kitploit
ツール/GitHubGitHub/ziad-hsn/cpra
クラウドインフラストラクチャセキュリティ汎用ユーティリティコンテナセキュリティ構成監査ネットワークセキュリティDevSecOpsインシデントレスポンス異常検知ログ分析
GitHubziad-hsn/cpra

cpra

CPRAは、大規模なマイクロサービスアーキテクチャを管理するプラットフォームチーム向けに設計された高性能インフラストラクチャ監視システムです。Entity-Component-System(ECS)アーキテクチャと待ち行列理論の原理に基づき、CPRAは自動ワーカープールスケーリングによりSLO目標を達成しながら、100万以上の同時ヘルスチェックを処理します。

146ヶ月前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有
リポジトリを見るウェブサイト

CPRA - 並行パルス・修復・アラートシステム

Go Version License Documentation

数百万のサービスを並行監視し、自動修復と動的ワーカースケーリングを実現します。

CPRA は、大規模なマイクロサービスアーキテクチャを管理するプラットフォームチーム向けに設計された高性能インフラストラクチャ監視システムです。Entity-Component-System(ECS)アーキテクチャと待ち行列理論の原則に基づいて構築されており、SLO 目標を達成するための自動ワーカープールスケーリングにより、100 万以上の並行ヘルスチェックを処理します。


目次

  • なぜ CPRA なのか?
  • 主な機能
  • パフォーマンス特性
  • アーキテクチャ
  • クイックスタート
  • インストール
  • 設定
  • コマンドラインオプション
  • ドキュメント
  • トラブルシューティング
  • コントリビューション
  • ライセンス

なぜ CPRA なのか?

以下のニーズがある場合は CPRA を使用してください:

  • 100,000 以上の並行サービス、コンテナ、またはエンドポイントを監視する
  • 人手を介さずに障害を自動修復する
  • 負荷に基づいて監視インフラストラクチャを動的にスケーリングする
  • 検出からアラートまでの P95 レイテンシを 100ms 未満に抑える
  • メモリフットプリントを最小限に抑える(モニターあたり約 100 バイト)

主な機能

🚀 大規模スケーラビリティ

  • 一般的なハードウェア上で 100 万以上の並行モニター を処理
  • モニターあたりのオーバーヘッドを最小限に抑えたリニアなスケーリング
  • メモリ効率に優れた設計:モニターあたり約 100 バイト

⚡ 高パフォーマンス

  • パイプラインあたり 毎秒 10,000 回以上のヘルスチェック
  • スケジュールから結果処理までの P95 レイテンシが 100ms 未満
  • バッチ処理とロックフリーキューによりオーバーヘッドを最小化

🔄 自動修復

  • 3 つの独立したパイプライン:
    1. Pulse: ヘルスチェック(HTTP、TCP、ICMP、カスタムスクリプト)
    2. Intervention: 自動復旧(サービスの再起動、リソースのスケーリング、スクリプトの実行)
    3. Code: アラートと通知(メール、SMS、Webhook、PagerDuty)

🧠 インテリジェントスケーリング

  • M/M/c 待ち行列理論: 最適なワーカー数を自動計算
  • Allen-Cunneen 近似: 実世界のワークロード変動に対応
  • SLO 駆動のサイジング: レイテンシ目標を満たすように動的にスケーリング

🏗️ データ指向アーキテクチャ

  • mlange-42/ark を使用した Entity-Component-System(ECS)
  • 最大限のパフォーマンスを実現するキャッシュフレンドリーなメモリレイアウト
  • 最小限のメモリ割り当てと GC プレッシャー

🔧 本番環境対応

  • デバッグ用の組み込み pprof プロファイリング
  • コンテキストキャンセルによるグレースフルシャットダウン
  • デバッグモード対応の包括的なロギング
  • 自動 GC トリガーによるメモリ管理

パフォーマンス特性

詳細なベンチマークと分析については、アーキテクチャ概要 を参照してください。


アーキテクチャ

CPRA は、Entity-Component-System の原則に基づいて構築された 3 パイプラインアーキテクチャを採用しています:

ECS アーキテクチャ

3 つの独立した処理パイプライン

パイプラインの流れ

  1. Pulse Pipeline: ヘルスチェック(HTTP リクエスト、TCP 接続、カスタムスクリプト)を実行します
  2. Intervention Pipeline: モニターが失敗したときに自動修復を実行します
  3. Code Pipeline: インシデント管理システムにアラート通知を送信します

各パイプラインは、独自のキューと動的にスケーリングされるワーカープールを持ち、独立して動作します。これにより以下が可能になります:

  • パイプライン単位のチューニング: 各パイプラインを個別に設定できます
  • 障害の分離: 1 つのパイプラインの障害が他に影響しません
  • 独立したスケーリング: パイプラインごとの負荷に基づいてワーカーをスケーリングできます

キューとワーカープールのアーキテクチャ

キューとワーカープール

キューの実装:

  • HybridQueue: リングバッファ + オーバーフロースライスによる信頼性の高い FIFO 処理
  • AdaptiveQueue: 変動する負荷に対応する自動スケーリングリングバッファ
  • WorkivaQueue: 超低レイテンシを実現するロックフリーリングバッファ

動的ワーカープール:

  • panjf2000/ants goroutine プールを採用
  • M/M/c 待ち行列理論による自動スケーリング
  • 設定可能な最小/最大ワーカー数と SLO 目標

包括的なアーキテクチャの説明については、アーキテクチャ概要 を参照してください。


クイックスタート

オプション 1: ローカルでのビルドと実行

root@kitploit:~
# Prerequisites: Go 1.25 or later
go version  # Should show go1.25 or higher

# Build from source
git clone https://github.com/ziad/cpra.git
cd cpra
go build .

# Run with example configuration
./cpra --yaml mock-servers/test_10k.yaml

期待される出力:

root@kitploit:~
Starting CPRA Optimized Controller for 1M Monitors
Profiling server listening at http://localhost:6060/debug/pprof/
Loading monitors from mock-servers/test_10k.yaml...
Monitor loading completed in 1.2s
[INFO] Controller started successfully
[INFO] Pulse pipeline processing 10,000 monitors
[INFO] Worker pool scaled to 143 workers (target SLO: 100ms)

インストール

前提条件

  • Go 1.25 以降(ダウンロード)
  • Docker(オプション、コンテナでのデプロイ用)

ソースからのビルド

  1. リポジトリをクローン:

    root@kitploit:~
    git clone https://github.com/ziad/cpra.git
    cd cpra
    
  2. 依存関係をダウンロード:

    root@kitploit:~
    go mod download
    
  3. アプリケーションをビルド:

    root@kitploit:~
    go build .
    
  4. インストールを確認:

    root@kitploit:~
    ./cpra --help
    

Docker でのデプロイ

  1. Docker イメージをビルド:

    root@kitploit:~
    docker build -f docker/Dockerfile -t cpra:latest .
    
  2. コンテナを実行:

    root@kitploit:~
    docker run -it --rm \
      -v $(pwd)/my-monitors.yaml:/app/monitors.yaml \
      cpra:latest \
      ./cpra --yaml monitors.yaml
    

設定

モニター設定(YAML)

ヘルスチェックを定義する monitors.yaml ファイルを作成します:

root@kitploit:~
monitors:
  - name: "my-service-health-check"
    pulse_check:
      type: http
      interval: 30s
      timeout: 5s
      max_failures: 3
      config:
        method: GET
        url: http://my-service.example.com/health
        retries: 2
    intervention:
      action: docker
      config:
        container: my-service-container
        action: restart
    codes:
      red:
        dispatch: true
        notify: pagerduty
        config:
          url: https://events.pagerduty.com/v2/enqueue
      yellow:
        dispatch: true
        notify: log
        config:
          file: /var/log/cpra-alerts.log

テスト設定の生成:

mock-servers/generate_monitors.py を使用すると、任意の数のモニターを含むテスト設定を生成できます。

アプリケーション設定

CPRA の動作をプログラムで設定します:

root@kitploit:~
package main

import (
    "cpra/internal/controller"
)

func main() {
    config := controller.DefaultConfig()

    // Debug mode
    config.Debug = true

    // Worker pool settings (applies to all three pipelines)
    config.WorkerConfig.MinWorkers = 10
    config.WorkerConfig.MaxWorkers = 500

    // Queue settings
    config.QueueCapacity = 131072  // Must be power of 2

    // Performance tuning
    config.BatchSize = 2000
    config.SizingServiceTime = 20 * time.Millisecond  // Average job duration
    config.SizingSLO = 100 * time.Millisecond         // Target latency
    config.SizingHeadroomPct = 0.15                   // 15% safety buffer

    ctrl := controller.NewController(config)
    // ... rest of initialization
}

完全な設定オプションについては、API リファレンス を参照してください。


コマンドラインオプション

root@kitploit:~
./cpra [OPTIONS]

例:

root@kitploit:~
# Run with debug logging
./cpra --yaml monitors.yaml --debug

# Run with custom pprof port
./cpra --yaml monitors.yaml --pprof.addr localhost:8080

# Disable profiling
./cpra --yaml monitors.yaml --pprof=false

ドキュメント

総合ガイド

  • アーキテクチャ概要 - システム設計、図、パフォーマンス分析
  • API リファレンス - 関数シグネチャ付きの完全な API ドキュメント
  • 型リファレンス - データ構造とコンポーネント定義
  • クイックスタートチュートリアル - 5〜10 分で始める
  • 一般的なタスク - 典型的な操作のハウツーガイド

追加リソース

  • はじめに - 詳細なセットアップとデプロイガイド

トラブルシューティング

よくある問題

問題: YAML ファイルが見つからない

root@kitploit:~
Warning: YAML file monitors.yaml not found, starting without loading monitors

解決策: ファイルパスが正しいことを確認してください。絶対パス、またはバイナリを実行する場所からの相対パスを使用します:

root@kitploit:~
./cpra --yaml $(pwd)/monitors.yaml

問題: Go バージョンエラーでビルドが失敗する

root@kitploit:~
go.mod requires go >= 1.25

解決策: Go をバージョン 1.25 以降にアップグレードします:

root@kitploit:~
go version  # Check current version
# Download Go 1.25+ from https://go.dev/dl/

問題: メモリ使用量が多い 解決策: pprof を使用してメモリ使用量を確認します:

root@kitploit:~
# While CPRA is running, access pprof
go tool pprof http://localhost:6060/debug/pprof/heap

# View top memory consumers
(pprof) top

設定でメモリの上限を調整します:

root@kitploit:~
config.WorkerConfig.MaxWorkers = 200  // Reduce max workers
config.QueueCapacity = 65536          // Reduce queue size

問題: ワーカープールがスケーリングされない 解決策: デバッグログを有効にしてスケーリングの判断を確認します:

root@kitploit:~
./cpra --yaml monitors.yaml --debug

待ち行列理論のパラメータを確認します:

root@kitploit:~
config.SizingServiceTime = 50 * time.Millisecond  // Increase if jobs take longer
config.SizingSLO = 200 * time.Millisecond         // Relax SLO if needed

問題: モニターが実行されない 解決策: モニター設定の形式を確認し、ログを確認します:

root@kitploit:~
./cpra --yaml monitors.yaml --debug 2>&1 | grep ERROR

YAML 構文を検証します:

root@kitploit:~
# Use a YAML validator
python -m yaml monitors.yaml

ヘルプを得るには

  • ドキュメント: 詳細なガイドについては docs/ フォルダを確認してください
  • イシュー: バグや機能リクエストは イシューを開く で報告してください
  • ディスカッション: GitHub Discussions で質問したりアイデアを共有したりできます
  • ログ: 問題を報告する際は必ずログを提供してください(--debug フラグを使用)

コントリビューション

コミュニティからのコントリビューションを歓迎します!CPRA はオープンソースプロジェクトであり、以下を歓迎します:

  • 🐛 バグ報告と修正
  • ✨ 機能リクエストと実装
  • 📖 ドキュメントの改善
  • 🧪 テストカバレッジの強化
  • 💡 パフォーマンスの最適化

はじめに:

  1. good first issue というラベルの付いたイシューを探します
  2. リポジトリをフォークしてプルリクエストを送信します

開発リソース:

  • アーキテクチャ概要 - システム設計を理解する
  • API リファレンス - 関数シグネチャと使用方法

ライセンス

このプロジェクトは MIT ライセンス の下で提供されています。詳細は LICENSE ファイルを参照してください。


謝辞

CPRA は以下の優れたオープンソースライブラリをベースに構築されています:

  • mlange-42/ark - 高性能 Entity-Component-System
  • panjf2000/ants - 動的スケーリングに対応した goroutine プール
  • Workiva/go-datastructures - ロックフリーのデータ構造
  • uber-go/zap - 構造化ロギング

ドキュメント • アーキテクチャ • イシュー

大規模インフラストラクチャを管理するプラットフォームチームのために ❤️ を込めて作られています

ツールをダウンロード
メトリクス値
最大並行モニター数100 万以上
スループットパイプラインあたり毎秒 10,000 回以上のチェック
レイテンシ(P95)100ms 未満(SLO で設定可能)
モニターあたりのメモリ約 100 バイト
総メモリ(100 万モニター時)約 100 MB + ワーカープールのオーバーヘッド
ワーカースケーリング動的(M/M/c ベース)
オプション型デフォルト説明
--yamlstringinternal/loader/replicated_test.yamlモニター YAML ファイルへのパス
--configstring-設定ファイルのパス(オプション)
--debugboolfalseデバッグレベルのログを有効化
--pprofbooltruepprof プロファイリングサーバーを有効化
--pprof.addrstringlocalhost:6060pprof サーバーのリッスンアドレス