書籍名「内部構造から学ぶ POstgreSQL 設計運用計画の鉄則」
改訂3版
上原一樹、勝俣智成、佐伯昌樹、原田登志
技術評論社
読もうと思った経緯
Postgresqlの監視について見識を深めたいと思ったため。
背景としては業務で監視を担当することがあり、理解不足を実感したため。
対象読者
データベース管理システムの監視について概要を知りたい方
印象に残った部分
p134 監視計画
監視とは、「postgreSQLがデータベースとして健全に動作しているか」を確認すること
監視計画では以下3点を決める。
1.監視項目の選定
2.監視する間隔
3.何をもって異常とするかの閾値
p134 監視項目について 設計
Linux
CPU、メモリ、HDD、ネットワークなどのリソースを監視する。
postgres項目 設計
・データベース
コミット/ロールバック数
データベースのキャッシュヒット率
デッドロック発生有無
・テーブルとインデックス
テーブルのキャッシュヒット率
インデックスとキャッシュヒット率
・活動中のプロセㇲエンド
トランザクションからの実行時間
実行中のクエリ
p137 サーバーログの設定 設計
ログ出力箇所・・ログを出力するタイミング(時間)
ログ内容・・保持期間
p213 サーバの死活監視
死活監視とは
サーバの死活監視
サーバーの稼働状態を監視することです。
サーバーがダウンしてトラブルが起きないように監視すること
ManageEngine OpManager
https://www.manageengine.jp/products/OpManager/solution_server-availability-monitoring.html
項目
項目 | コマンド |
---|---|
サーバーが動作していること | ping -c |
PostgreSQLのプロセス確認 | ps |
SQLが実行できるか確認 | SELECT now() |
p217 正常動作の監視
・正常動作・・「想定する性能でサービスを提供すること」
・サーバーの正常動作の監視
サーバーがリソースを効率よく利用し
想定どおりに処理できているか、確認CPU,I/O,ネットワーク
項目
サーバー側
p221
項目 | コマンド |
---|---|
サーバー全体の動向を確認 | vmstat |
TCP/IP接続の利用状況 | netstat |
I/Oに関する情報 | iostat |
IO,CPU,ネットワークの詳細 | sar -u 1 or d -1 or -n ALL 1 |
PostgreSQL側
基本的にビューの値から情報を取得します。
確認項目 | ビュー名 | 実際のコマンド |
---|---|---|
コミット/ロールバックの回数 データベース単位のキャッシュ率 デッドロック発生回数 | pg_stat_database | --- |
各テーブルに対する実行された処理について例:シーケンススキャン、件数、挿入、更新 削除・・HOT更新の回数(よくわかんね><) | pg_stat_user_tables | --- |
インデックステーブルキャッシュ?? | pg_statio_user_tables pg_statio_user_indexes | --- |
プロセス、トランザクション、クエリ | pg_stat_activity | --- |
ロック待ちのプロセスを確認する | pg_locks | ---- |
実践できること or 感想
感想
監視の大まかな流れについて把握できてよかったです。
監視は業務で必ず必要な要素なので知れて良かったです。
Postgresqlに限らず、mysql,oracle,SQLServerに問わず何でも応用できる方法なのでコスパの良い知識だと思います。
・ 本書にはコマンドの結果なども記述されており とてもわかりやすいです。
実践できること
・postgresql on dockerで監視方法を作る。
監視項目をドキュメントにして残しておく。
・実際にコマンドを打って監視を経験する。
参考
富士通のサイトにしっかり書かれてますね。これ参考にしたら良さそうですね。
https://www.fujitsu.com/jp/products/software/resources/feature-stories/postgres/article-index/monitoring/