コンテンツにスキップ

Parca Agent - 常時オンeBPF連続プロファイリング チートシート

Parca Agent - 常時オンeBPF連続プロファイリング チートシート

Parca AgentはeBPFベースの連続プロファイラです。問題が疑わしい場合にプロファイラーをアタッチするのではなく、ノード上のすべてのプロセスから、常にスタック トレースをサンプリングします—約1%のオーバーヘッドで、ゼロアプリケーション計測で。通常のワークフローを反転させます。インシデント下でプロファイラーの下で問題を再現する代わりに、インシデント ウィンドウで実際に実行されていたかを見ます。行番号まで属性を指定し、Parca サーバーまたはPrometheus互換のプロファイル ストアにプロファイルを出荷します。

要件

  • eBPF/BTF付きLinuxカーネル(5.4+、新しいが好ましい)
  • Root / 特権コンテナ
  • プロファイルを受信するParcaサーバー(または互換ストア)

インストール

MethodCommand
Binarydownload from GitHub Releases
Dockerdocker run --privileged ghcr.io/parca-dev/parca-agent:latest
KubernetesDaemonSet配置(マニフェスト提供)
Serverparcaを別途実行してプロファイルを保存/クエリ
Verifyparca-agent --version

実行

sudo parca-agent \
  --node=my-node-1 \
  --remote-store-address=parca.internal:7070 \
  --remote-store-insecure
FlagPurpose
--nodeプロファイルに付与されるノード ラベル
--remote-store-addressプロファイル出荷先
--http-addressローカルUI/メトリクス エンドポイント(:7071
--profiling-durationサンプリング ウィンドウ(デフォルト10秒)
--log-level詳細度

Kubernetes DaemonSet

AspectNote
Deploymentノードごとに1つのエージェント
Privilegesprivileged: true、hostPID
Discoveryポッド/コンテナ/名前空間で自動ラベル付け
Overhead典型的には約1% CPU
StorageプロファイルはParcaサーバーに移動し、ノードには移動しません

言語サポート

RuntimeStack unwinding
C/C++/Rust/Goネイティブ(DWARFまたはフレーム ポインタ)
JavaJITシンボル解決
Python / Rubyインタープリター対応アンワインディング
Node.jsランタイム アンワインディングでサポート
Any binary with symbolsシンボルがない場合は最良結果

混合言語スタックは1つのプロファイルで解決され、ポリグロット サービスに正確に必要です。

プロファイルのクエリ

Parca UI(およびAPI)を使用すると、メトリクスのようなプロファイルをスライスできます:

Query dimensionExample
Time rangeインシデント周辺の5分間
Labelsnamespace="prod", pod=~"api-.*"
Comparison2つの時間範囲を差分(デプロイ前/後)
Functionシンボルのフィルター
# 概念的:スパイク中の1つのサービスのCPUプロファイル
cpu_samples{namespace="prod", container="api"}  [14:05 → 14:10]

キラー機能:比較

UseHow
Regression huntリリース前後のプロファイル diff
Incident analysisインシデント ウィンドウとベースラインの diff
Optimization proofホット関数が縮小したことを表示

連続プロファイリングは「before」プロファイルが既に存在するため、これを可能にします—それを望むことを予測する必要はありませんでした。

Parca Agent対関連プロファイラー

AspectParca AgentperfPyroscopeasync-profiler
Model常時オン、フロート規模オンデマンド、実行単位常時オンオンデマンド、JVM
Instrumentationなし(eBPF)なしエージェント/SDKオプションJVMエージェント
Multi-languageYesYes (native)YesJVMのみ
Best for本番環境の連続プロファイリングディープなローカル分析連続プロファイリングJVM精度

Pyroscopeと同じカテゴリ;深い1回限りの分析が必要な場合はperfまたはasync-profilerを使用します。

リソース