
eBPFを活用したLinux可観測性とAIによるインシデント検出。AGPL-3.0ライセンス。
どのプロセスがSLOを損なっているかを見つけ出します — CPUを使用しているプロセスだけでなく、ストールを引き起こしているプロセスも特定します。
top は80%のCPU使用率を示す。Prometheus は高レイテンシを示す。しかし、実際にペイメントサービスをストールさせているPodはどれか?
LinnixはeBPF + PSI (Pressure Stall Information) を使用してこれに答えます。PSIは実際のストール時間を測定します — 使用量ではなく、競合です。40%のCPUを使用し60%のPSIを持つPodは、100%のCPUを使用し5%のPSIを持つPodよりも悪いです。
Linnixが検出するもの:
top には表示されないCPU/IO/メモリプレッシャー[!IMPORTANT] デフォルトではモニターのみ。 Linnixは検出と報告を行います — 明示的な設定なしにアクションを取ることはありません。
重要な約束: すべての分析はローカルで行われます。Slack通知を明示的に設定しない限り、データがインフラストラクチャから流出することはありません。データプライバシーの詳細 →
LinnixをDaemonSetとしてデプロイし、クラスターを監視します。
# Apply the manifests
kubectl apply -f k8s/
APIへのアクセス:
kubectl port-forward daemonset/linnix-agent 3000:3000
# API available at http://localhost:3000
# Stream events: curl http://localhost:3000/stream
ローカルマシンで30秒で試せます。
git clone https://github.com/linnix-os/linnix.git && cd linnix
./quickstart.sh
fork, exec, exit、スケジューライベントを1%未満のオーバーヘッドで監視します。Linnixは本番環境での安全性を考慮して設計されています。
/proc ポーリングではなく、eBPF perfバッファを使用します。CAP_BPF と CAP_PERFMON で実行可能。Kubernetes DaemonSetは現在、簡便さのために特権モードを使用しています。詳細な安全モデルについてはSAFETY.mdを参照してください。
Linnixは最高級のKubernetesサポートを備えています:
pod_name, namespace, container_id がタグ付けされます# Example: Get processes causing stalls in the payments namespace
curl "http://localhost:3000/processes?namespace=payments&sort=psi_contribution"
Linnixには、ERC-20ステーブルコインを介してエージェント間の作業をオンチェーンで決済するトラストレスな決済レイヤー(Linnix-Claw)が含まれています。あるエージェントが別のエージェントにタスクを委任すると、結果(テレメトリプルーフ付きの署名済みレシート)が TaskSettlement スマートコントラクトに送信され、支払人が受取人に直接支払いを実行します。
Agent A (payer) Agent B (payee)
│ createTask(taskId, payeeDID, maxAmount)
│──────────────────────────────────▶│
│ │ ← does work, captures eBPF telemetry
│ submitReceipt(taskId, amount, receipt, sig)
│◀──────────────────────────────────│
│ │
└──── TaskSettlement.sol ─── ERC-20 transfer ──▶ payee
主要コントラクト (Base Sepoliaテストネット):
| コントラクト | アドレス |
|---|---|
| AgentRegistry | 0x9a6FeBA6d7B97ef91099051eB61F372d1EcD83a3 |
| TaskSettlement | 0x60eE6872920addF41359625B47A07401496bBD5b |
| StakeBond | 0xEE31fC610B9b64982990adB3ba228E9dBbfF6a73 |
linnix.toml に [chain] セクションを追加します:
[chain]
enabled = true
rpc_url = "https://sepolia.base.org"
chain_id = 84532
settlement_contract = "0x60eE6872920addF41359625B47A07401496bBD5b"
registry_contract = "0x9a6FeBA6d7B97ef91099051eB61F372d1EcD83a3"
token_address = "0x036CbD53842c5426634e7929541eC2318f3dCF7e" # USDC on Base Sepolia
token_decimals = 6
署名鍵は以下の優先順位で解決されます:
chain.private_keyLINNIX_CHAIN_PRIVATE_KEY# Deploy contracts to a local Hardhat node
cd linnix-claw-contracts && npx hardhat node &
npx hardhat run scripts/deploy.js --network localhost
# Run the commerce demo
./scripts/demo_commerce_e2e.sh --local
実装の詳細については、コントラクトソース と cognitod/src/onchain.rs を参照してください。
このプロジェクトは活発に開発中です。使用中または評価中の場合は、Issueを開くか、[email protected] までメールしてください。
cognitod): AGPL-3.0AGPLを使用できないチーム向けに商用ライセンスを提供しています。詳細は LICENSE_FAQ.md をご覧ください。
| インシデントタイプ | 検出ロジック | トリアージ値 |
|---|
| Circuit Breaker | 高いPSI (>40%) + 高いCPU (>90%) | ストールを引き起こしている特定のプロセスツリーを特定します。 |
| Fork Storm | 2秒間で毎秒10回以上のfork | ノードがクラッシュする前に暴走スクリプトをキャッチします。 |
| Memory Leak | 継続的なRSSの増加 | 最終的にOOMになるコンテナにフラグを立てます。 |
| Short-lived Jobs | 急速なexec/exitの繰り返し | 非効率なビルドスクリプトやクラッシュループを特定します。 |