web-dev-qa-db-ja.com

PostgreSQLサーバーのCPU使用率を取得する方法

PostgreSQL監視ツール について読んでいます。データベースのサイズなど、多くの情報を取得しましたが、CPUとメモリの使用状況に関する情報が見つかりません。
これらの情報はPostgreSQLサーバーによって提供されますか、それともネイティブクライアントアプリケーションで取得する必要がありますか(たとえば、PostgreSQLのPIDを見つけてOS API関数を呼び出す)。

2
Dibo

これは実際にはPostgreSQL監視ツールではなく、診断、監視、データベース統計のためのPostgreSQLの内部機能です。

Hostの監視には、Icinga(最新のNagios)やZabbixなどのツールが必要です。 PostgreSQLを監視する場合、_check_postgres_ツールが重要になる可能性があります。

独自のカスタムプログラムから特定のPostgreSQLバックエンドプロセスのCPU使用率を取得することに関心がある場合は、SELECT pg_backend_pid()または_pg_stat_activity_から対象のタスクのPIDを取得して、OS-を使用する必要があります必要な情報を収集するためのレベルのツールとAPI。

必要に応じて、PostgreSQL C拡張関数を記述して情報を収集し、それをPostgreSQLプロトコルを介して行または行セットとして返すことができるため、SELECT my_system_stats()を実行できます。見る:

基本的に、PostgreSQL APIを使用してCでライブラリを作成し、pgxs makeヘルパーを使用してそれをコンパイルし、サーバーに結果の共有オブジェクトを動的にロードさせます。次に、_CREATE FUNCTION_を使用して、SQLから呼び出し可能なC関数を伝えます。その後、他の関数と同じように呼び出すことができます。 C拡張機能は、OSレベルのAPIを呼び出したり、好きなことを実行したりできますが、一般に、スレッドの作成、PostgreSQLファイル/ファイルハンドルへの直接書き込み、PostgreSQLソケットの読み取り/書き込みを行うことは非常に賢明ではありません。

4
Craig Ringer