Heroku Postgres のメトリクスのログ
この記事の英語版に更新があります。ご覧の翻訳には含まれていない変更点があるかもしれません。
最終更新日 2025年03月11日(火)
Table of Contents
Heroku Postgres Standard および Premium 層のデータベースのユーザーには、そのアプリのログストリームにデータベース関連のイベントが表示されます。これらのイベントは、時間の経過に伴う使用状況の記録や分析に役立ちます。
Postgres ログの表示は、Heroku CLI、ダッシュボード、ログ記録アドオン、またはログドレインで行うことができます。これらのメトリクスを監視するために、プラットフォーム監視アドオンをインストールすることもできます。
Heroku Postgres のサービスログとメトリクスログは、Fir 世代のアプリでは利用できません。機能が Fir に追加されたときに通知を受け取るには、Changelog の受信登録を行ってください。
heroku-postgres
で表示される Heroku Postgres のメトリクスは、postgres
ですべてのアプリケーションに対して表示される Postgres 自体から送出される標準のアラートとは別のものです。
たとえば、postgres
ログを取得するには、コマンド heroku logs -p postgres -a app-name
を実行します。heroku-postgres
ログを取得するには、コマンド heroku logs -p heroku-postgres -a app-name
を実行します。
ログ形式
特定のアプリの Heroku Postgres のメトリクスのログを表示するには、プロセスタイプ -p heroku-postgres
フラグとアプリ名を使用します。
$ heroku logs -p heroku-postgres -a example-app
たとえば、Heroku Postgres のメトリクスのログは次のようになります。
2024-03-15T12:10:39.000000+00:00 app[heroku-postgres]: source=HEROKU_POSTGRESQL_SILVER addon=postgresql-devcenter-123456 sample#current_transaction=54017686 sample#db_size=16012956319bytes sample#tables=97 sample#active-connections=7 sample#waiting-connections=0 sample#index-cache-hit-rate=0.9239 sample#table-cache-hit-rate=0.93609 sample#load-avg-1m=0 sample#load-avg-5m=0 sample#load-avg-15m=0 sample#read-iops=0 sample#write-iops=0.13333 sample#tmp-disk-used=33849344 sample#tmp-disk-available=72944943104 sample#memory-total=4044960kB sample#memory-free=46920kB sample#memory-cached=3667532kB sample#memory-postgres=20824kB sample#wal-percentage-used=0.06512959334021144
すべての Standard および Premium 層のデータベースのアプリケーションログには、次の属性が表示されます。
source
: 測定に関連するデータベースのアタッチメント名 (HEROKU_POSTGRESQL_VIOLET
など)。- addon: 測定に関連するデータベースのアドオン名 (
postgres-metric-68904
など)。 - ログ行のタイムスタンプは、測定が取得された時刻です。
データベースメトリクス
次の属性は、特定のデータベースに適用されます。
sample#db_size
: データベースに含まれているバイト数。このメトリクスには、ディスク上のすべてのテーブルおよびインデックスデータが含まれます (データベースの肥大化を含む)。sample#db-max-size
: データベースで使用可能な最大バイト数。sample#db-size-percentage-used
: データベースで使用中のストレージの割合 (0.0~1.0)。sample#tables
: データベース内のテーブルの数。sample#active-connections
: データベース上で確立された接続の数。sample#waiting-connections
: ロックの取得を待機している接続の数。多数の接続が待機している場合、このメトリクスは不適切に処理されているデータベース並列性の兆候である可能性があります。sample#max-connections
: データベースで使用可能な接続の最大数。sample#connections-percentage-used
: データベースで使用中の合計接続の割合 (0.0~1.0)。sample#current_transaction
: 現在のトランザクション ID。時間の経過に伴う書き込みを追跡するために使用します。sample#index-cache-hit-rate
: 共有バッファキャッシュから処理されたインデックス検索の比率 (小数点以下 5 桁に四捨五入)。Heroku では、可能であれば 0.99 以上の値をお勧めします。インデックスヒット率が常に 0.99 未満である場合は、高コストのクエリを調査するか、データベースプランの大容量 RAM へのアップグレードを行います。sample#table-cache-hit-rate
: 共有バッファキャッシュから処理されたテーブル検索の比率 (小数点以下 5 桁に四捨五入)。Heroku では、可能であれば 0.99 以上の値をお勧めします。テーブルヒット率が常に 0.99 未満である場合は、データベースプランの大容量 RAM へのアップグレードを行います。sample#follower-lag-commits
: 複製ラグ。このフォロワーがそのリーダーに対して遅れているコミットの数として測定されます。複製は非同期であるため、この数が 0 を超えていても問題ではありませんが、値が増えている場合は調査する必要があります。詳細は、「フォロワーを監視する」を参照してください。このメトリクスはフォロワーデータベースに対してのみ提供されています。sample#primary-available
およびsample#standby-available
: 高可用性データベースの場合、1
の値はデータベースの可用性を表し、0
はデータベースの停止を表します。sample#service-available
: 高可用性データベースの場合1
の値はデータベースの可用性を表し、0
はデータベースの停止を表します。sample#rollback-from
: ロールバックをサポートするデータベースの場合、ログには利用可能な最も古いロールバックポイントのタイムスタンプ、または最初のバックアップが進行中の場合は capturing-snapshot と表示されます。
サーバーメトリクス
これらのメトリクスはサーバーオペレーティングシステムから直接得られます。
sample#load-avg-1m
、sample#load-avg-5m
、およびsample#load-avg-15m
: 1 分、5 分、および 15 分の期間での平均システム負荷を、使用可能な CPU の数で割ったもの。1.0 の負荷平均は、プロセスが平均で 100% のタイムスパンに CPU リソースを要求していたことを示します。この数値には I/O の待機が含まれます。バースト可能なパフォーマンスを備えたデータベースの場合は、ベースラインの負荷平均が保証されます。詳細は、技術的特性に関する記事のバースト可能なパフォーマンスのセクションを参照してください。sample#read-iops
およびsample#write-iops
: 16 KB ブロックの I/O サイズでの読み取りまたは書き込み操作の数。sample#max-iops
: データベースで使用可能な IOPS の最大数。sample#iops-percentage-used
: データベースで使用中の IOPS の割合 (0.0~1.0)。sample#memory-total
: 使用可能なサーバーメモリの合計量。sample#memory-free
: 使用可能な空きメモリの量 (KB 単位)。sample#memory-cached
: OS がページキャッシュに使用しているメモリの量 (KB 単位)。sample#memory-postgres
: Postgres が使用しているメモリの量 (KB 単位)。sample#memory-percentage-used
: データベースで使用中のサーバーメモリの割合 (0.0~1.0)。sample#tmp-disk-used
、sample#tmp-disk-available
: tmp マウントで使用中/使用可能なバイト数。sample#wal-percentage-used
: WAL ディスクの使用率 (0.0~1.0)。詳細は、「Postgres のログ先行書き込みの使用法」を参照してください。
オペレーティングシステムは、ページキャッシュに使用するメモリ量を最大化するように設計されていますが、アプリケーションが要求した場合はそのメモリを解放することがあります。サーバーで使用できるメモリの合計量を見積もるには、sample#memory-free
と sample#memory-cached
を一緒に追加してください。
PgBouncer メトリクス
これらのメトリクスは、PgBouncer プーラーアタッチメントがあるすべての Heroku Postgres サーバーに含まれています。これらのメトリクスは、PgBouncer の特殊内部データベースに接続したときに SHOW POOLS;
コマンドを実行することによって表示可能なメトリクスのサブセットです。
sample#client_active
: アクティブなサーバー接続の割り当てがあるプーラーへのクライアント接続の数。sample#client_waiting
: サーバー接続の割り当てを待機しているプーラーへのクライアント接続の数。sample#server_active
: クライアント接続に現在割り当てられているサーバー接続の数。sample#server_idle
: クライアント接続に現在割り当てられていないサーバー接続の数。sample#max_wait
: サーバー接続の割り当てを現在待機しているすべてのクライアントで最も長い待機時間。sample#avg_query
: プールされている接続経由で実行されるすべてのクエリの平均クエリ時間。sample#avg_recv
: クライアントから受け取る秒あたりのバイト数。sample#avg_sent
: クライアントに送信する秒あたりのバイト数。
レプリケーションスロットメトリクス
これらのメトリクスは、pg-replication-slot-logs
を on
に設定している場合にログに表示されます。
spill_bytes
: メモリ不足などの理由で、ディスクまたは別のストレージメディアに書き出されたバイト数。spill_count
: データがディスクまたは別のストレージメディアに書き出された回数。spill_txns
: データの書き出しが発生したトランザクション数。stream_bytes
: データストリームまたはネットワークストリームでストリーミングされたバイト数。stream_count
: ストリーム操作またはイベントの発生回数。stream_txns
: ストリーミングに関連するトランザクション数。total_bytes
: システムによって処理または取り扱われた合計バイト数。total_txns
: システムによって処理されたトランザクションの合計数。