このプロジェクトについて

Grafana Pyroscopeは、アプリケーションのパフォーマンスデータの収集と分析を行うオープンソースの継続的プロファイリングプラットフォームです。その目的はリソース消費を可視化することにあり、システム全体から特定のサービス、関数、さらにはコードの1行に至るまで、CPU、メモリ、I/Oの動作を詳細に調査できます。 READMEに記載されている典型的なユースケースには、プロアクティブなアプローチとリアクティブなアプローチの両方があります。プロアクティブには、リソース消費の削減、アプリケーションパフォーマンスの向上、またはレイテンシ問題が表面化する前の防止が可能です。リアクティブには、アクティブなCPU、メモリ、I/Oのボトルネックをデバッグするための行レベルの詳細情報を用いて、インシデントを迅速に解決することを目指しています。 アーキテクチャ プロジェクトは主に以下の3つの部分で構成されています: - Pyroscope Server:プロファイリングデータを保存・処理し、クエリを提供します。 - クライアントおよびインストルメンテーション:Pyroscope言語SDK(プッシュ)、Grafana Alloy(プルまたはプッシュ)、またはOpenTelemetry eBPFプロファイラーなどのOpenTelemetry互換ソースからのOTLP経由でサーバーにプロファイルが送信されます。 - Grafana Profiles Drilldown:プロファイリングデータの可視化と分析のためのクエリレスインターフェースです(旧称 Explore Profiles)。 Pyroscope 2.0では、新しいv2アーキテクチャがデフォルトとなりました。プロファイルはオブジェクトストレージに直接書き込まれるため、インメモリインジェスターやローカルディスクが不要になり、これにより運用が簡素化され、大規模環境でのリソース使用量が削減されるとしています。コンパクションワーカーがバックグラウンドで小さなセグメントを大きなブロックにマージし、クエリはオブジェクトストレージ全体に分散してGrafana Profiles Drilldownでフレームグラフを構築します。既存のv1デプロイメントはフラグを介してオプトインし移行することができ、READMEにはリリースノート、アーキテクチャ概要、移行ガイドへのリンクが記載されています。 インストルメンテーションと言語サポート Go、Java、Python、Ruby、Node.js、.NET、RustのSDKドキュメントと例が提供されています。SDKベースのプッシュ以外に、READMEではプルまたはプッシュ収集のためのGrafana Alloy、Grafana AlloyによるeBPFベースのオートインストルメンテーション、およびOpenTelemetry互換プロファイラーからのOTLP取り込みについて言及しています。プロジェクトでは、サポートされている言語と、それぞれに適用されるプロファイリングタイプのリストを文書化しています。 クイックスタート サーバーは以下のいくつかの方法でローカルに実行できます: - Docker: docker run -it -p 4040:4040 grafana/pyroscope - macOS/LinuxのHomebrew: brew install pyroscope-io/brew/pyroscope を実行し、brew services start pyroscope で起動 - バイナリ: 最新リリースからOSとアーキテクチャに合ったアーカイブをダウンロードし、解凍して ./pyroscope を実行 サーバーはポート4040で待機します。また、READMEにはKubernetes/Helmデプロイメント、Linuxパッケージ、ソースからのビルド、および完全なサーバー設定に関するドキュメントへの参照が含まれています。Grafana Playでホストされたライブデモが利用可能であり、Profiles DrilldownはGrafana Cloud/OSSにプリインストールされており、プロファイルを探索するためのデフォルトの方法として説明されています。 コミュニティとライセンス 本プロジェクトはAGPLv3ライセンスの下で提供されており、CIおよびGo Report Cardバッジを保持し、リリースとDockerイメージを公開し、Goパッケージのリファレンスを提供しています。リポジトリにはコントリビューターガイドが含まれており、READMEでは、Brendan Gregg氏のFlame Graphs、rbspy、py-spy、phpspyサンプリングプロファイラー、flamebearer、speedscope、およびLinuxカーネルでのBPFベースのプロファイリングを可能にした貢献など、プラットフォームの基盤となった成果に謝意を表しています。要望される統合に関するフィードバックは、GitHubのIssueやGrafanaのSlackを通じて募集されています。