Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
jaws-asa-postgres-parameter
Search
kota
September 07, 2022
Technology
1
530
jaws-asa-postgres-parameter
jaws-asa-postgres-parameter
kota
September 07, 2022
Tweet
Share
Other Decks in Technology
See All in Technology
リテール金融(キャッシュレス・ネット銀行・ネット証券)の競争環境と経済圏
8maki
0
790
推しは推せるときに推せ! プロダクトにフィードバックしていこう
nakasho
0
300
SIEMを用いて、セキュリティログ分析の可視化と分析を実現し、PDCAサイクルを回してみた
coconala_engineer
0
280
どうするコスト最適化のトレードオフ
tetsuyaooooo
1
510
JSON攻略法.pdf
miyakemito
8
5k
プロデザ! BY リクルート vol.18_リクルートのリサーチ実践組織「リサーチブーストコミュニティ」
recruitengineers
PRO
3
280
DevOpsメトリクスとアウトカムの接続にトライ!開発プロセスを通して計測できるメトリクスの活用方法
ham0215
2
240
Kernel MemoryでAzure OpenAI Serviceとお手軽データソース連携
mitsuzono
1
240
MySQL の SQL クエリチューニングの要所を掴む勉強会
andpad
2
6.2k
複雑な構成要素を持つUIとの向き合い方 〜新・支出グラフでの実例〜 / B43 TECH TALK
nakamuuu
0
140
JAWS-UG Bedrock Claude Night
yamahiro
3
570
アクセス制御にまつわる改善 / Improving access control
itkq
0
530
Featured
See All Featured
The Illustrated Children's Guide to Kubernetes
chrisshort
31
46k
Building Adaptive Systems
keathley
31
1.9k
Put a Button on it: Removing Barriers to Going Fast.
kastner
58
3k
What's new in Ruby 2.0
geeforr
337
31k
The Cult of Friendly URLs
andyhume
74
5.7k
Robots, Beer and Maslow
schacon
PRO
155
7.9k
4 Signs Your Business is Dying
shpigford
175
21k
Become a Pro
speakerdeck
PRO
11
4.5k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
17
1.4k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
2
1.3k
How to Ace a Technical Interview
jacobian
272
22k
Fireside Chat
paigeccino
21
2.6k
Transcript
Aurora Postgresの Parameter Group (監査・ログ系)を 調べてみた
自己紹介 名前:富松 広太(とみまつ こうた) 所属:justInCase Technologies Blog:https://cloud-aws-gcp.hateblo.jp/ twitter:@kotamemento (前職)2020~22
APN Ambassador、Top Engineers
はじめに 私の親はOracleです。 今日はPostgresの話です。 極力調べて来ましたが用語を Oracleと間違えていたら指定頂けますと幸いです 今日はDatabaseの話をします
会社紹介 & 背景 ・取引先に大手保険会社様が多い ・セキュリティ基準がいっぱい
要件 ・DBアクセスログ取得したい ・SQL実行ログを取得したい(パラメタ含む)
要件 ・DBアクセスログ取得したい ・SQL実行ログを取得したい(パラメタ含む) Parameter Groupがdefault値だった(現在開発中)
要件 ・DBアクセスログ取得したい ・SQL実行ログを取得したい(パラメタ含む) Parameter Groupがdefault値だった(現在開発中) 設定値を全部調べてしまおう!
要件 ・DBアクセスログ取得したい ・SQL実行ログを取得したい(パラメタ含む) ・ログ設定全般を見直したい ・その他必要な設定があれば追加したい
アクセスログ 設定項目 意味 変更後の値 log_connections 接続ログを取得するか 1(取得する) log_disconnections 接続ログ(切断時)を取得するか
1(取得する) 設定値 出力例 接続時 接続断時 接続のソース(IP)、ユーザー名、時間が出力される
SQL実行履歴を取得(パラメタ含む) 設定項目 意味 変更後の値 pgaudit.role pgauditで利用するrole名 rds_pgaudit(固定) pgaudit.log pgauditの記録対象
all -misc (checkpoint,vacuum,set等のその他扱 いの構文以外全て ) pgaudit.log_statement_once 同じSQLを複数回出力される際に省略して出力する 1(有効化) pgaudit.log_relation 関連するtable名等の情報を付与する 1(有効化) pgaudit.log_parameter SQL中のパラメータ情報を付与する 1(有効化) shared_preload_libraries pgAudit(ログに操作種別等の情報を付与し、追いやすくする設定) pgAudit(追加) 設定値 出力例 xx xx xx 実行sqlがパラメタ内容含めてログ出力される
SQL実行履歴で変更しなかった値 設定項目 意味 値(defaultのまま) log_statement sqlログを出力するか none log_min_duration_statement
SQLの実行に指定したミリ秒以上の時間がかかった場合に、 そのSQLと所要時間をログファイルに記録します - 出力例(log_statement利用時) 設定値 pgaudit利用時は適度にマスキングしてくれる log_statementがnoneでもpgauditを設定しておけば出力される パスワードが 出力されてしまう パスワードは マスキングされる
その他変更しなかった値 設定項目 意味 値(defaultのまま) log_temp_files 割り当てられたメモリよりも多くの一時領域を 必要とする処理があった場合に logするか default値 log_lock_waits
ロックにより待ちが発生した場合に logするか (default1秒以上) default値 log_autovacuum_min_duration 指定時間よりも長い vacumeをログ ※documentより初期値が推奨値でない default値 log_temp_files 割り当てられたメモリよりも多くの一時領域を 必要とする処理があった場合に logするか default値 結論 設定値 Perfomance Insightで良さそうなため出力しない
ログ設定全般 設定項目 意味 変更後の値 log_destination サーバーログの出力形式 csvlog(csv形式) force_admin_logging_level rdsadminでの操作ログ AWSからの操作(パスワード変更等)
log(取得する) 設定値 出力例(log_destination) 出力例(force_admin_logging_level) xx xx xx CSVで出力される rdsadminのログが出力される
設定項目 意味 設定値 rds.enable_plan_management query pran mangermentを有効化 db側でquery実行の必要あり 1(有効化) apg_plan_mgmt.capture_plan_baselines
実行計画を自動で収集する automatic apg_plan_mgmt.use_plan_baselines approvedまたはpreffedとして 登録した実行計画のみを利用対象とするか FALSE(default値) その他ログ以外の設定(QPM:Query Plan Management) 設定値
Query Plan Management(背景) 通常時 SQL 実行計画作成 (最適なアクセス方法を導く) DB ある時
SQL 実行計画作成 経年によりデータが変化し、 実行計画も変化する DB 定期的に統計情報収集 (データ特性を分析) 実行計画がデータに適さない時がある (性能問題となり表面化) 実行計画の適応タイミングを管理したい → Query Plan Management
Query Plan Management(利用後) 通常時 SQL 実行計画作成 DB 事前に利用可能な実行計画を選択 選択したもののみ利用可能にするか
apg_plan_mgmt.use_plan_baselines 実行計画の 候補 実行計画を自動で保持 apg_plan_mgmt.capture_plan_baselines 設定項目 意味 設定値 rds.enable_plan_management query pran mangermentを有効化 db側でquery実行の必要あり 1(有効化) apg_plan_mgmt.capture_plan_baselines 実行計画を自動で収集する automatic apg_plan_mgmt.use_plan_baselines approvedまたはpreffedとして 登録した実行計画のみを利用対象とするか FALSE(default値) 性能問題の発生想定と運用増のバランスから実行計画の収集のみ有効化
defaultから変更した値まとめ 設定項目 意味 変更後の値 log_destination サーバーログの出力形式 csvlog log_connections 接続ログを取得するか 1(取得する)
log_disconnections 接続ログ(切断時)を取得するか 1(取得する) force_admin_logging_level rdsadminでの操作ログ log pgaudit.role pgauditで利用するrole名 rds_pgaudit pgaudit.log pgauditの記録対象 all -misc pgaudit.log_statement_once 同じSQLを複数回出力される際に省略して出力する 1(有効化) pgaudit.log_relation 関連するtable名等の情報を付与する 1(有効化) pgaudit.log_parameter SQL中のパラメータ情報を付与する 1(有効化) rds.enable_plan_management query pran mangermentを有効化 db側でquery実行の必要あり 1(有効化) apg_plan_mgmt.capture_plan_baselines 実行計画を自動で収集する automatic apg_plan_mgmt.use_plan_baselines approvedまたはpreffedとして 登録した実行計画のみを利用対象とするか FALSE shared_preload_libraries pgAudit(ログに操作種別等の情報を付与し、追いやすくする設定 ) auto_explain(実行計画を自動的にログに残す設定) (追加)pgAudit pgauditとqpmはパラメタ以外も設定が必要(次ページ参考)
RDS および Aurora PostgreSQL ログの操作 https://aws.amazon.com/jp/blogs/news/working-with-rds-and-aurora-postgresql-logs-part-1/ pgaudit(有効化手順)
https://aws.amazon.com/jp/premiumsupport/knowledge-center/rds-postgresql-pgaudit Query Plan Management(有効化手順) https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.Optimize.html postgres document https://www.postgresql.jp/document/14/html/runtime-config.html 分かりやすかったブログ https://www.sraoss.co.jp/tech-blog/category/pgsql/ 参考リンク
さいごに エンジニア採用中です。カジュアル面談、twitter相談、社員紹介等なんでもありです