'スターターガイド: Heroku Postgres データベースの監視'
最終更新日 2024年04月03日(水)
Table of Contents
Heroku Postgres は、Heroku が直接提供するマネージド SQL データベースサービスです。PostgreSQL ドライバーを使用して、Heroku が公式にサポートするすべての言語を含むどの言語の Heroku Postgres データベースにもアクセスできます。
Heroku Postgres は、インスタンスのステータスに関する情報を提供するデータベースとサーバーのメトリクスを提供します。これらのメトリクスを理解して監視することで、アプリケーションの実行および拡張時にデータベースのヘルスが確保されます。監視はまた、アプリケーションのチューニング、デバッグ、トラブルシューティングにも役立ちます。本番データベースがある場合は、それを監視するようにしてください。
このスターターガイドでは、次のことを行う方法について学習します。
- PostgreSQL ログを確認する
- 監視アドオンのオプションを確認する
- どのデータベースメトリクスを追跡するかを識別する
ログは Standard 層以上のデータベースで使用できます。Essential 層のデータベースでは使用できません。
開始する前に
先に進むには、Heroku Postgres データベースがプロビジョニングされている必要があります。heroku addons
コマンドを使用して、アプリがすでに Heroku Postgres をプロビジョニングしているかどうかを判定します。
$ heroku addons
Add-on Plan Price Max Price State
─────────────────────────────────────────────────── ────────── ────────────────────────────── ────────────────────────────── ───────
heroku-postgresql (postgresql-elliptical-12345) standard-0 ~$0.069/hour $50/month created
Heroku Postgres データベースを作成する方法については、「Heroku Postgres のプロビジョニング」を参照してください。
Heroku Postgres ログについて知る
ログの表示は、Heroku CLI、ダッシュボード、ログ記録アドオン、またはログドレインで行うことができます。
Heroku Postgres ログは、アプリケーションのログストリームを照合して公開する Logplex にログを記録します。heroku logs
コマンドを使い、-p フラグで postgres
プロセスタイプに絞り込むことで、Heroku Postgres イベントを取り出すことができます。
次のように、Heroku Postgres のメトリクスログにはプロセスタイプとして heroku-postgres
が付記され、出力されます。
$ heroku logs -p heroku-postgres -a example app
2022-04-21T07:46:55.000000+00:00 app[heroku-postgres]: source=HEROKU_POSTGRESQL_COBALT addon=postgresql-demo sample#current_transaction=509 sample#db_size=8426031bytes sample#tables=0 sample#active-connections=11 sample#waiting-connections=0 sample#index-cache-hit-rate=0 sample#table-cache-hit-rate=0 sample#load-avg-1m=0.02 sample#load-avg-5m=0.005 sample#load-avg-15m=0 sample#read-iops=0 sample#write-iops=0.10204 sample#tmp-disk-used=543600640 sample#tmp-disk-available=72435191808 sample#memory-total=3958708kB sample#memory-free=69612kB sample#memory-cached=3405616kB sample#memory-postgres=22080kB sample#wal-percentage-used=0.06428126026622091
...
次のように、PostgreSQL ログには postgres
プロセスタイプが付記され、出力されます。
$ heroku logs -p postgres -a example app
2024-03-15T12:37:36.000000+00:00 app[postgres.2966211]: [DATABASE] [12-1] sql_error_code = 42703 (...)" application_name="psql interactive" ERROR: column "haiku" does not exist at character 8
...
--tail
オプションを使用して、リアルタイムのログエントリにアクセスします。
$ heroku logs -p heroku-postgres -a example-app --tail
終了したら、Ctrl+C を押してプロンプトに戻ります。アイドル状態が 1 時間続いた後、リアルタイム tail セッションは自動的に終了します。
ログを手動でフィルター処理したくない場合は、監視アドオンをインストールできます。
監視アドオンをインストールする
データベースメトリクスを追跡する最も効果的な方法は、プラットフォーム監視アドオンをインストールすることです。
監視アドオンの完全な一覧は、Heroku Elements Marketplace で確認できます。これらのアドオンの多くには、開始するための無料プランが用意されています。ログの取得に関する手順については、アドオンのドキュメントを参照してください。
データベースメトリクスを確認する
Heroku Postgres は、インスタンスのステータスに関する情報を提供するデータベースとサーバーのメトリクスを提供します。これらのメトリクスを理解して監視することで、アプリケーションの実行および拡張時にデータベースのヘルスが確保されます。監視はまた、ボトルネック、バグ、パフォーマンスの問題などの識別にも役立ちます。これらのメトリクスは、監視アドオンのログまたはダッシュボードで探すことができます。
次のメトリクスを追跡できます。
- データベース属性は、特定のデータベースに適用されます。
- サーバーは、サーバーオペレーティングシステムから直接取得されます。
pg_bouncer
メトリクスは、PgBouncer プーラーアタッチメントを備えたすべての Heroku Postgres サーバーに含まれています。これらのメトリクスは、PgBouncer の特殊内部データベースに接続したときにSHOW POOLS;
コマンドを実行することによって表示可能なもののサブセットです。
使用可能なさまざまなメトリクスについての詳細は、「Heroku Postgres のメトリクスのログ」を参照してください。推奨されるメトリクスの一覧については、「Heroku Postgres の監視」を参照してください。
次のステップ
次のコンテンツを使用して、Heroku Postgres データベースの監視の詳細について学習します。