pg_statsinfo 3.0.2をPostgreSQL 9.4.10に導入して利用統計情報を自動収集する
目次
概要
CentOS 6.8(x86_64) に PostgreSQL 9.4.10 をインストールした環境に、 pg_statinfo 3.0.2 を追加インストールして、サーバの利用統計情報を定期的に収集・蓄積します。 今回利用するサーバ環境はこちらの手順でPostgreSQLをインストール済みの前提とします。 今回は動作確認することを目的としているため、簡易的な構成とします。具体的には、 収集した統計情報を格納するリポジトリDBは監視対象のPostgreSQLサーバと同一インスタンスの データベース内に作成します。
構成
サーバ構成
OSバージョン
CentOS 6.8 x86_64
ソフトウェア・パッケージ一覧
以下のパッケージを新規にインストールします。
- pg_statsinfo-3.0.2-1.pg94.rhel6.x86_64.rpm
以下のパッケージは既にインストール済みの前提とします。
- postgresql94-9.4.10-1PGDG.rhel6.x86_64.rpm
- postgresql94-libs-9.4.10-1PGDG.rhel6.x86_64.rpm
- postgresql94-server-9.4.10-1PGDG.rhel6.x86_64.rpm
環境構築
インストール
pg_statsinfoのインストール
pg_statsinfoのパッケージを1つインストールします。 下記URLよりファイルをダウンロードして /media/installer/postgresql9410/ に配置した前提でインストールを開始します。
【関連サイト】
pg_statsinfo 3.0.2ダウンロードURL
以下のコマンドを実行します。
# cd /media/installer/postgresql9410/
# ls -l pg_stats*.rpm
-rw-r--r-- 1 root root 2791456 1月 21 23:05 2017 pg_stats_reporter-3.0.1-1.el6.noarch.rpm
-rw-r--r-- 1 root root 109308 1月 21 23:07 2017 pg_statsinfo-3.0.2-1.pg94.rhel6.x86_64.rpm ←これをインストール
# rpm -ihv pg_statsinfo-3.0.2-1.pg94.rhel6.x86_64.rpm
準備中... ########################################### [100%]
1:pg_statsinfo ########################################### [100%]
設定
PostgreSQLインスタンスの停止
PostgreSQLインスタンスが起動している場合は、pg_statsinfoの設定を行う前に停止します。
-bash-4.1$ ps -ef | grep postgres postgres 2439 1 0 09:48 pts/0 00:00:00 /usr/pgsql-9.4/bin/postgres ←起動している postgres 2440 2439 0 09:48 ? 00:00:00 postgres: logger process postgres 2442 2439 0 09:48 ? 00:00:00 postgres: checkpointer process postgres 2443 2439 0 09:48 ? 00:00:00 postgres: writer process postgres 2444 2439 0 09:48 ? 00:00:00 postgres: wal writer process postgres 2445 2439 0 09:48 ? 00:00:00 postgres: autovacuum launcher process postgres 2446 2439 0 09:48 ? 00:00:00 postgres: stats collector process root 2657 2200 0 11:54 pts/0 00:00:00 su - postgres postgres 2658 2657 0 11:54 pts/0 00:00:00 -bash postgres 2685 2658 0 11:55 pts/0 00:00:00 ps -ef postgres 2686 2658 0 11:55 pts/0 00:00:00 grep postgres -bash-4.1$ pg_ctl stop -m fast ←停止する サーバ停止処理の完了を待っています....完了 サーバは停止しました -bash-4.1$ ps -ef | grep postgres root 2657 2200 0 11:54 pts/0 00:00:00 su - postgres postgres 2658 2657 0 11:54 pts/0 00:00:00 -bash postgres 2689 2658 0 11:56 pts/0 00:00:00 ps -ef postgres 2690 2658 0 11:56 pts/0 00:00:00 grep postgres
pg_statsinfoを利用するための設定
pg_statsinfoを利用するための設定は、postgresql.confファイルに記述します。 初めて設定するので、ほぼ公式サイトの推奨設定の通りとしました。
-bash-4.1$ cd /data/pgdata1/ -bash-4.1$ vi postgresql.conf
※以下、該当箇所のみ変更※ #------------------------------------------------------------------------------ # RESOURCE USAGE (except WAL) #------------------------------------------------------------------------------ #shared_preload_libraries = '' # (change requires restart) ↓変更 shared_preload_libraries = 'pg_statsinfo' # (change requires restart)
#------------------------------------------------------------------------------
# ERROR REPORTING AND LOGGING
#------------------------------------------------------------------------------
log_destination = 'stderr' # Valid values are combinations of
↓変更
log_destination = 'csvlog' # Valid values are combinations of
log_filename = 'postgresql-%Y%m%d.log' # log file name pattern,
↓変更
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log' # log file name pattern,
#log_min_messages = warning # values in order of decreasing detail:
↓変更
log_min_messages = log # values in order of decreasing detail:
#log_checkpoints = off
↓変更
log_checkpoints = on
#------------------------------------------------------------------------------
# RUNTIME STATISTICS
#------------------------------------------------------------------------------
#track_functions = none # none, pl, all
↓変更
track_functions = all # none, pl, all
#------------------------------------------------------------------------------
# AUTOVACUUM PARAMETERS
#------------------------------------------------------------------------------
#log_autovacuum_min_duration = -1 # -1 disables, 0 logs all actions and
↓変更
log_autovacuum_min_duration = 0 # -1 disables, 0 logs all actions and
※ファイルの末尾に追加※
#------------------------------------------------------------------------------
# CUSTOMIZED OPTIONS
#------------------------------------------------------------------------------
pg_statsinfo.snapshot_interval = 30min
pg_statsinfo.enable_maintenance = 'on'
pg_statsinfo.maintenance_time = '00:02:00'
pg_statsinfo.repository_keepday = 7
pg_statsinfo.syslog_min_messages = 'error'
pg_statsinfo.textlog_line_prefix = '%t %p %c-%l %x %q(%u, %d, %r, %a) '
pg_statsinfo.syslog_line_prefix = '%t %p %c-%l %x %q(%u, %d, %r, %a) '
クライアント認証の設定確認
リポジトリDBに書き込むために、以下の設定がされていることを確認します。 もしリポジトリDBをリモートのPostgreSQLインスタンスに持つ場合は、別の設定が必要になります。
-bash-4.1$ view pg_hba.conf
local all postgres peer ←この設定が必要
local all all md5
host all all 192.168.0.0/24 md5
PostgreSQLインスタンスの起動
pg_stasinfoで利用統計情報を自動収集する設定が終わったので、 PostgreSQLインスタンスを起動します。
-bash-4.1$ pg_ctl start -w サーバの起動完了を待っています....2017-01-22 13:50:14 JST [2790] LOG: redirecting log output to logging collector process 2017-01-22 13:50:14 JST [2790] HINT: Future log output will appear in directory "pg_log". 完了 サーバ起動完了 -bash-4.1$ 2017-01-22 13:50:15 JST [2790] LOG: pg_statsinfo launcher started ←pg_statsinfoのプロセスが起動 LOG: start LOG: installing schema: statsinfo ←設定後の初回起動時にスキーマが自動作成される LOG: installing schema: statsrepo ←設定後の初回起動時にスキーマが自動作成される -bash-4.1$
動作テスト
プロセスの起動確認
PostgreSQLサーバのプロセスに加えて、pg_statsinfoのプロセスが追加で起動していることを確認します。
-bash-4.1$ ps -ef | grep postgres postgres 2790 1 0 13:50 pts/0 00:00:00 /usr/pgsql-9.4/bin/postgres postgres 2791 2790 0 13:50 pts/0 00:00:00 postgres: pg_statsinfo launcher process ←追加で起動 postgres 2792 2790 0 13:50 ? 00:00:00 postgres: logger process postgres 2794 2790 0 13:50 ? 00:00:00 postgres: checkpointer process postgres 2795 2790 0 13:50 ? 00:00:00 postgres: writer process postgres 2796 2790 0 13:50 ? 00:00:00 postgres: wal writer process postgres 2797 2790 0 13:50 ? 00:00:00 postgres: autovacuum launcher process postgres 2798 2790 0 13:50 ? 00:00:00 postgres: stats collector process postgres 2800 2791 0 13:50 pts/0 00:00:01 /usr/pgsql-9.4/bin/pg_statsinfod 2790 ←追加で起動 postgres 2807 2790 0 13:50 ? 00:00:00 postgres: postgres postgres [local] idle (後略)
ログファイルの確認
以下のように、テキストログ、CSVログ、コンソールログの3種類が生成されていることを確認します。 運用を継続すると、ログがローテートされてCSVログとコンソールログが増えていきます。
-bash-4.1$ cd /data/pgdata1/pg_log/ -bash-4.1$ ls -l 合計 24 -rw------- 1 postgres postgres 4394 1月 22 14:20 2017 pg_statsinfo.log ←テキストログ(最新のCSVログの情報を元に加工したログ) -rw------- 1 postgres postgres 5308 1月 22 14:20 2017 postgresql-2017-01-22_135014.csv ←CSVログ -rw------- 1 postgres postgres 158 1月 22 13:50 2017 postgresql-2017-01-22_135014.log ←コンソールログ -rw------- 1 postgres postgres 1986 1月 22 11:56 2017 postgresql-20170122.log ←ログ出力の設定変更前に使用されていたログ
手動でスナップショットを取得
今回の設定では30分間隔で、自動でスナップショット(利用統計情報)が取得されますが、 確認のため一度手動出スナップショットを取得してみます。 「test snapshot」の部分はコメントなので何と入力しても構いません。
-bash-4.1$ psql -d postgres -c "select statsinfo.snapshot('test snapshot')" snapshot ---------- (1 行) -bash-4.1$
スナップショットの取得確認
手動で取得したスナップショットがリポジトリDBに存在するか確認します。 先ほど入力したコメントの文字列を元にリポジトリDBを検索します。
-bash-4.1$ psql -d postgres -c "select * from statsrepo.snapshot where comment = 'test snapshot'" snapid | instid | time | comment | exec_time | snapshot_increase_size --------+--------+-------------------------------+---------------+-----------------+------------------------ 10 | 1 | 2017-01-22 18:25:08.130004+09 | test snapshot | 00:00:00.283053 | 122880 (1 行) -bash-4.1$
コマンドラインでレポートを生成
取得したスナップショットを元にコマンドラインでレポートを作成します。 ローカルホスト上で稼働しているリポジトリDB(PostgreSQL)がポート5432/tcpでリッスンしており、 postgresデータベースに利用統計情報が格納されている前提で、postgresユーザで接続して レポートを作成します。レポートの作成条件は以下の通りです。
- レポート種別IDは「ALL」
- レポートの範囲は限定せず、リポジトリDBで保持しているスナップショット全て
- レポートの出力先は標準出力(-oオプションでファイルに出力することもできます)
-bash-4.1$ pg_statsinfo -r ALL -h localhost -d postgres -p 5432 -U postgres
Password: ←データベースユーザのpostgresのパスワードを入力
---------------------------------------------
STATSINFO Report (host: pgstatsdb, port: 5432)
---------------------------------------------
----------------------------------------
/* Summary */
----------------------------------------
Database System ID : 6378212053766228260
Host : pgstatsdb
Port : 5432
PostgreSQL Version : 9.4.10
Snapshot Begin : 2017-01-22 14:00:00
Snapshot End : 2017-01-23 02:00:00
Snapshot Duration : 12:00:00
Total Database Size : 12 MiB
Total Commits : 12048
Total Rollbacks : 0
/** Alert **/
-----------------------------------
DateTime Message
--------------------------------------------------------------------------------
----------------------------------------
/* Database Statistics */
----------------------------------------
Database Name : postgres
Database Size : 12 MiB
Database Size Increase : 4 MiB
Commit/s : 0.279
Rollback/s : 0.000
Cache Hit Ratio : 99.500 %
Block Read/s (disk+cache) : 15.284
Block Read/s (disk) : 0.075
Rows Read/s : 92.453
Temporary Files : 0
Temporary Bytes : 0 MiB
Deadlocks : 0
Block Read Time : 0.000 ms
Block Write Time : 0.000 ms
/** Transaction Statistics **/
-----------------------------------
DateTime Database Commit/s Rollback/s
-----------------------------------------------------------------
2017-01-22 14:30 postgres 0.269 0.000
2017-01-22 15:00 postgres 0.272 0.000
2017-01-22 15:30 postgres 0.281 0.000
2017-01-22 16:00 postgres 0.274 0.000
2017-01-22 16:30 postgres 0.281 0.000
2017-01-22 17:00 postgres 0.274 0.000
2017-01-22 17:30 postgres 0.277 0.000
2017-01-22 18:00 postgres 0.270 0.000
2017-01-22 18:25 postgres 0.288 0.000
2017-01-22 18:30 postgres 0.346 0.000
2017-01-22 18:56 postgres 0.275 0.000
2017-01-22 19:00 postgres 0.388 0.000
2017-01-22 19:30 postgres 0.288 0.000
2017-01-22 20:00 postgres 0.281 0.000
2017-01-22 20:00 postgres 0.870 0.000
2017-01-22 20:30 postgres 0.309 0.000
2017-01-22 21:00 postgres 0.277 0.000
2017-01-22 21:30 postgres 0.272 0.000
2017-01-22 22:00 postgres 0.279 0.000
2017-01-22 22:30 postgres 0.273 0.000
2017-01-22 23:00 postgres 0.272 0.000
2017-01-22 23:30 postgres 0.271 0.000
2017-01-23 00:00 postgres 0.275 0.000
2017-01-23 00:30 postgres 0.283 0.000
2017-01-23 01:00 postgres 0.273 0.000
2017-01-23 01:30 postgres 0.273 0.000
2017-01-23 02:00 postgres 0.279 0.000
/** Database Size **/
-----------------------------------
DateTime Database Size
-----------------------------------------------------
2017-01-22 14:00 postgres 7.816 MiB
2017-01-22 14:30 postgres 8.340 MiB
2017-01-22 15:00 postgres 8.519 MiB
2017-01-22 15:30 postgres 8.644 MiB
2017-01-22 16:00 postgres 8.777 MiB
2017-01-22 16:30 postgres 8.886 MiB
2017-01-22 17:00 postgres 8.996 MiB
2017-01-22 17:30 postgres 9.121 MiB
2017-01-22 18:00 postgres 9.254 MiB
2017-01-22 18:25 postgres 9.386 MiB
2017-01-22 18:30 postgres 9.504 MiB
2017-01-22 18:56 postgres 9.636 MiB
2017-01-22 19:00 postgres 9.754 MiB
2017-01-22 19:30 postgres 9.871 MiB
2017-01-22 20:00 postgres 9.988 MiB
2017-01-22 20:00 postgres 10.113 MiB
2017-01-22 20:30 postgres 10.269 MiB
2017-01-22 21:00 postgres 10.402 MiB
2017-01-22 21:30 postgres 10.551 MiB
2017-01-22 22:00 postgres 10.699 MiB
2017-01-22 22:30 postgres 10.840 MiB
2017-01-22 23:00 postgres 10.965 MiB
2017-01-22 23:30 postgres 11.105 MiB
2017-01-23 00:00 postgres 11.246 MiB
2017-01-23 00:30 postgres 11.613 MiB
2017-01-23 01:00 postgres 11.738 MiB
2017-01-23 01:30 postgres 11.918 MiB
2017-01-23 02:00 postgres 12.082 MiB
/** Recovery Conflicts **/
-----------------------------------
Database Conflict Tablespace Conflict Lock Conflict Snapshot Conflict Bufferpin Conflict Deadlock
-----------------------------------------------------------------------------------------------------------------
postgres 0 0 0 0 0
----------------------------------------
/* Instance Activity */
----------------------------------------
/** WAL Statistics **/
-----------------------------------
WAL Write Total : 11.509 MiB
WAL Write Speed : 0.001 MiB/s
-----------------------------------
DateTime Location Segment File Write Size Write Size/s
------------------------------------------------------------------------------------------------
2017-01-22 14:30 0/1912A78 000000010000000000000001 0.557 MiB 0.000 MiB
2017-01-22 15:00 0/19559C8 000000010000000000000001 0.262 MiB 0.000 MiB
2017-01-22 15:30 0/19AC298 000000010000000000000001 0.338 MiB 0.000 MiB
2017-01-22 16:00 0/1A09CC0 000000010000000000000001 0.366 MiB 0.000 MiB
2017-01-22 16:30 0/1A59F60 000000010000000000000001 0.313 MiB 0.000 MiB
2017-01-22 17:00 0/1ABC3D0 000000010000000000000001 0.384 MiB 0.000 MiB
2017-01-22 17:30 0/1B28040 000000010000000000000001 0.421 MiB 0.000 MiB
2017-01-22 18:00 0/1B861D8 000000010000000000000001 0.368 MiB 0.000 MiB
2017-01-22 18:25 0/1BF7E00 000000010000000000000001 0.444 MiB 0.000 MiB
2017-01-22 18:30 0/1C49FE0 000000010000000000000001 0.321 MiB 0.001 MiB
2017-01-22 18:56 0/1CB28C8 000000010000000000000001 0.408 MiB 0.000 MiB
2017-01-22 19:00 0/1D05CC0 000000010000000000000001 0.325 MiB 0.002 MiB
2017-01-22 19:30 0/1D605F8 000000010000000000000001 0.354 MiB 0.000 MiB
2017-01-22 20:00 0/1DC25B0 000000010000000000000001 0.383 MiB 0.000 MiB
2017-01-22 20:00 0/1E01708 000000010000000000000001 0.246 MiB 0.014 MiB
2017-01-22 20:30 0/1E75080 000000010000000000000001 0.452 MiB 0.000 MiB
2017-01-22 21:00 0/1EE3B40 000000010000000000000001 0.432 MiB 0.000 MiB
2017-01-22 21:30 0/1F44958 000000010000000000000001 0.378 MiB 0.000 MiB
2017-01-22 22:00 0/1FC3D40 000000010000000000000001 0.497 MiB 0.000 MiB
2017-01-22 22:30 0/2039988 000000010000000000000002 0.460 MiB 0.000 MiB
2017-01-22 23:00 0/20A2740 000000010000000000000002 0.410 MiB 0.000 MiB
2017-01-22 23:30 0/2112AD8 000000010000000000000002 0.438 MiB 0.000 MiB
2017-01-23 00:00 0/2196C00 000000010000000000000002 0.516 MiB 0.000 MiB
2017-01-23 00:30 0/2266FB0 000000010000000000000002 0.813 MiB 0.000 MiB
2017-01-23 01:00 0/22E7628 000000010000000000000002 0.502 MiB 0.000 MiB
2017-01-23 01:30 0/23678F0 000000010000000000000002 0.501 MiB 0.000 MiB
2017-01-23 02:00 0/24065B8 000000010000000000000002 0.620 MiB 0.000 MiB
/** Instance Processes **/
-----------------------------------
DateTime Idle Idle In Xact Waiting Running
---------------------------------------------------------------------------
2017-01-22 14:00 100.00 % 0.00 % 0.00 % 0.00 %
2017-01-22 14:30 98.97 % 0.00 % 0.00 % 1.03 %
2017-01-22 15:00 98.92 % 0.00 % 0.00 % 1.08 %
2017-01-22 15:30 100.00 % 0.00 % 0.00 % 0.00 %
2017-01-22 16:00 100.00 % 0.00 % 0.00 % 0.00 %
2017-01-22 16:30 100.00 % 0.00 % 0.00 % 0.00 %
2017-01-22 17:00 100.00 % 0.00 % 0.00 % 0.00 %
2017-01-22 17:30 100.00 % 0.00 % 0.00 % 0.00 %
2017-01-22 18:00 100.00 % 0.00 % 0.00 % 0.00 %
2017-01-22 18:25 100.00 % 0.00 % 0.00 % 0.00 %
2017-01-22 18:30 100.00 % 0.00 % 0.00 % 0.00 %
2017-01-22 18:56 100.00 % 0.00 % 0.00 % 0.00 %
2017-01-22 19:00 100.00 % 0.00 % 0.00 % 0.00 %
2017-01-22 19:30 100.00 % 0.00 % 0.00 % 0.00 %
2017-01-22 20:00 100.00 % 0.00 % 0.00 % 0.00 %
2017-01-22 20:00 100.00 % 0.00 % 0.00 % 0.00 %
2017-01-22 20:30 100.00 % 0.00 % 0.00 % 0.00 %
2017-01-22 21:00 100.00 % 0.00 % 0.00 % 0.00 %
2017-01-22 21:30 100.00 % 0.00 % 0.00 % 0.00 %
2017-01-22 22:00 100.00 % 0.00 % 0.00 % 0.00 %
2017-01-22 22:30 100.00 % 0.00 % 0.00 % 0.00 %
2017-01-22 23:00 100.00 % 0.00 % 0.00 % 0.00 %
2017-01-22 23:30 99.12 % 0.00 % 0.00 % 0.88 %
2017-01-23 00:00 99.12 % 0.00 % 0.00 % 0.88 %
2017-01-23 00:30 100.00 % 0.00 % 0.00 % 0.00 %
2017-01-23 01:00 100.00 % 0.00 % 0.00 % 0.00 %
2017-01-23 01:30 100.00 % 0.00 % 0.00 % 0.00 %
2017-01-23 02:00 100.00 % 0.00 % 0.00 % 0.00 %
Average 99.86 % 0.00 % 0.00 % 0.14 %
----------------------------------------
/* OS Resource Usage */
----------------------------------------
/** CPU Usage + Load Average **/
-----------------------------------
DateTime User System Idle IOwait Loadavg1 Loadavg5 Loadavg15
------------------------------------------------------------------------------------------
2017-01-22 14:30 0.00 % 0.00 % 99.90 % 0.00 % 0.030 0.040 0.050
2017-01-22 15:00 0.10 % 0.00 % 99.80 % 0.10 % 0.140 0.050 0.060
2017-01-22 15:30 0.10 % 0.10 % 99.80 % 0.10 % 0.020 0.060 0.050
2017-01-22 16:00 0.00 % 0.00 % 99.90 % 0.00 % 0.100 0.060 0.050
2017-01-22 16:30 0.00 % 0.10 % 99.70 % 0.20 % 0.080 0.100 0.060
2017-01-22 17:00 0.00 % 0.00 % 99.90 % 0.00 % 0.050 0.060 0.050
2017-01-22 17:30 0.00 % 0.00 % 99.90 % 0.00 % 0.120 0.060 0.050
2017-01-22 18:00 0.00 % 0.00 % 99.90 % 0.00 % 0.100 0.100 0.060
2017-01-22 18:25 0.00 % 0.00 % 99.90 % 0.00 % 0.020 0.050 0.050
2017-01-22 18:30 0.00 % 0.00 % 99.90 % 0.00 % 0.140 0.100 0.060
2017-01-22 18:56 0.00 % 0.00 % 99.90 % 0.00 % 0.010 0.050 0.050
2017-01-22 19:00 0.10 % 0.00 % 99.90 % 0.00 % 0.040 0.040 0.050
2017-01-22 19:30 0.00 % 0.00 % 99.90 % 0.00 % 0.180 0.090 0.070
2017-01-22 20:00 0.00 % 0.00 % 99.90 % 0.00 % 0.220 0.110 0.070
2017-01-22 20:00 0.50 % 0.10 % 99.30 % 0.10 % 0.170 0.110 0.070
2017-01-22 20:30 0.00 % 0.00 % 99.90 % 0.00 % 0.000 0.040 0.050
2017-01-22 21:00 0.00 % 0.00 % 99.90 % 0.00 % 0.130 0.060 0.050
2017-01-22 21:30 0.00 % 0.00 % 99.90 % 0.00 % 0.080 0.050 0.050
2017-01-22 22:00 0.00 % 0.00 % 99.90 % 0.00 % 0.000 0.020 0.050
2017-01-22 22:30 0.00 % 0.00 % 99.90 % 0.00 % 0.000 0.030 0.050
2017-01-22 23:00 0.00 % 0.00 % 99.90 % 0.00 % 0.010 0.060 0.050
2017-01-22 23:30 0.00 % 0.00 % 99.90 % 0.00 % 0.010 0.040 0.050
2017-01-23 00:00 0.00 % 0.00 % 99.90 % 0.00 % 0.040 0.050 0.070
2017-01-23 00:30 0.00 % 0.00 % 99.90 % 0.00 % 0.010 0.040 0.050
2017-01-23 01:00 0.00 % 0.00 % 99.90 % 0.00 % 0.090 0.070 0.060
2017-01-23 01:30 0.00 % 0.00 % 99.90 % 0.00 % 0.000 0.020 0.050
2017-01-23 02:00 0.00 % 0.00 % 99.90 % 0.00 % 0.140 0.070 0.050
Average 0.03 % 0.01 % 99.86 % 0.02 % 0.071 0.060 0.055
/** IO Usage **/
-----------------------------------
Device Including TabelSpaces Total Read Total Write Total Read Time Total Write Time Current IO Queue Total IO Time
----------------------------------------------------------------------------------------------------------------------------------------------
dm-1 {pg_default,pg_global} 58 MiB 232 MiB 20481 ms 1507330 ms 0.000 1527810 ms
-----------------------------------
DateTime Device Read Size/s Write Size/s Read Time/s Write Time/s
---------------------------------------------------------------------------------------------------
2017-01-22 14:30 dm-1 0.00 KiB 6.70 KiB 0.00 ms 22.55 ms
2017-01-22 15:00 dm-1 1.02 KiB 3.81 KiB 0.58 ms 2.66 ms
2017-01-22 15:30 dm-1 4.08 KiB 12.12 KiB 4.95 ms 170.37 ms
2017-01-22 16:00 dm-1 0.00 KiB 3.61 KiB 0.00 ms 2.05 ms
2017-01-22 16:30 dm-1 27.33 KiB 15.67 KiB 5.78 ms 428.09 ms
2017-01-22 17:00 dm-1 0.00 KiB 3.62 KiB 0.00 ms 2.01 ms
2017-01-22 17:30 dm-1 0.00 KiB 3.74 KiB 0.00 ms 2.13 ms
2017-01-22 18:00 dm-1 0.00 KiB 3.73 KiB 0.00 ms 2.01 ms
2017-01-22 18:25 dm-1 0.00 KiB 4.62 KiB 0.00 ms 2.60 ms
2017-01-22 18:30 dm-1 0.00 KiB 62.93 KiB 0.00 ms 1013.45 ms
2017-01-22 18:56 dm-1 0.00 KiB 5.23 KiB 0.00 ms 3.19 ms
2017-01-22 19:00 dm-1 0.00 KiB 6.77 KiB 0.00 ms 4.20 ms
2017-01-22 19:30 dm-1 0.00 KiB 3.95 KiB 0.00 ms 2.14 ms
2017-01-22 20:00 dm-1 0.00 KiB 4.54 KiB 0.00 ms 2.60 ms
2017-01-22 20:00 dm-1 0.00 KiB 22.27 KiB 0.00 ms 10.67 ms
2017-01-22 20:30 dm-1 0.29 KiB 5.81 KiB 0.02 ms 3.98 ms
2017-01-22 21:00 dm-1 0.00 KiB 4.19 KiB 0.00 ms 2.46 ms
2017-01-22 21:30 dm-1 0.00 KiB 3.86 KiB 0.00 ms 2.33 ms
2017-01-22 22:00 dm-1 0.00 KiB 4.14 KiB 0.00 ms 2.30 ms
2017-01-22 22:30 dm-1 0.00 KiB 3.96 KiB 0.00 ms 2.39 ms
2017-01-22 23:00 dm-1 0.00 KiB 3.77 KiB 0.00 ms 2.24 ms
2017-01-22 23:30 dm-1 0.00 KiB 3.92 KiB 0.00 ms 2.20 ms
2017-01-23 00:00 dm-1 0.07 KiB 4.28 KiB 0.03 ms 2.54 ms
2017-01-23 00:30 dm-1 0.25 KiB 5.07 KiB 0.02 ms 3.35 ms
2017-01-23 01:00 dm-1 0.00 KiB 3.91 KiB 0.00 ms 2.26 ms
2017-01-23 01:30 dm-1 0.00 KiB 4.01 KiB 0.00 ms 2.33 ms
2017-01-23 02:00 dm-1 0.00 KiB 4.32 KiB 0.00 ms 2.51 ms
/** Memory Usage **/
-----------------------------------
DateTime Memfree Buffers Cached Swap Dirty
-----------------------------------------------------------------------------------------
2017-01-22 14:00 1477.51 MiB 29.16 MiB 265.05 MiB 0.00 MiB 0.00 MiB
2017-01-22 14:30 1467.82 MiB 30.66 MiB 270.99 MiB 0.00 MiB 0.00 MiB
2017-01-22 15:00 1435.46 MiB 32.54 MiB 301.27 MiB 0.00 MiB 1.32 MiB
2017-01-22 15:30 1391.20 MiB 41.24 MiB 330.98 MiB 0.00 MiB 0.00 MiB
2017-01-22 16:00 1389.92 MiB 42.13 MiB 331.26 MiB 0.00 MiB 0.00 MiB
2017-01-22 16:30 1280.61 MiB 93.04 MiB 335.08 MiB 0.00 MiB 0.05 MiB
2017-01-22 17:00 1281.47 MiB 93.95 MiB 335.34 MiB 0.00 MiB 0.04 MiB
2017-01-22 17:30 1280.20 MiB 94.84 MiB 335.61 MiB 0.00 MiB 0.04 MiB
2017-01-22 18:00 1286.86 MiB 95.86 MiB 335.89 MiB 0.00 MiB 0.04 MiB
2017-01-22 18:25 1284.22 MiB 96.79 MiB 336.18 MiB 0.00 MiB 0.00 MiB
2017-01-22 18:30 1267.20 MiB 97.00 MiB 352.41 MiB 0.00 MiB 0.04 MiB
2017-01-22 18:56 1274.71 MiB 98.12 MiB 348.70 MiB 0.00 MiB 0.03 MiB
2017-01-22 19:00 1268.98 MiB 98.21 MiB 350.39 MiB 0.00 MiB 0.04 MiB
2017-01-22 19:30 1261.23 MiB 99.13 MiB 350.92 MiB 0.00 MiB 0.04 MiB
2017-01-22 20:00 1263.59 MiB 100.32 MiB 349.11 MiB 0.00 MiB 0.00 MiB
2017-01-22 20:00 1255.51 MiB 100.36 MiB 350.62 MiB 0.00 MiB 0.23 MiB
2017-01-22 20:30 1247.65 MiB 101.72 MiB 351.29 MiB 0.00 MiB 0.04 MiB
2017-01-22 21:00 1243.81 MiB 102.73 MiB 352.15 MiB 0.00 MiB 0.04 MiB
2017-01-22 21:30 1239.51 MiB 103.61 MiB 352.72 MiB 0.00 MiB 0.04 MiB
2017-01-22 22:00 1237.45 MiB 105.07 MiB 353.24 MiB 0.00 MiB 0.04 MiB
2017-01-22 22:30 1252.34 MiB 105.96 MiB 337.79 MiB 0.00 MiB 0.04 MiB
2017-01-22 23:00 1251.13 MiB 106.81 MiB 338.07 MiB 0.00 MiB 0.04 MiB
2017-01-22 23:30 1249.92 MiB 107.70 MiB 338.37 MiB 0.00 MiB 0.04 MiB
2017-01-23 00:00 1247.98 MiB 108.66 MiB 339.25 MiB 0.00 MiB 0.04 MiB
2017-01-23 00:30 1244.20 MiB 109.66 MiB 340.93 MiB 0.00 MiB 0.04 MiB
2017-01-23 01:00 1242.87 MiB 110.52 MiB 341.20 MiB 0.00 MiB 0.04 MiB
2017-01-23 01:30 1241.66 MiB 111.40 MiB 341.57 MiB 0.00 MiB 0.04 MiB
2017-01-23 02:00 1240.32 MiB 112.32 MiB 341.92 MiB 0.00 MiB 0.04 MiB
----------------------------------------
/* Disk Usage */
----------------------------------------
/** Disk Usage per Tablespace **/
-----------------------------------
Tablespace Location Device Used Avail Remain
-----------------------------------------------------------------------------------------------------------
pg_default /data/pgdata1 253:1 2646 MiB 7304 MiB 73.401 %
pg_global /data/pgdata1 253:1 2646 MiB 7304 MiB 73.401 %
/** Disk Usage per Table **/
-----------------------------------
Database Schema Table Size Table Reads Index Reads Toast Reads
---------------------------------------------------------------------------------------------------------------
postgres statsrepo column_20170122 1 MiB 630 82 0
postgres statsrepo table_20170122 0 MiB 87 15 0
postgres statsrepo function 0 MiB 70 16 0
postgres statsrepo index_20170122 0 MiB 66 14 0
postgres statsrepo column_20170123 0 MiB 38 15 0
postgres statsrepo log_20170122 0 MiB 46 0 0
postgres statsrepo setting 0 MiB 28 16 0
postgres statsrepo instance 0 MiB 5 20 0
postgres statsrepo schema 0 MiB 9 8 0
postgres statsrepo checkpoint 0 MiB 7 8 0
----------------------------------------
/* Long Transactions */
----------------------------------------
PID Client Address When To Start Duration Query
-----------------------------------------------------------------------------------------
----------------------------------------
/* Notable Tables */
----------------------------------------
/** Heavily Updated Tables **/
-----------------------------------
Database Schema Table INSERT Rows UPDATE Rows DELETE Rows Total Rows HOT Ratio(%)
-----------------------------------------------------------------------------------------------------------------------------
postgres statsrepo column_20170122 9748 0 0 9748 0.000
postgres statsrepo column_20170123 1999 0 0 1999 0.000
postgres statsrepo function 1144 0 0 1144 0.000
postgres statsrepo table_20170122 779 0 0 779 0.000
postgres statsrepo setting 675 0 0 675 0.000
postgres statsrepo index_20170122 664 0 0 664 0.000
postgres statsrepo log_20170122 368 0 0 368 0.000
postgres statsrepo table_20170123 148 0 0 148 0.000
postgres statsrepo checkpoint 140 0 1 141 0.000
postgres statsrepo schema 135 0 0 135 0.000
postgres statsrepo index_20170123 125 0 0 125 0.000
postgres statsrepo inherits 117 0 0 117 0.000
postgres statsrepo autoanalyze 72 0 6 78 0.000
postgres statsrepo log_20170123 65 0 0 65 0.000
postgres statsrepo tablespace 54 0 0 54 0.000
postgres statsrepo snapshot 27 27 0 54 100.000
postgres statsrepo database 27 0 0 27 0.000
postgres statsrepo xlog 27 0 0 27 0.000
postgres statsrepo role 27 0 0 27 0.000
postgres statsrepo loadavg 27 0 0 27 0.000
/** Heavily Accessed Tables **/
-----------------------------------
Database Schema Table Seq Scans Read Rows Read Rows/Scan Cache Hit Ratio(%)
-----------------------------------------------------------------------------------------------------------------------
postgres statsrepo log_20170122 1 382 382.000 95.100
postgres statsrepo table_20170122 24 4227 176.125 99.100
postgres statsrepo index_20170122 12 1800 150.000 97.800
postgres statsrepo schema 636 61730 97.060 99.600
postgres statsrepo table_20170123 29 2580 88.966 99.100
postgres statsrepo index_20170123 15 1090 72.667 98.500
postgres statsrepo autoanalyze 1 65 65.000 95.500
postgres statsrepo tablespace 1 54 54.000 95.200
postgres statsrepo checkpoint 13 560 43.077 97.600
postgres statsrepo snapshot 1524 38403 25.199 100.000
postgres statsrepo xlog 6 98 16.333 93.300
postgres statsrepo autovacuum 1 4 4.000 90.000
postgres statsrepo log_20170123 2 6 3.000 97.300
postgres statsrepo instance 5 4 0.800 99.300
postgres statsrepo database 9 3 0.333 100.000
/** Low Density Tables **/
-----------------------------------
Database Schema Table Live Tuples Logical Pages Physical Pages Logical Page Ratio(%)
----------------------------------------------------------------------------------------------------------------------------
/** Fragmented Tables **/
-----------------------------------
Database Schema Table Column Correlation
---------------------------------------------------------------------------------------
postgres statsrepo column_20170123 tbl 0.035
postgres statsrepo table_20170122 tbl 0.036
postgres statsrepo column_20170122 tbl 0.042
postgres statsrepo column_20170122 attnum 0.051
postgres statsrepo table_20170123 tbl 0.068
postgres statsrepo column_20170123 attnum 0.068
postgres statsrepo setting name 0.073
postgres statsrepo index_20170122 idx 0.095
postgres statsrepo schema nsp 0.229
postgres statsrepo index_20170123 idx 0.243
postgres statsrepo inherits inhrelid 0.443
postgres statsrepo tablespace name 0.528
postgres statsrepo table_20170122 snapid 1.000
postgres statsrepo function snapid 1.000
----------------------------------------
/* Checkpoint Activity */
----------------------------------------
Total Checkpoints : 140
Checkpoints By Time : 140
Checkpoints By XLOG : 0
Written Buffers Average : 22.736
Written Buffers Maximum : 158.000
Write Duration Average : 2.202 sec
Write Duration Maximum : 15.968 sec
----------------------------------------
/* Autovacuum Activity */
----------------------------------------
/** Vacuum Basic Statistics (Average) **/
-----------------------------------
Table Count Removed Rows Remain Rows Index Scans Duration Duration(Max) Cancels
-----------------------------------------------------------------------------------------------------------------------------
postgres.pg_catalog.pg_statistic 3 37.000 522.333 1.000 0.027 s 0.040 s 0
/** Vacuum I/O Statistics (Average) **/
-----------------------------------
Table Page Hit Page Miss Page Dirty Read Rate Write Rate
-----------------------------------------------------------------------------------------------------
postgres.pg_catalog.pg_statistic 98.000 0.333 15.333 0.121 MiB/s 4.171 MiB/s
/** Analyze Statistics **/
-----------------------------------
Table Count Duration(Total) Duration(Avg) Duration(Max) Last Analyze Time
-------------------------------------------------------------------------------------------------------------------
postgres.statsrepo.column_20170122 15 1.270 s 0.085 s 0.190 s 2017-01-22 23:31:35
postgres.statsrepo.table_20170122 8 0.620 s 0.077 s 0.080 s 2017-01-22 23:31:35
postgres.statsrepo.index_20170122 7 0.430 s 0.061 s 0.090 s 2017-01-22 22:30:32
postgres.statsrepo.log_20170122 5 0.210 s 0.042 s 0.060 s 2017-01-22 21:52:30
postgres.statsrepo.table_20170123 2 0.160 s 0.080 s 0.080 s 2017-01-23 01:31:40
postgres.statsrepo.function 10 0.150 s 0.015 s 0.050 s 2017-01-23 01:31:40
postgres.statsrepo.column_20170123 4 0.110 s 0.027 s 0.050 s 2017-01-23 01:31:41
postgres.pg_catalog.pg_class 1 0.060 s 0.060 s 0.060 s 2017-01-23 00:01:36
postgres.statsrepo.checkpoint 2 0.040 s 0.020 s 0.020 s 2017-01-22 23:06:34
postgres.statsrepo.index_20170123 2 0.040 s 0.020 s 0.020 s 2017-01-23 01:31:40
postgres.pg_catalog.pg_index 1 0.040 s 0.040 s 0.040 s 2017-01-23 00:01:36
postgres.statsrepo.tablespace 1 0.030 s 0.030 s 0.030 s 2017-01-23 01:01:39
postgres.statsrepo.log_20170123 1 0.030 s 0.030 s 0.030 s 2017-01-23 01:33:40
postgres.statsrepo.snapshot 1 0.020 s 0.020 s 0.020 s 2017-01-23 01:01:39
postgres.statsrepo.inherits 2 0.020 s 0.010 s 0.020 s 2017-01-23 01:01:39
postgres.statsrepo.autoanalyze 1 0.020 s 0.020 s 0.020 s 2017-01-22 21:53:31
postgres.statsrepo.setting 7 0.020 s 0.003 s 0.020 s 2017-01-23 00:31:38
postgres.statsrepo.schema 2 0.020 s 0.010 s 0.020 s 2017-01-22 23:31:35
----------------------------------------
/* Query Activity */
----------------------------------------
/** Functions **/
-----------------------------------
OID Database Schema Function Calls Total Time Self Time Time/Call
----------------------------------------------------------------------------------------------------------------------
16892 postgres statsrepo partition_snapshot_insert 13463 1394.401 ms 1394.401 ms 0.104 ms
16886 postgres statsrepo get_snap_date 13463 662.163 ms 662.163 ms 0.049 ms
16888 postgres statsrepo partition_new 329 394.164 ms 392.878 ms 1.198 ms
16891 postgres statsrepo create_repolog_partition 248 324.560 ms 55.473 ms 1.309 ms
16952 postgres statsrepo alert 27 264.308 ms 31.361 ms 9.789 ms
16893 postgres statsrepo partition_repolog_insert 433 153.306 ms 153.306 ms 0.354 ms
16890 postgres statsrepo create_snapshot_partition 27 136.686 ms 11.609 ms 5.062 ms
16946 postgres statsrepo alert_garbage 26 65.199 ms 58.085 ms 2.508 ms
16949 postgres statsrepo alert_fragment 26 59.429 ms 59.429 ms 2.286 ms
16386 postgres statsinfo sample 8605 56.566 ms 56.566 ms 0.007 ms
16854 postgres statsrepo get_xlog_tendency 6 43.356 ms 4.586 ms 7.226 ms
16822 postgres statsrepo xlog_location_diff 92 37.321 ms 7.695 ms 0.406 ms
16945 postgres statsrepo alert_xact 26 37.068 ms 34.292 ms 1.426 ms
16821 postgres statsrepo convert_hex 368 29.626 ms 29.626 ms 0.081 ms
16950 postgres statsrepo alert_resource 26 25.957 ms 24.879 ms 0.998 ms
16855 postgres statsrepo get_xlog_stats 3 23.556 ms 0.296 ms 7.852 ms
16951 postgres statsrepo alert_replication 26 20.483 ms 20.483 ms 0.788 ms
16947 postgres statsrepo alert_query 26 19.710 ms 19.710 ms 0.758 ms
16819 postgres statsrepo div 1501 13.712 ms 13.712 ms 0.009 ms
16407 postgres statsinfo devicestats 27 13.419 ms 12.164 ms 0.497 ms
/** Statements **/
-----------------------------------
User Database Calls Total Time Time/Call Block Read Time Block Write Time Query
------------------------------------------------------------------------------------------------------------------------
----------------------------------------
/* Lock Conflicts */
----------------------------------------
Database Schema Relation Duration Blockee PID Blocker PID Blocker GID
Blockee Query
Blocker Query
--------------------------------------------------------------------------------------------------------
----------------------------------------
/* Replication Activity */
----------------------------------------
/** Current Replication Status **/
-----------------------------------
/** Replication Delays **/
-----------------------------------
DateTime Client Flush Delay Size Replay Delay Size
-----------------------------------------------------------------------------
----------------------------------------
/* Setting Parameters */
----------------------------------------
Name Setting Unit Source
-------------------------------------------------------------------------------------------------------
TimeZone Japan configuration file
default_text_search_config pg_catalog.english configuration file
lc_messages C configuration file
listen_addresses * configuration file
log_autovacuum_min_duration 0 ms configuration file
log_checkpoints on configuration file
log_destination csvlog override
log_line_prefix %t [%p] configuration file
log_min_messages log configuration file
log_rotation_age 10080 min configuration file
log_rotation_size 0 kB configuration file
log_timezone Japan configuration file
logging_collector on override
max_stack_depth 2048 kB environment variable
pg_statsinfo.enable_maintenance 7 configuration file
pg_statsinfo.snapshot_interval 1800 s configuration file
pg_statsinfo.syslog_line_prefix %t %p %c-%l %x %q(%u, %d, %r, %a) configuration file
pg_statsinfo.syslog_min_messages error configuration file
pg_statsinfo.textlog_line_prefix %t %p %c-%l %x %q(%u, %d, %r, %a) configuration file
server_encoding UTF8 override
shared_buffers 16384 8kB configuration file
shared_preload_libraries pg_statsinfo configuration file
track_functions all configuration file
transaction_isolation read committed override
wal_buffers 512 8kB override
----------------------------------------
/* Schema Information */
----------------------------------------
/** Tables **/
-----------------------------------
Database Schema Table Columns Rows Size Size Incr Table Scans Index Scans
-----------------------------------------------------------------------------------------------------------------------------
/** Indexes **/
-----------------------------------
Database Schema Index Table Size Size Incr Index Scans Rows/Scan Disk Reads Cache Reads Index Key
-------------------------------------------------------------------------------------------------------------------------------------------------------------
----------------------------------------
/* Profiles */
----------------------------------------
Processing Executes
---------------------------------------------
-bash-4.1$
リポジトリDBとして自動作成されたスキーマの確認
pg_statsinfoの設定後に自動作成された2つのスキーマに属するテーブルを確認します。 以下の通りで正しい状態なのかは分かりませんが、ご参考に。
-bash-4.1$ psql -c "\dt statsrepo.*" リレーションの一覧 スキーマ | 名前 | 型 | 所有者 -----------+-------------------+----------+---------- statsrepo | activity | テーブル | postgres statsrepo | alert | テーブル | postgres statsrepo | alert_message | テーブル | postgres statsrepo | autoanalyze | テーブル | postgres statsrepo | autovacuum | テーブル | postgres statsrepo | autovacuum_cancel | テーブル | postgres statsrepo | checkpoint | テーブル | postgres statsrepo | column | テーブル | postgres statsrepo | column_20170122 | テーブル | postgres statsrepo | cpu | テーブル | postgres statsrepo | database | テーブル | postgres statsrepo | device | テーブル | postgres statsrepo | function | テーブル | postgres statsrepo | index | テーブル | postgres statsrepo | index_20170122 | テーブル | postgres statsrepo | inherits | テーブル | postgres statsrepo | instance | テーブル | postgres statsrepo | loadavg | テーブル | postgres statsrepo | lock | テーブル | postgres statsrepo | log | テーブル | postgres statsrepo | log_20170122 | テーブル | postgres statsrepo | memory | テーブル | postgres statsrepo | profile | テーブル | postgres statsrepo | replication | テーブル | postgres statsrepo | role | テーブル | postgres statsrepo | schema | テーブル | postgres statsrepo | setting | テーブル | postgres statsrepo | snapshot | テーブル | postgres statsrepo | statement | テーブル | postgres statsrepo | table | テーブル | postgres statsrepo | table_20170122 | テーブル | postgres statsrepo | tablespace | テーブル | postgres statsrepo | xact | テーブル | postgres statsrepo | xlog | テーブル | postgres (34 行) -bash-4.1$ psql -c "\dt statsinfo.*" マッチするリレーションが見つかりません -bash-4.1$ psql -c "\d statsinfo.*" 複合型 "statsinfo.cpustats_type" カラム | 型 ------------+-------- cpu_user | bigint cpu_system | bigint cpu_idle | bigint cpu_iowait | bigint 複合型 "statsinfo.devicestats_type" カラム | 型 --------------------+-------- device_name | text device_readsector | bigint device_readtime | bigint device_writesector | bigint device_writetime | bigint device_iototaltime | bigint ビュー "statsinfo.tablespaces" カラム | 型 | 修飾語 ------------+--------+-------- oid | oid | name | text | location | text | device | text | avail | bigint | total | bigint | spcoptions | text[] | ビュー定義: SELECT tablespaces.oid, tablespaces.name, tablespaces.location, tablespaces.device, tablespaces.avail, tablespaces.total, tablespaces.spcoptions FROM statsinfo.tablespaces() tablespaces(oid, name, location, device, avail, total, spcoptions); -bash-4.1$