モニタリング用の PostgreSQL の設定

ユーザ権限

非スーパーユーザーを作成し、モニタリング権限を付与します。これを実現するには、次の手順を実行して SECURITY DEFINER 関数を作成します。これにより、非スーパーユーザーが pg_stat_activity および pg_stat_statements. の内容を表示できるようになります。
警告: このセクションを実行するには、スーパーユーザーである必要があります。
  1. get_sa() 関数を呼び出します。
    CREATE FUNCTION get_sa() 
    RETURNS SETOF pg_stat_activity LANGUAGE sql AS
    $$ SELECT * FROM pg_catalog.pg_stat_activity; $$
    VOLATILE
    SECURITY DEFINER;
     
    CREATE VIEW pg_stat_activity_allusers AS SELECT * FROM get_sa(); 
    GRANT SELECT ON pg_stat_activity_allusers TO public;
  2. get_querystats( ) 関数を呼び出します。
    CREATE FUNCTION get_querystats() 
    RETURNS SETOF pg_stat_statements LANGUAGE sql 	AS
    $$ SELECT * FROM pg_stat_statements; $$
    VOLATILE
    SECURITY DEFINER;
    CREATE VIEW pg_stat_statements_allusers AS SELECT * FROM get_querystats();
    GRANT SELECT ON pg_stat_statements_allusers TO public;
モニタリングユーザーは、データベースマシンの Splunk AppDynamics から PostgreSQL インスタンスにリモート接続できる必要もあります。

pg_stat_statements セクションの有効化

警告: このセクションを実行するには、スーパーユーザーである必要があります。
  1. 次のコマンドを実行して pg_stat_statements 拡張機能を作成します。
    create extension pg_stat_statements
  2. pg_stat_statements 拡張機能を初めて作成する場合は、データベースを再起動します。

セットアップの検証

警告: 新しく作成された appduser(モニタリングユーザー)がこのセクションを実行することを確認します。
次のクエリを実行します。
SELECT * FROM pg_stat_activity_allusers
SELECT * FROM pg_stat_statements_allusers
クエリが正常に実行され、出力が得られれば、セットアップは成功です。