์˜์–ดํ”„๋ž‘์Šค์–ด์ŠคํŽ˜์ธ์–ด

Ad


์˜จ์›์Šค ํŒŒ๋น„์ฝ˜

check_postgres_database_sizep - ํด๋ผ์šฐ๋“œ์—์„œ์˜ ์˜จ๋ผ์ธ

Ubuntu Online, Fedora Online, Windows ์˜จ๋ผ์ธ ์—๋ฎฌ๋ ˆ์ดํ„ฐ ๋˜๋Š” MAC OS ์˜จ๋ผ์ธ ์—๋ฎฌ๋ ˆ์ดํ„ฐ๋ฅผ ํ†ตํ•ด OnWorks ๋ฌด๋ฃŒ ํ˜ธ์ŠคํŒ… ์ œ๊ณต์—…์ฒด์—์„œ check_postgres_database_sizep๋ฅผ ์‹คํ–‰ํ•˜์„ธ์š”.

์ด๊ฒƒ์€ Ubuntu Online, Fedora Online, Windows ์˜จ๋ผ์ธ ์—๋ฎฌ๋ ˆ์ดํ„ฐ ๋˜๋Š” MAC OS ์˜จ๋ผ์ธ ์—๋ฎฌ๋ ˆ์ดํ„ฐ์™€ ๊ฐ™์€ ์—ฌ๋Ÿฌ ๋ฌด๋ฃŒ ์˜จ๋ผ์ธ ์›Œํฌ์Šคํ…Œ์ด์…˜ ์ค‘ ํ•˜๋‚˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ OnWorks ๋ฌด๋ฃŒ ํ˜ธ์ŠคํŒ… ์ œ๊ณต์—…์ฒด์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” check_postgres_database_sizep ๋ช…๋ น์ž…๋‹ˆ๋‹ค.

ํ”„๋กœ๊ทธ๋žจ:

์ด๋ฆ„


check_postgres - Nagios, MRTG, Cacti ๋ฐ ๊ธฐํƒ€๋ฅผ ์œ„ํ•œ Postgres ๋ชจ๋‹ˆํ„ฐ๋ง ์Šคํฌ๋ฆฝํŠธ

์ด ๋ฌธ์„œ๋Š” check_postgres ๋ฒ„์ „ 2.22.0์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

๊ฐœ์š”


## ๋ชจ๋“  ์‹ฌ๋ณผ๋ฆญ ๋งํฌ ์ƒ์„ฑ
check_postgres --symlink

## Postgres ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค 'pluto'์— ๋Œ€ํ•œ ์—ฐ๊ฒฐ ํ™•์ธ:
check_postgres --action=connection --db=๋ช…์™•์„ฑ

## ๋™์ผํ•˜์ง€๋งŒ ์‹ฌ๋ณผ๋ฆญ ๋งํฌ ์‚ฌ์šฉ
check_postgres_connection --db=๋ช…์™•์„ฑ

## > 100๊ฐœ์˜ ์ž ๊ธˆ, > 200๊ฐœ ๋˜๋Š” > 20๊ฐœ์˜ ๋‹จ๋…์ธ ๊ฒฝ์šฐ ์ค‘์š”ํ•˜๋ฉด ๊ฒฝ๊ณ 
check_postgres_locks --warning=100 --critical="total=200:exclusive=20"

## ํฌํŠธ 6543์˜ ํ˜„์žฌ ์œ ํœด ์—ฐ๊ฒฐ ์ˆ˜๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.
check_postgres_txn_idle --port=6543 --output=๋‹จ์ˆœ

## ๋‹ค๋ฅธ ์ž‘์—…๊ณผ ์˜ต์…˜์ด ๋งŽ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ณ„์† ์ฝ์–ด์ฃผ์„ธ์š”.

์ตœ์‹  ๋‰ด์Šค์™€ ๋ฌธ์„œ๋Š” ํ•ญ์ƒ ๋‹ค์Œ์—์„œ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
http://bucardo.org/check_postgres/

๊ธฐ์ˆ 


check_postgres๋Š” ํ•˜๋‚˜ ์ด์ƒ์˜ ํ…Œ์ŠคํŠธ์— ๋Œ€ํ•ด ๋‹ค์–‘ํ•œ ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋Š” Perl ์Šคํฌ๋ฆฝํŠธ์ž…๋‹ˆ๋‹ค.
Postgres ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค. psql ํ”„๋กœ๊ทธ๋žจ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ •๋ณด๋ฅผ ์ˆ˜์ง‘ํ•˜๊ณ  ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.
Nagios, MRTG ๋˜๋Š” simple์˜ ์„ธ ๊ฐ€์ง€ ํ˜•์‹ ์ค‘ ํ•˜๋‚˜๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

์‚ฐ์ถœ ๋ชจ๋“œ
์ถœ๋ ฅ์€ "--output" ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ์ถœ๋ ฅ์€ nagios,
์›ํ•˜๋Š” ๊ฒฝ์šฐ ์Šคํฌ๋ฆฝํŠธ ์ƒ๋‹จ์—์„œ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ ์˜ต์…˜
์„ ํƒ์€ Nagios๋Š”, mrtg๋ฐ ๊ฐ„ํŽธํ•œ ์„ค์น˜. ๊ฐ๊ฐ์˜ ์ถœ๋ ฅ ์ธ์ˆ˜๋ฅผ ์ž…๋ ฅํ•˜์ง€ ์•Š์•„๋„ ๋˜๋„๋ก
--output ์ธ์ˆ˜๊ฐ€ ์ฃผ์–ด์ง€์ง€ ์•Š์œผ๋ฉด ์ถœ๋ ฅ ์œ ํ˜•์ด ์ž๋™์œผ๋กœ ์„ค์ •๋˜๊ณ ,
ํ˜„์žฌ ๋””๋ ‰ํ† ๋ฆฌ์˜ ์ด๋ฆ„์—๋Š” ์ถœ๋ ฅ ์˜ต์…˜ ์ค‘ ํ•˜๋‚˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด,
mrtg๋ผ๋Š” ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋งŒ๋“ค๊ณ  ์ด๋ฅผ ํ†ตํ•ด ์‹ฌ๋ณผ๋ฆญ ๋งํฌ๋กœ ์ฑ„์›๋‹ˆ๋‹ค. --์‹ฌ๋ณผ ๋งํฌ ์ฃผ์žฅ์€
ํ•ด๋‹น ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ์‹คํ–‰๋˜๋Š” ๋ชจ๋“  ์ž‘์—…์ด ํ•ญ์ƒ "mrtg"์˜ ์ถœ๋ ฅ์œผ๋กœ ๊ธฐ๋ณธ ์„ค์ •๋˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.
--output=simple์˜ ๋ฐ”๋กœ ๊ฐ€๊ธฐ๋กœ --simple์„ ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋””๋ ‰ํ† ๋ฆฌ ๋ช…๋ช… ํŠธ๋ฆญ.

๋‚˜๊ธฐ ์˜ค์Šค ์ถœ๋ ฅ

๊ธฐ๋ณธ ์ถœ๋ ฅ ํ˜•์‹์€ ์ •๋ณด์˜ ํ•œ ์ค„์ธ Nagios์šฉ์ž…๋‹ˆ๋‹ค.
XNUMX๊ฐœ์˜ ํŠน์ • ์ข…๋ฃŒ ์ฝ”๋“œ:

0 (ํ™•์ธ)
1(๊ฒฝ๊ณ )
2(์ค‘์š”)
3(์•Œ ์ˆ˜ ์—†์Œ)

์ถœ๋ ฅ ๋ผ์ธ์€ ์œ„์˜ ๋‹จ์–ด ์ค‘ ํ•˜๋‚˜, ์ฝœ๋ก , ๋‹ค์Œ์— ๋Œ€ํ•œ ์งง์€ ์„ค๋ช…์ž…๋‹ˆ๋‹ค.
์ธก์ •๋˜์—ˆ๋‹ค. ์ถ”๊ฐ€ ํ†ต๊ณ„ ์ •๋ณด ๋ฐ ์ด ๋ช…๋ น ์‹œ๊ฐ„
๋˜ํ•œ ์ถœ๋ ฅ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ธ์ˆ˜์— ๋Œ€ํ•œ ๋ฌธ์„œ๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค. --showperf,
--perflimit๋ฐ --์‡ผํƒ€์ž„.

MRTG ์ถœ๋ ฅ

MRTG ์ถœ๋ ฅ์€ โ€‹โ€‹XNUMX์ค„์ด๋ฉฐ ์ฒซ ๋ฒˆ์งธ ์ค„์€ ํ•ญ์ƒ ๋‹จ์ผ ๋ฒˆํ˜ธ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
์ค‘์š”์„ฑ. ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ ์ด ์ˆซ์ž๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์‹ค์ œ ๊ฐ’์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
๋ฐ”์ดํŠธ์ด์ง€๋งŒ "true" ๋˜๋Š” "false"๋งŒ ๋ฐ˜ํ™˜ํ•˜๋Š” ์ž‘์—…์˜ ๊ฒฝ์šฐ 1 ๋˜๋Š” 0์ผ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
check_postgres_version์œผ๋กœ. ๋‘ ๋ฒˆ์งธ ์ค„์€ ์ถ”๊ฐ€ ํ†ต๊ณ„์ด๋ฉฐ ๋‹ค์Œ ์šฉ๋„๋กœ๋งŒ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
๋ช‡ ๊ฐ€์ง€ ํ–‰๋™. ์„ธ ๋ฒˆ์งธ ์ค„์€ "๊ฐ€๋™ ์‹œ๊ฐ„"์„ ๋‚˜ํƒ€๋‚ด๋ฉฐ ์‚ฌ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋„ค ๋ฒˆ์งธ ์ค„์€
์„ค๋ช…์ด๋ฉฐ ์ผ๋ฐ˜์ ์œผ๋กœ ์ฒซ ๋ฒˆ์งธ ์ค„์˜ ํ†ต๊ณ„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ด๋ฆ„์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
์—์„œ ๋นผ๋ƒˆ์ง€๋งŒ, ๋™์ž‘์— ๋”ฐ๋ผ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ผ๋ถ€ ์ž‘์—…์€ ์„ ํƒ ์‚ฌํ•ญ์„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค. --mrtg ์ถœ๋ ฅ์„ ์ถ”๊ฐ€๋กœ ์ œ์–ดํ•˜๊ธฐ ์œ„ํ•œ ์ธ์ˆ˜.

๊ฐ ์ž‘์—…์— ๋Œ€ํ•œ ์ •ํ™•ํ•œ MRTG ์ถœ๋ ฅ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๊ฐ ์ž‘์—…์— ๋Œ€ํ•œ ์„ค๋ช…์„œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

๋‹จ์ˆœ, ๊ฐ„๋‹จ, ํŽธ๋ฆฌ ์ถœ๋ ฅ

๋‹จ์ˆœ ์ถœ๋ ฅ์€ ๋‹จ์ˆœํžˆ MRTG ๋ฒ„์ „์˜ ์ž˜๋ฆฐ ๋ฒ„์ „์ด๋ฉฐ ๋‹จ์ˆœํžˆ ๋‹ค์Œ์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
์ฒซ ๋ฒˆ์งธ ์ˆซ์ž์ด๊ณ  ๋‹ค๋ฅธ ๊ฒƒ์€ ์—†์Šต๋‹ˆ๋‹ค. ์ƒํƒœ๋ฅผ ํ™•์ธํ•˜๊ณ  ์‹ถ์„ ๋•Œ ๋งค์šฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.
์ž„๊ณ„๊ฐ’์— ๊ด€๊ณ„์—†์ด ๋ฌด์–ธ๊ฐ€์˜. ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ˆซ์ž ์ถœ๋ ฅ์„ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์ถœ๋ ฅ ์ธ์ˆ˜์— KB, MB, GB, TB ๋˜๋Š” EB๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

--์ถœ๋ ฅ=๋‹จ์ˆœ,MB

์„ ์ธ์žฅ ์ถœ๋ ฅ

Cacti ์ถœ๋ ฅ์€ ๋™์ผํ•œ ์ค„์— ์žˆ๋Š” ํ•˜๋‚˜ ์ด์ƒ์˜ ํ•ญ๋ชฉ์œผ๋กœ ๊ตฌ์„ฑ๋˜๋ฉฐ ๊ฐ„๋‹จํ•œ ์ด๋ฆ„,
์ฝœ๋ก , ์ˆซ์ž. ํ˜„์žฌ๋กœ์„œ๋Š” Cacti๊ฐ€ ๋ช…์‹œ์ ์œผ๋กœ ์ถœ๋ ฅ๋˜๋Š” ์œ ์ผํ•œ ์ž‘์—…์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
'dbstats'์ด๊ณ  ์ด ๊ฒฝ์šฐ์—๋Š” Cacti๊ฐ€ ์œ ์ผํ•˜๋ฏ€๋กœ --output ์˜ต์…˜์„ ์‚ฌ์šฉํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
์ด ์ž‘์—…์— ๋Œ€ํ•œ ์ถœ๋ ฅ์ž…๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋งŽ์€ ์ž‘์—…์˜ ๊ฒฝ์šฐ --simple์„ ์‚ฌ์šฉํ•˜๋ฉด Cacti๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
ํ–‰๋ณต.

๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ ์˜ต์…˜


๋ชจ๋“  ์ž‘์—…์€ ๊ณตํ†ต ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์˜ต์…˜ ์ง‘ํ•ฉ์„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค.

-H ์ด๋ฆ„ or --ํ˜ธ์ŠคํŠธ=์ด๋ฆ„
NAME์œผ๋กœ ํ‘œ์‹œ๋œ ํ˜ธ์ŠคํŠธ์— ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค. ์‰ผํ‘œ๋กœ ๊ตฌ๋ถ„๋œ ์ด๋ฆ„ ๋ชฉ๋ก์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์—ฌ๋Ÿฌ ํ˜ธ์ŠคํŠธ ์ธ์ˆ˜๊ฐ€ ํ—ˆ์šฉ๋ฉ๋‹ˆ๋‹ค. ํ˜ธ์ŠคํŠธ๊ฐ€ ์ง€์ •๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ๊ธฐ๋ณธ๊ฐ’์€ "PGHOST"์ž…๋‹ˆ๋‹ค.
ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ๋˜๋Š” ํ˜ธ์ŠคํŠธ๊ฐ€ ์ „ํ˜€ ์—†์Œ(๋กœ์ปฌ Unix ์†Œ์ผ“ ์‚ฌ์šฉ์„ ๋‚˜ํƒ€๋ƒ„).
"--dbhost"๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

-p PORT or --ํฌํŠธ=ํฌํŠธ
์ง€์ •๋œ PORT ๋ฒˆํ˜ธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค. ์‰ผํ‘œ๋กœ ๊ตฌ๋ถ„๋œ ํฌํŠธ ๋ชฉ๋ก์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์ˆซ์ž ๋ฐ ์—ฌ๋Ÿฌ ํฌํŠธ ์ธ์ˆ˜๊ฐ€ ํ—ˆ์šฉ๋ฉ๋‹ˆ๋‹ค. ํฌํŠธ ๋ฒˆํ˜ธ๋ฅผ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ๊ธฐ๋ณธ๊ฐ’
"PGPORT" ํ™˜๊ฒฝ ๋ณ€์ˆ˜์—. ์„ค์ •๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ๊ธฐ๋ณธ๊ฐ’์€ 5432์ž…๋‹ˆ๋‹ค.
"--dbport"๋„ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค.

-DB ์ด๋ฆ„ or --dbname=์ด๋ฆ„
์—ฐ๊ฒฐํ•  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ์‰ผํ‘œ๋กœ ๊ตฌ๋ถ„๋œ ์ด๋ฆ„ ๋ชฉ๋ก์ผ ์ˆ˜ ์žˆ์œผ๋ฉฐ
์—ฌ๋Ÿฌ dbname ์ธ์ˆ˜๊ฐ€ ํ—ˆ์šฉ๋ฉ๋‹ˆ๋‹ค. dbname ์˜ต์…˜์ด ์ œ๊ณต๋˜์ง€ ์•Š์œผ๋ฉด ๊ธฐ๋ณธ๊ฐ’์€
"PGDATABASE" ํ™˜๊ฒฝ ๋ณ€์ˆ˜. ์„ค์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ๊ธฐ๋ณธ๊ฐ’์€ 'postgres'์ž…๋‹ˆ๋‹ค.
psql์ด ๋ฒ„์ „ 8 ์ด์ƒ์ธ ๊ฒฝ์šฐ, ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด 'template1'์ž…๋‹ˆ๋‹ค.

-u ์‚ฌ์šฉ์ž ์ด๋ฆ„ or --dbuser=์‚ฌ์šฉ์ž ์ด๋ฆ„
์—ฐ๊ฒฐํ•  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‚ฌ์šฉ์ž์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. ์‰ผํ‘œ๋กœ ๊ตฌ๋ถ„๋œ ๋ชฉ๋ก์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์‚ฌ์šฉ์ž ์ด๋ฆ„ ๋ฐ ์—ฌ๋Ÿฌ dbuser ์ธ์ˆ˜๊ฐ€ ํ—ˆ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์ œ๊ณต๋˜์ง€ ์•Š์œผ๋ฉด,
๊ธฐ๋ณธ๊ฐ’์€ "PGUSER" ํ™˜๊ฒฝ ๋ณ€์ˆ˜์ด๊ณ , ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๊ธฐ๋ณธ๊ฐ’์€ 'postgres'์ž…๋‹ˆ๋‹ค.

--dbpass=๋น„๋ฐ€๋ฒˆํ˜ธ
๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์—ฐ๊ฒฐํ•  ์•”ํ˜ธ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด ์˜ต์…˜์˜ ์‚ฌ์šฉ์€ ๋งค์šฐ
๋‚™์‹ฌ. ๋Œ€์‹  .pgpass ๋˜๋Š” pg_service.conf ํŒŒ์ผ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

--dbservice=์ด๋ฆ„
pg_service.conf ํŒŒ์ผ ๋‚ด์˜ ์„œ๋น„์Šค ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. ๋ฒ„์ „ 9.0 ์ด์ „
Postgres, ์ด๊ฒƒ์€ ์ผ๋ฐ˜์ ์œผ๋กœ /etc/pg_service.conf์— ์žˆ๋Š” ์ „์—ญ ํŒŒ์ผ์ž…๋‹ˆ๋‹ค. ๋‹น์‹ ์ด์žˆ๋Š” ๊ฒฝ์šฐ
Postgres ๋ฒ„์ „ 9.0 ์ด์ƒ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ".pg_service.conf" ํŒŒ์ผ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ์‚ฌ์šฉ์ž์˜ ํ™ˆ ๋””๋ ‰ํ† ๋ฆฌ(์˜ˆ: nagios).

์ด ํŒŒ์ผ์—๋Š” ๊ฐ„๋‹จํ•œ ์—ฐ๊ฒฐ ์˜ต์…˜ ๋ชฉ๋ก์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์€ ๋˜ํ•œ ์ถ”๊ฐ€๋กœ ํ†ต๊ณผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค
--dbservice="maindatabase sslmode=require"์™€ ๊ฐ™์€ ์ด ์˜ต์…˜์„ ์‚ฌ์šฉํ•  ๋•Œ์˜ ์ •๋ณด

์ด ํŒŒ์ผ์— ๋Œ€ํ•œ ๋ฌธ์„œ๋Š” ๋‹ค์Œ์—์„œ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
http://www.postgresql.org/docs/current/static/libpq-pgservice.html

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ ์˜ต์…˜์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ทธ๋ฃนํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. --ํ˜ธ์ŠคํŠธ=a,b --ํ˜ธ์ŠคํŠธ=c --ํฌํŠธ=1234
--ํฌํŠธ=3344 a-1234, b-1234 ๋ฐ c-3344์— ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค. ํ•œ ๋ฒˆ ์„ค์ •ํ•˜๋ฉด ์˜ต์…˜
๋‹ค์‹œ ๋ณ€๊ฒฝ๋  ๋•Œ๊นŒ์ง€ ์ด์›”๋ฉ๋‹ˆ๋‹ค.

์˜ˆ :

--ํ˜ธ์ŠคํŠธ=a,b --ํฌํŠธ=5433 --db=c
๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค c๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํฌํŠธ 5433์— ๋‘ ๋ฒˆ ์—ฐ๊ฒฐํ•˜๊ณ  ํ˜ธ์ŠคํŠธ a์™€ b์— ์—ฐ๊ฒฐ: a-5433-c b-5433-c

--ํ˜ธ์ŠคํŠธ=a,b --ํฌํŠธ=5433 --db=c,d
๋„ค ๋ฒˆ ์—ฐ๊ฒฐ: a-5433-c a-5433-d b-5433-c b-5433-d

--ํ˜ธ์ŠคํŠธ=a,b --ํ˜ธ์ŠคํŠธ=foo --ํฌํŠธ=1234 --ํฌํŠธ=5433 --db=e,f
1234๋ฒˆ ์—ฐ๊ฒฐ: a-1234-e a-1234-f b-1234-e b-5433-f foo-5433-e foo-XNUMX-f

--ํ˜ธ์ŠคํŠธ=a,b --ํ˜ธ์ŠคํŠธ=x --ํฌํŠธ=5432,5433 --dbuser=์•จ๋ฆฌ์Šค --dbuser=bob -db=baz
์„ธ ๋ฒˆ ์—ฐ๊ฒฐ: a-5432-alice-baz b-5433-alice-baz x-5433-bob-baz

--dbservice="foo" --ํฌํŠธ=5433
pg_service.conf ํŒŒ์ผ์—์„œ ๋ช…๋ช…๋œ ์„œ๋น„์Šค 'foo'๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์—ฐ๊ฒฐํ•˜์ง€๋งŒ ํฌํŠธ๋ฅผ ์žฌ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

๊ธฐํƒ€ ์˜ต์…˜


๊ธฐํƒ€ ์˜ต์…˜์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

--action=์ด๋ฆ„
์‹คํ–‰ ์ค‘์ธ ์ž‘์—…์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ์‹ฌ๋ณผ๋ฆญ ๋งํฌ๋œ ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ํ•œ ํ•„์ˆ˜
๊ฒฝ์šฐ ํŒŒ์ผ ์ด๋ฆ„์ด ์ž‘์—…์„ ํŒŒ์•…ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

--๊ฒฝ๊ณ =VAL or -w VAL
๊ฒฝ๊ณ  ๊ฒฝ๊ณ ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ์ž„๊ณ„๊ฐ’์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์ด์— ๋Œ€ํ•œ ์œ ํšจํ•œ ์˜ต์…˜
์˜ต์…˜์€ ์‚ฌ์šฉ๋œ ์ž‘์—…์— ๋”ฐ๋ผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

--์ค‘์š”=VAL or -c VAL
์œ„ํ—˜ ๊ฒฝ๋ณด๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ์ž„๊ณ„๊ฐ’์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์ด์— ๋Œ€ํ•œ ์œ ํšจํ•œ ์˜ต์…˜
์˜ต์…˜์€ ์‚ฌ์šฉ๋œ ์ž‘์—…์— ๋”ฐ๋ผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

-t VAL or --timeout=๋ฐœ
์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์ˆ˜ํ–‰ ์ค‘์ธ ์ž‘์—…์„ ์ค‘๋‹จํ•˜๊ณ  ์‹œ๊ฐ„ ์ดˆ๊ณผ๋ฅผ ์ดˆ ๋‹จ์œ„๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
์•Œ ์ˆ˜ ์—†๋Š” ์ƒํƒœ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์‹œ๊ฐ„ ์ดˆ๊ณผ๋Š” ์ „์ฒด๊ฐ€ ์•„๋‹ˆ๋ผ Postgres ํด๋Ÿฌ์Šคํ„ฐ๋ณ„๋กœ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
์Šคํฌ๋ฆฝํŠธ. ๊ธฐ๋ณธ๊ฐ’์€ 10์ž…๋‹ˆ๋‹ค. ๋‹จ์œ„๋Š” ํ•ญ์ƒ ์ดˆ ๋‹จ์œ„์ž…๋‹ˆ๋‹ค.

--๊ฐ€์ • ๋Œ€๊ธฐ ๋ชจ๋“œ
์ง€์ •๋˜๋ฉด ๋จผ์ € ๋Œ€๊ธฐ ๋ชจ๋“œ์˜ ์„œ๋ฒ„๊ฐ€ ์ˆ˜ํ–‰๋˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค(--datadir
ํ•„์ˆ˜), ๊ทธ๋ ‡๋‹ค๋ฉด SQL ์ฟผ๋ฆฌ๊ฐ€ ํ•„์š”ํ•œ ๋ชจ๋“  ๊ฒ€์‚ฌ๋Š” ๋ฌด์‹œ๋˜๊ณ  "์„œ๋ฒ„
๋Œ€๊ธฐ ๋ชจ๋“œ์—์„œ" ์ƒํƒœ๊ฐ€ OK์ธ ๋Œ€์‹  ๋ฐ˜ํ™˜๋ฉ๋‹ˆ๋‹ค.

์˜ˆ:

postgres@db$./check_postgres --action=version --warning=8.1 --datadir /var/lib/postgresql/8.3/main/ --assume-standby-mode
POSTGRES_VERSION OK: ์„œ๋ฒ„๊ฐ€ ๋Œ€๊ธฐ ๋ชจ๋“œ์— ์žˆ์Œ | ์‹œ๊ฐ„=0.00

--๊ฐ€์ • ์ œํ’ˆ
์ง€์ •๋œ ๊ฒฝ์šฐ ํ”„๋กœ๋•์…˜ ๋ชจ๋“œ์˜ ์„œ๋ฒ„๊ฐ€ ์ˆ˜ํ–‰๋˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค(--datadir ํ•„์š”).
์ด ์˜ต์…˜์€ ("symlink: check_postgres_checkpoint")์—๋งŒ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ:

postgres@db$./check_postgres --action=checkpoint --datadir /var/lib/postgresql/8.3/main/ --assume-prod
POSTGRES_CHECKPOINT OK: ๋งˆ์ง€๋ง‰ ์ฒดํฌํฌ์ธํŠธ๋Š” 72์ดˆ ์ „ | ๋‚˜์ด=72;;300 ๋ชจ๋“œ=๋งˆ์Šคํ„ฐ

-h or --๋„์›€
๋ชจ๋“  ์ž‘์—… ๋ฐ ์˜ต์…˜์— ๋Œ€ํ•œ ์š”์•ฝ์ด ํฌํ•จ๋œ ๋„์›€๋ง ํ™”๋ฉด์„ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

--๋‚จ์„ฑ
์ „์ฒด ์„ค๋ช…์„œ๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

-V or --๋ฒˆ์—ญ
ํ˜„์žฌ ๋ฒ„์ „์„ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

-v or --๋ง ์ˆ˜๊ฐ€ ๋งŽ์€
์ƒ์„ธ ์ˆ˜์ค€์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ๋ ˆ๋ฒจ์„ ๋†’์ด๊ธฐ ์œ„ํ•ด ๋‘ ๋ฒˆ ์ด์ƒ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋กœ ์„ค์ •
XNUMX๊ฐœ ์ด์ƒ(์ฆ‰, "-v -v -v" ์‹คํ–‰)์€ ๋””๋ฒ„๊น… ์ •๋ณด๋ฅผ ์ผญ๋‹ˆ๋‹ค.
stderr๋กœ ์ „์†ก๋˜๋Š” ์ด ํ”„๋กœ๊ทธ๋žจ์˜ ๊ฒฝ์šฐ.

--showperf=๋ฐœ
์ถ”๊ฐ€ ์„ฑ๋Šฅ ๋ฐ์ดํ„ฐ๋ฅผ ํ‘œ์ค€ Nagios ํ˜•์‹์œผ๋กœ ์ถœ๋ ฅํ• ์ง€ ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค.
name=value๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŒŒ์ดํ”„ ๊ธฐํ˜ธ ๋’ค์˜ ๋ฌธ์ž์—ด). VAL์€ 0 ๋˜๋Š” 1์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’
is 1. Nagios ์ถœ๋ ฅ ๋ชจ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ์—๋งŒ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

--perflimit=๋‚˜
์‚ฌ์šฉ ์‹œ ๋ณด๊ณ ๋˜๋Š” ๊ด€์‹ฌ ํ•ญ๋ชฉ ์ˆ˜์— ๋Œ€ํ•œ ์ œํ•œ์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
์‡ผํผ ์˜ต์…˜. ์ด๊ฒƒ์€ ๋งŽ์€ ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ์ž‘์—…์—๋งŒ ์˜ํ–ฅ์„ ๋ฏธ์นฉ๋‹ˆ๋‹ค.
๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ•ญ๋ชฉ ํ…Œ์ด๋ธ” ํฌ๊ธฐ. ๊ธฐ๋ณธ๊ฐ’์€ 0 ๋˜๋Š” ์ œํ•œ ์—†์Œ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์„ ์‚ฌ์šฉํ•  ๋•Œ ์ฃผ์˜ํ•˜์‹ญ์‹œ์˜ค
์™€ ๋”๋ถˆ์–ด --ํฌํ•จํ•˜๋‹ค or --๋“ค์–ด์˜ค์ง€ ๋ชปํ•˜๊ฒŒ ํ•˜๋‹ค ์˜ต์…˜, ์ด๋Ÿฌํ•œ ์ œํ•œ์ด ์™„๋ฃŒ๋˜๋ฉด ์‹œ๊ฐ„ ๋‚ด์— ์ „์—,
์ฟผ๋ฆฌ๊ฐ€ ์‹คํ–‰๋˜์—ˆ์œผ๋ฏ€๋กœ ํ•œ๋„์— ์›ํ•˜๋Š” ํ•ญ๋ชฉ์ด ํฌํ•จ๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งŒ ์†Œ์š”
Nagios ์ถœ๋ ฅ ๋ชจ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ํšจ๊ณผ.

--showtime=๋ฐœ
๊ฐ ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ฐ ๊ฑธ๋ฆฐ ์‹œ๊ฐ„์ด ์ถœ๋ ฅ์— ํ‘œ์‹œ๋˜๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. VAL์€ 0์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
๋˜๋Š” 1. ๊ธฐ๋ณธ๊ฐ’์€ 1์ž…๋‹ˆ๋‹ค. ์‡ผํผ ์ผœ์ ธ ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ์—๋งŒ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.
Nagios ์ถœ๋ ฅ ๋ชจ๋“œ.

--์‹œํ—˜
ํ…Œ์ŠคํŠธ ๋ชจ๋“œ๋ฅผ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค. ์•„๋ž˜์˜ "ํ…Œ์ŠคํŠธ ๋ชจ๋“œ" ์„น์…˜์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

--PGBINDIR=๊ฒฝ๋กœ
psql ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ์ฐพ์„ ์œ„์น˜๋ฅผ ์Šคํฌ๋ฆฝํŠธ์— ์•Œ๋ ค์ค๋‹ˆ๋‹ค. ๋‘˜ ์ด์ƒ์ธ ๊ฒฝ์šฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.
์‹œ์Šคํ…œ์— ์žˆ๋Š” PostgreSQL ์‹คํ–‰ ํŒŒ์ผ์˜ ๋ฒ„์ „ ๋˜๋Š” ์‹œ์Šคํ…œ์— ์—†๋Š” ๊ฒฝ์šฐ
๊ธธ. ์ด ์˜ต์…˜์€ ๋ชจ๋‘ ๋Œ€๋ฌธ์ž์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ์ด ์˜ต์…˜์€ ์ง€์›
์ˆ˜. ํ™œ์„ฑํ™”ํ•˜๋ ค๋ฉด ์Šคํฌ๋ฆฝํŠธ ์ƒ๋‹จ ๊ทผ์ฒ˜์— ์žˆ๋Š” $NO_PSQL_OPTION์„ ๋ณ€๊ฒฝํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
0์œผ๋กœ ์„ค์ •ํ•˜์‹ญ์‹œ์˜ค. ๊ฐ€๋Šฅํ•˜๋ฉด ์ด ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์ง€ ๋ง๊ณ  ๋Œ€์‹  ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค.
์”จ ๋˜๋Š” ์Šคํฌ๋ฆฝํŠธ ์ƒ๋‹จ ๊ทผ์ฒ˜์— ์žˆ๋Š” ํ•˜๋“œ ์ฝ”๋”ฉ๋œ $PGBINDIR ๋ณ€์ˆ˜
์‚ฌ์šฉํ•  PostgreSQL์˜ ๊ฒฝ๋กœ์ž…๋‹ˆ๋‹ค.

--PSQL=๊ฒฝ๋กœ
(๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š์Œ, ์ด ์„ ํƒ๊ถŒ ๏ผ•์›” be ์ œ๊ฑฐ in a ๋ฏธ๋ž˜ ํ’€์–ด ์ฃผ๋‹ค!) ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์–ด๋””์— ์žˆ๋Š”์ง€ ์•Œ๋ ค์ค๋‹ˆ๋‹ค.
psql ํ”„๋กœ๊ทธ๋žจ์„ ์ฐพ๊ธฐ ์œ„ํ•ด. ๋‘˜ ์ด์ƒ์˜ psql ๋ฒ„์ „์ด ์žˆ๋Š” ๊ฒฝ์šฐ์— ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.
์‹œ์Šคํ…œ์—์„œ ์‹คํ–‰ ๊ฐ€๋Šฅํ•˜๊ฑฐ๋‚˜ ๊ฒฝ๋กœ์— psql ํ”„๋กœ๊ทธ๋žจ์ด ์—†๋Š” ๊ฒฝ์šฐ. ์ด
์˜ต์…˜์€ ๋ชจ๋‘ ๋Œ€๋ฌธ์ž์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ์ด ์˜ต์…˜์€ ์ง€์› ์ˆ˜. ํ™œ์„ฑํ™”ํ•˜๋ ค๋ฉด
์Šคํฌ๋ฆฝํŠธ ์ƒ๋‹จ ๊ทผ์ฒ˜์˜ $NO_PSQL_OPTION์„ 0์œผ๋กœ ๋ณ€๊ฒฝํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ ์˜ต์…˜์„ ์„ ํƒํ•˜๊ณ  ๋Œ€์‹  psql ์œ„์น˜๋ฅผ $PSQL ๋ณ€์ˆ˜์— ํ•˜๋“œ ์ฝ”๋”ฉํ•˜์‹ญ์‹œ์˜ค.
๋˜ํ•œ ์Šคํฌ๋ฆฝํŠธ ์ƒ๋‹จ ๊ทผ์ฒ˜์— ์žˆ์Šต๋‹ˆ๋‹ค.

--์‹ฌ๋ณผ ๋งํฌ
๊ฐ ์ž‘์—…์— ๋Œ€ํ•œ ๊ธฐ๋ณธ ํ”„๋กœ๊ทธ๋žจ์— ๋Œ€ํ•œ ์‹ฌ๋ณผ๋ฆญ ๋งํฌ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

--์ถœ๋ ฅ=๋ฐœ
๋‹ค์–‘ํ•œ ํ”„๋กœ๊ทธ๋žจ์—์„œ ์‚ฌ์šฉํ•  ์ถœ๋ ฅ ํ˜•์‹์„ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€
'๋‚˜๊ธฐ์˜ค์Šค'. ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์˜ต์…˜์€ 'nagios', 'mrtg', 'simple' ๋ฐ 'cacti'์ž…๋‹ˆ๋‹ค.

--mrtg=๋ฐœ
๋ช‡ ๊ฐ€์ง€ ํŠน์ • ์ž‘์—…์— ๋Œ€ํ•ด MRTG ๋˜๋Š” ๋‹จ์ˆœ ์ถœ๋ ฅ์—๋งŒ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

--debug์ถœ๋ ฅ=VAL
๋””๋ฒ„๊น…์— ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด psql์—์„œ ๋ฐ˜ํ™˜๋œ ์ •ํ™•ํ•œ ๋ฌธ์ž์—ด์„ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค. ๊ฐ’์€ XNUMX ๋˜๋Š”
์ถœ๋ ฅ์ด ํ‘œ์‹œ๋˜๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ์ถ”๊ฐ€ ๋ฌธ์ž, ์—ฌ๊ธฐ์„œ 'a' = all, 'c'
= ์œ„ํ—˜, 'w' = ๊ฒฝ๊ณ , 'o' = ์ •์ƒ, 'u' = ์•Œ ์ˆ˜ ์—†์Œ. ๋ฌธ์ž๋ฅผ ๊ฒฐํ•ฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

--get_method=VAL
"new_version_cp"์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๋ฐฉ๋ฒ•์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
"new_version_pg", "new_version_bc", "new_version_box" ๋ฐ "new_version_tnm"๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
์›น์—์„œ ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜ค๊ธฐ ์œ„ํ•ด ๋‹ค์Œ ํ”„๋กœ๊ทธ๋žจ์ด ์ˆœ์„œ๋Œ€๋กœ ์‹œ๋„๋ฉ๋‹ˆ๋‹ค. GET,
wget, fetch, curl, lynx, ๋งํฌ. ํ•˜๋‚˜๋งŒ ์‚ฌ์šฉํ•˜๋„๋ก(๋”ฐ๋ผ์„œ ์ œ๊ฑฐํ•˜๋ ค๋ฉด
๊ทธ ์ค‘ ํ•˜๋‚˜๊ฐ€ ์ž‘๋™ํ•  ๋•Œ๊นŒ์ง€ ๋‹ค๋ฅธ ๋ชจ๋“  ๊ฒƒ์„ ์‹œ๋„ํ•˜๋Š” ์˜ค๋ฒ„ํ—ค๋“œ), ์ด๋ฆ„ ์ค‘ ํ•˜๋‚˜๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž…๋ ฅํ•˜์‹ญ์‹œ์˜ค.
get_method์— ๋Œ€ํ•œ ์ธ์ˆ˜. ์˜ˆ๋ฅผ ๋“ค์–ด, BSD ์ƒ์ž๋Š” ๋‹ค์Œ ํ–‰์„ ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๊ทธ๋“ค์˜ ".check_postgresrc" ํŒŒ์ผ:

get_method=๊ฐ€์ ธ์˜ค๊ธฐ

--์–ธ์–ด=VAL
๋ชจ๋“  ์ถœ๋ ฅ ๋ฉ”์‹œ์ง€์— ์‚ฌ์šฉํ•  ์–ธ์–ด๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ์ด๊ฒƒ์€ ๋‹ค์Œ์œผ๋กœ ๊ฐ์ง€๋ฉ๋‹ˆ๋‹ค.
ํ™˜๊ฒฝ ๋ณ€์ˆ˜ LC_ALL, LC_MESSAGES ๋ฐ LANG๋ฅผ ๊ฒ€์‚ฌํ•˜์ง€๋งŒ ์ด๊ฒƒ์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
์˜ต์…˜์€ ์ด๋Ÿฌํ•œ ๊ฐ์ง€๋ฅผ ๋ฌด์‹œํ•ฉ๋‹ˆ๋‹ค.

ACTIONS


์Šคํฌ๋ฆฝํŠธ๋Š” ํ•˜๋‚˜ ์ด์ƒ์˜ ์ž‘์—…์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. --action ํ”Œ๋ž˜๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋‚ด๋ถ€์— ์ž‘์—… ์ด๋ฆ„์ด ํฌํ•จ๋œ ๊ธฐ๋ณธ ํŒŒ์ผ์— ๋Œ€ํ•œ ์‹ฌ๋ณผ๋ฆญ ๋งํฌ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์„์œ„ํ•œ
์˜ˆ๋ฅผ ๋“ค์–ด "timesync" ์ž‘์—…์„ ์‹คํ–‰ํ•˜๋ ค๋ฉด ๋‹ค์Œ ์ค‘ ํ•˜๋‚˜๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

check_postgres --action=ํƒ€์ž„๋™๊ธฐํ™”

๋˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ”„๋กœ๊ทธ๋žจ์„ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค.

check_postgres_timesync

--symlinks ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ชจ๋“  ์‹ฌ๋ณผ๋ฆญ ๋งํฌ๊ฐ€ ํ˜„์žฌ ๋””๋ ‰ํ† ๋ฆฌ์— ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

ํŽ„ check_postgres --symlinks

ํŒŒ์ผ ์ด๋ฆ„์ด ์ด๋ฏธ ์žˆ๋Š” ๊ฒฝ์šฐ ๋ฎ์–ด์“ฐ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํŒŒ์ผ์ด ์กด์žฌํ•˜๊ณ  ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ
symlink, "--action=build_symlinks_force"๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ•์ œ๋กœ ๋ฎ์–ด์“ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋Œ€๋ถ€๋ถ„์˜ ํ–‰๋™์€ --๊ฒฝ๊ณ  ๋ฐ --๋น„ํŒ์ ์ธ ์šฐ๋ฆฌ๊ฐ€ ๋ณ€๊ฒฝํ•˜๋Š” ์ง€์ ์„ ๋‚˜ํƒ€๋‚ด๋Š” ์˜ต์…˜
OK์—์„œ WARNING์œผ๋กœ, ๊ทธ๋ฆฌ๊ณ  CRITICAL๋กœ ์ด๋™ํ•˜๋Š” ์ง€์ . ํฌ๋ฆฌํ‹ฐ์ปฌ์€
ํ•ญ์ƒ ๋จผ์ € ํ™•์ธํ•˜๊ณ  ๊ฒฝ๊ณ ๋ฅผ ์œ„ํ—˜๊ณผ ๋™์ผํ•˜๊ฒŒ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด ํšจ๊ณผ์ ์ธ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.
๊ฒฝ๊ณ ๋ฅผ ๋„๊ณ  ํ•ญ์ƒ ๋น„ํŒ์„ ์ œ๊ณตํ•˜์‹ญ์‹œ์˜ค.

ํ˜„์žฌ ์ง€์›๋˜๋Š” ์ž‘์—…์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์•„์นด์ด๋ธŒ_๋ ˆ๋””
("symlink: check_postgres_archive_ready") ํ™•์žฅ์ž๊ฐ€ ์žˆ๋Š” WAL ํŒŒ์ผ ์ˆ˜๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. .์ค€๋น„๊ฐ€ ๋œ
์— ์กด์žฌ pg_xlog/์•„์นด์ด๋ธŒ_์ƒํƒœ ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ๋””๋ ‰ํ† ๋ฆฌ.
์ด ์ž‘์—…์€ ์ˆ˜ํผ์œ ์ €๋กœ ์‹คํ–‰ํ•ด์•ผ ์˜ ๋‚ด์šฉ์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
pg_xlog/์•„์นด์ด๋ธŒ_์ƒํƒœ ์˜ˆ๋ฐฐ ๊ทœ์น™์„œ. ์ด ์ž‘์—…์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ์ตœ์†Œ ๋ฒ„์ „์€ Postgres 8.1์ž…๋‹ˆ๋‹ค.
XNUMXD๋ดํƒˆ์˜ --๊ฒฝ๊ณ  ๊ณผ --๋น„ํŒ์ ์ธ ์˜ต์…˜์€ ๋‹จ์ˆœํžˆ .์ค€๋น„๊ฐ€ ๋œ ํŒŒ์ผ
pg_xlog/์•„์นด์ด๋ธŒ_์ƒํƒœ ์˜ˆ๋ฐฐ ๊ทœ์น™์„œ. ์ผ๋ฐ˜์ ์œผ๋กœ ์ด ๊ฐ’์€ ๋‚ฎ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.
์•„์นด์ด๋ธŒ ๋ฉ”์ปค๋‹ˆ์ฆ˜, ์šฐ๋ฆฌ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๊ฐ€๋Šฅํ•œ ํ•œ ๋นจ๋ฆฌ WAL ํŒŒ์ผ์„ ์•„์นด์ด๋ธŒํ•˜๊ธฐ๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค.

์•„์นด์ด๋ธŒ ๋ช…๋ น์ด ์‹คํŒจํ•˜๋ฉด ์‚ฌ์šฉ์ž์˜ WAL ์ˆ˜ pg_xlog ๋””๋ ‰ํ† ๋ฆฌ๋Š” ๋‹ค์Œ๊นŒ์ง€ ์ฆ๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
๋ชจ๋“  ๋””์Šคํฌ ๊ณต๊ฐ„์„ ์†Œ์ง„ํ•˜๊ณ  PostgreSQL์„ ์ฆ‰์‹œ ์ค‘์ง€ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ 1: "pluto" ํ˜ธ์ŠคํŠธ์—์„œ ์ค€๋น„๋œ WAL ํŒŒ์ผ ์ˆ˜๊ฐ€ 10๊ฐœ ์ดํ•˜์ธ์ง€ ํ™•์ธ

check_postgres_archive_ready --host=pluto --์ค‘์š”=10

MRTG ์ถœ๋ ฅ์˜ ๊ฒฝ์šฐ 1ํ–‰์— ์ค€๋น„๋œ WAL ํŒŒ์ผ ์ˆ˜๋ฅผ ๋ณด๊ณ ํ•ฉ๋‹ˆ๋‹ค.

autovac_freeze
("symlink: check_postgres_autovac_freeze") ๊ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€
ํฌ์ŠคํŠธ๊ทธ๋ ˆ์Šค autovacuum_freeze_max_age ํ™˜๊ฒฝ. ์ด ์ž‘์—…์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ๋งŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.
๋ฒ„์ „ 8.2 ์ด์ƒ. NS --๊ฒฝ๊ณ  ๊ณผ --๋น„ํŒ์ ์ธ ์˜ต์…˜์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ‘œํ˜„๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
๋ฐฑ๋ถ„์œจ. ๊ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์žˆ๋Š” ํŠธ๋žœ์žญ์…˜์˜ '๊ธฐ๊ฐ„'์€ ๋‹ค์Œ๊ณผ ๋น„๊ต๋ฉ๋‹ˆ๋‹ค.
autovacuum_freeze_max_age ์„ค์ •(๊ธฐ๋ณธ๊ฐ’์€ 200์–ต)์œผ๋กœ ๋ฐ˜์˜ฌ๋ฆผ
๋ฐฑ๋ถ„์œจ. ๊ธฐ๋ณธ๊ฐ’์€ 90% ๊ฒฝ๊ณ ์™€ 95% ํฌ๋ฆฌํ‹ฐ์ปฌ์„ ์œ„ํ•ด. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค
๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•„ํ„ฐ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. --ํฌํ•จํ•˜๋‹ค ๊ณผ --๋“ค์–ด์˜ค์ง€ ๋ชปํ•˜๊ฒŒ ํ•˜๋‹ค ์˜ต์…˜. "๊ธฐ๋ณธ ํ•„ํ„ฐ๋ง" ์ฐธ์กฐ
์ž์„ธํ•œ ๋‚ด์šฉ์€ ์„น์…˜์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

์˜ˆ 1: ํฌํŠธ 5432์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ 97%๋ฅผ ์ดˆ๊ณผํ•˜๋ฉด ๊ฒฝ๊ณ ๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

check_postgres_autovac_freeze --port=5432 --warning="97%"

MRTG ์ถœ๋ ฅ์˜ ๊ฒฝ์šฐ ๊ฐ€์žฅ ๋†’์€ ์ „์ฒด ๋ฐฑ๋ถ„์œจ์ด ์ฒซ ๋ฒˆ์งธ ์ค„์— ๋ณด๊ณ ๋˜๊ณ 
๊ฐ€์žฅ ๋†’์€ ์—ฐ๋ น์€ ๋‘ ๋ฒˆ์งธ ์ค„์— ๋ณด๊ณ ๋ฉ๋‹ˆ๋‹ค. ๋ฐฑ๋ถ„์œจ์ด ์žˆ๋Š” ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค
์ฒซ ๋ฒˆ์งธ ์ค„์€ ํŒŒ์ดํ”„ ๊ธฐํ˜ธ๋กœ ๊ตฌ๋ถ„๋œ ๋„ค ๋ฒˆ์งธ ์ค„์— ๋ณด๊ณ ๋ฉ๋‹ˆ๋‹ค.

๋ฐฑ์—”๋“œ
("symlink: check_postgres_backends") ํ˜„์žฌ ์—ฐ๊ฒฐ ์ˆ˜๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
๋” ๋งŽ์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, ์„ ํƒ์ ์œผ๋กœ ํ—ˆ์šฉ๋œ ์ตœ๋Œ€๊ฐ’๊ณผ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค.
Postgres ๊ตฌ์„ฑ ๋ณ€์ˆ˜ max_connections. ๊ทธ๋งŒํผ --๊ฒฝ๊ณ  ๊ณผ --๋น„ํŒ์ ์ธ ์˜ต์…˜
์„ธ ๊ฐ€์ง€ ํ˜•ํƒœ ์ค‘ ํ•˜๋‚˜๋ฅผ ์ทจํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฒซ์งธ, ๊ฐ„๋‹จํ•œ ์ˆซ์ž๊ฐ€ ์ฃผ์–ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๊ฒฝ๊ณ ๊ฐ€ ์ œ๊ณต๋  ์—ฐ๊ฒฐ ์ˆ˜์ž…๋‹ˆ๋‹ค. ์ด ์„ ํƒ์€ ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
max_connections ํ™˜๊ฒฝ. ๋‘˜์งธ, ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์—ฐ๊ฒฐ์˜ ๋ฐฑ๋ถ„์œจ์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์…‹์งธ, ๋‚จ์€ ์—ฐ๊ฒฐ ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์Œ์ˆ˜๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๊นŒ์ง€ max_connections ๋„๋‹ฌํ–ˆ์Šต๋‹ˆ๋‹ค. ์— ๋Œ€ํ•œ ๊ธฐ๋ณธ๊ฐ’ --๊ฒฝ๊ณ  ๊ณผ --๋น„ํŒ์ ์ธ are
'90%'์™€ '95%'. ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ํ•„ํ„ฐ๋งํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. --ํฌํ•จํ•˜๋‹ค ๊ณผ --๋“ค์–ด์˜ค์ง€ ๋ชปํ•˜๊ฒŒ ํ•˜๋‹ค
์˜ต์…˜. ์ž์„ธํ•œ ๋‚ด์šฉ์€ "๊ธฐ๋ณธ ํ•„ํ„ฐ๋ง" ์„น์…˜์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

์œ ํœด ์ƒํƒœ๊ฐ€ ์•„๋‹Œ ํ”„๋กœ์„ธ์Šค๋งŒ ๋ณด๋ ค๋ฉด ๋‹ค์Œ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. --๋…ธ์ด๋“ค ๋…ผ์Ÿ. ์‚ฌ์šฉ์ž๊ฐ€
์ด ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜๋ ค๋ฉด ์ˆ˜ํผ์œ ์ €์—ฌ์•ผ ํ•˜๋ฏ€๋กœ ์—ฐ๊ฒฐํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ 1: ํ˜ธ์ŠคํŠธ quirm์˜ ์—ฐ๊ฒฐ ์ˆ˜๊ฐ€ 120์— ๋„๋‹ฌํ•˜๋ฉด ๊ฒฝ๊ณ ๋ฅผ ์ œ๊ณตํ•˜๊ณ 
150์— ๋„๋‹ฌํ•˜๋ฉด ์น˜๋ช…์ ์ž…๋‹ˆ๋‹ค.

check_postgres_backends --host=quirm --warning=120 --์ค‘์š”=150

์˜ˆ 2: ํ˜ธ์ŠคํŠธ์—์„œ max_connections ์„ค์ •์˜ 75%์— ๋„๋‹ฌํ•˜๋ฉด ์ž„๊ณ„๊ฐ’ ์ œ๊ณต
lancre ๋˜๋Š” lancre2.

check_postgres_backends --warning='75%' --critical='75%' --host=lancre,lancre2

์˜ˆ 3: ํ˜ธ์ŠคํŠธ์— ์—ฐ๊ฒฐ ์Šฌ๋กฏ์ด 10๊ฐœ๋งŒ ๋” ๋‚จ์•„ ์žˆ์„ ๋•Œ ๊ฒฝ๊ณ ๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.
ํ”Œ๋ผ์Šค๋ฏธ๋“œ, ๊ทธ๋ฆฌ๊ณ  5๊ฐœ๋งŒ ๋‚จ์•˜์„ ๋•Œ ์ž„๊ณ„๊ฐ’์ž…๋‹ˆ๋‹ค.

check_postgres_backends --warning=-10 --critical=-5 --host=ํ”Œ๋ผ์Šค๋ฏธ๋“œ

์˜ˆ 4: ์ด๋ฆ„์— "test"๊ฐ€ ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ œ์™ธํ•œ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ํ™•์ธํ•˜์ง€๋งŒ ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค.
์ด๋ฆ„์€ "pg_greatest"์ž…๋‹ˆ๋‹ค. ์ฒ˜์Œ ๋‘ ํ˜ธ์ŠคํŠธ์—์„œ๋Š” ํฌํŠธ 5432๋กœ ์—ฐ๊ฒฐํ•˜๊ณ  ํ˜ธ์ŠคํŠธ์—์„œ๋Š” ํฌํŠธ 5433์œผ๋กœ ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค.
์„ธ ๋ฒˆ์งธ. ์šฐ๋ฆฌ๋Š” 30๊ฐœ ์ด์ƒ์˜ ์—ฐ๊ฒฐ์— ๋„๋‹ฌํ•  ๋•Œ ํ•ญ์ƒ ํฌ๋ฆฌํ‹ฐ์ปฌ์„ ๋˜์ง€๊ธฐ๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค.

check_postgres_backends --dbhost=hong,kong --dbhost=fooey --dbport=5432 --dbport=5433 --warning=30 --critical=30 --exclude="~test" --include="pg_greatest,~prod "

MRTG ์ถœ๋ ฅ์˜ ๊ฒฝ์šฐ ์ฒซ ๋ฒˆ์งธ ์ค„์— ์—ฐ๊ฒฐ ์ˆ˜๊ฐ€ ๋ณด๊ณ ๋˜๊ณ  ๋„ค ๋ฒˆ์งธ ์ค„์— ์—ฐ๊ฒฐ ์ˆ˜๊ฐ€ ๋ณด๊ณ ๋ฉ๋‹ˆ๋‹ค.
ํ–‰์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ด๋ฆ„๊ณผ ํ˜„์žฌ maximum_connections๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด์ƒ์ธ ๊ฒฝ์šฐ
ํ•˜๋‚˜์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์ฟผ๋ฆฌ๋˜๋ฉด ์—ฐ๊ฒฐ ์ˆ˜๊ฐ€ ๊ฐ€์žฅ ๋งŽ์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์ถœ๋ ฅ๋ฉ๋‹ˆ๋‹ค.

๊ณ ์ฐฝ์ฆ
("symlink: check_postgres_bloat") ํ…Œ์ด๋ธ”๊ณผ ์ธ๋ฑ์Šค์˜ ํŒฝ์ฐฝ ์ •๋„๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. (๊ณ ์ฐฝ์ฆ
์ผ๋ฐ˜์ ์œผ๋กœ ํ…Œ์ด๋ธ”์ด๋‚˜ ์ธ๋ฑ์Šค์—์„œ ์ฐจ์ง€ํ•˜๋Š” ์‚ฌ์šฉ๋˜์ง€ ์•Š์€ ์ฃฝ์€ ๊ณต๊ฐ„์˜ ์–‘์ž…๋‹ˆ๋‹ค. ์ด ๊ณต๊ฐ„์€
์ผ๋ฐ˜์ ์œผ๋กœ VACUUM ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ ํšŒ์ˆ˜ํ•ฉ๋‹ˆ๋‹ค.) ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋ ค๋ฉด ๋‹ค์Œ ํ†ต๊ณ„๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
์ปฌ๋ ‰์…˜์ด ๋Œ€์ƒ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ํ™œ์„ฑํ™”๋˜๊ณ  ANALYZE๊ฐ€ ์‹คํ–‰๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
์ž์ฃผ. NS --ํฌํ•จํ•˜๋‹ค ๊ณผ --๋“ค์–ด์˜ค์ง€ ๋ชปํ•˜๊ฒŒ ํ•˜๋‹ค ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ์–ด๋–ค ํ…Œ์ด๋ธ”์„
๋ณด๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ "๊ธฐ๋ณธ ํ•„ํ„ฐ๋ง" ์„น์…˜์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

XNUMXD๋ดํƒˆ์˜ --๊ฒฝ๊ณ  ๊ณผ --๋น„ํŒ์ ์ธ ์˜ต์…˜์€ ํฌ๊ธฐ, ๋ฐฑ๋ถ„์œจ ๋˜๋Š” ๋‘˜ ๋‹ค๋กœ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์œ ํšจํ•œ
ํฌ๊ธฐ ๋‹จ์œ„๋Š” ๋ฐ”์ดํŠธ, ํ‚ฌ๋กœ๋ฐ”์ดํŠธ, ๋ฉ”๊ฐ€๋ฐ”์ดํŠธ, ๊ธฐ๊ฐ€๋ฐ”์ดํŠธ, ํ…Œ๋ผ๋ฐ”์ดํŠธ, ์—‘์‚ฌ๋ฐ”์ดํŠธ, ํŽ˜ํƒ€๋ฐ”์ดํŠธ ๋ฐ
์ œํƒ€๋ฐ”์ดํŠธ. ์ฒซ ๊ธ€์ž๋กœ ๋ชจ๋‘ ์ถ•์•ฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹จ์œ„๊ฐ€ ์—†๋Š” ํ•ญ๋ชฉ์€
'๋ฐ”์ดํŠธ'๋กœ ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ '1GB' ๋ฐ '5GB'์ž…๋‹ˆ๋‹ค. ๊ฐ’์€ ๋‹ค์Œ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
"๋‚ญ๋น„๋œ ๋ฐ”์ดํŠธ" ์ˆ˜ ๋˜๋Š” ํ…Œ์ด๋ธ”์—์„œ ์‹ค์ œ๋กœ ์‚ฌ์šฉ๋œ ๊ฒƒ๊ณผ
index, ๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฒƒ์ด ๋˜์–ด์•ผ ํ•œ๋‹ค๊ณ  ์šฐ๋ฆฌ๊ฐ€ ๊ณ„์‚ฐํ•˜๋Š” ๊ฒƒ.

์ด ์ž‘์—…์—๋Š” ๋‘ ๊ฐœ์˜ ํ•˜๋“œ ์ฝ”๋”ฉ๋œ ๊ฐ’์ด ์žˆ์–ด ์ž‘์€ ํฌ๊ธฐ์—์„œ ์ž˜๋ชป๋œ ๊ฒฝ๋ณด๋ฅผ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค.
์ฒ˜์ง€. ํ…Œ์ด๋ธ”์€ 10ํŽ˜์ด์ง€ ์ด์ƒ, ์ธ๋ฑ์Šค๋Š” 15ํŽ˜์ด์ง€ ์ด์ƒ์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
์ด ํ…Œ์ŠคํŠธ์—์„œ ๊ณ ๋ ค๋ฉ๋‹ˆ๋‹ค. ์ด ๊ฐ’์„ ์ •๋ง๋กœ ์กฐ์ •ํ•˜๋ ค๋ฉด ๋‹ค์Œ์„ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋ณ€์ˆ˜ $MINPageS ๊ณผ $๋ฏธ๋‹ˆํŽ˜์ด์ง€ "check_bloat" ์„œ๋ธŒ๋ฃจํ‹ด์˜ ๋งจ ์œ„์— ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ๋“ค
๊ฐ’์€ ๋‹ค์Œ ์ค‘ ํ•˜๋‚˜๋ผ๋„ ๋ฌด์‹œ๋ฉ๋‹ˆ๋‹ค. --๋“ค์–ด์˜ค์ง€ ๋ชปํ•˜๊ฒŒ ํ•˜๋‹ค or --ํฌํ•จํ•˜๋‹ค ์‚ฌ์šฉ.

๊ฐ€์žฅ ๋ถ€ํ’€๋ ค์ง„ ์ƒ์œ„ 10๊ฐœ ๊ด€๊ณ„๋งŒ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ด ๋ฒˆํ˜ธ๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
--perflimit ์ž์‹ ์˜ ํ•œ๊ณ„๋ฅผ ์„ค์ •ํ•˜๋Š” ์˜ต์…˜.

'information_schema'๋ผ๋Š” ์Šคํ‚ค๋งˆ๋Š” ์œ ์ผํ•œ ํ…Œ์ด๋ธ”์ด๋ฏ€๋กœ ์ด ํ…Œ์ŠคํŠธ์—์„œ ์ œ์™ธ๋ฉ๋‹ˆ๋‹ค.
ํฌํ•จ์€ ์ž‘๊ณ  ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด ์ž‘์—…์œผ๋กœ ๊ณ„์‚ฐ๋œ ๊ฐ’์€ ์ •ํ™•ํ•˜์ง€ ์•Š์œผ๋ฉฐ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
์ง€์นจ์ผ ๋ฟ์ž…๋‹ˆ๋‹ค. ํ…Œ์ด๋ธ”์˜ ์ •ํ™•ํ•œ ํฌ๊ธฐ๋ฅผ ์ถ”์ •ํ•˜๊ธฐ ์œ„ํ•ด ๋งŽ์€ ๋…ธ๋ ฅ์„ ๊ธฐ์šธ์˜€์ง€๋งŒ,
๊ฒฐ๋ก ์€ ์ถ”์ •์ผ ๋ฟ์ž…๋‹ˆ๋‹ค. ์ •ํ™•ํ•œ ์ธ๋ฑ์Šค ํฌ๊ธฐ๋Š” ์ถ”์ธก์— ๋ถˆ๊ณผํ•ฉ๋‹ˆ๋‹ค.
์ •ํ™•ํ•œ ํ…Œ์ด๋ธ” ํฌ๊ธฐ์ด์ง€๋งŒ ๋‘˜ ๋‹ค ๋ฌผ๊ฑด์ด ์–ผ๋งˆ๋‚˜ ๋ถ€ํ’€์–ด ์˜ค๋ฅด๋Š”์ง€ ๋Œ€๋žต์ ์œผ๋กœ ์•Œ๋ ค์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ 1: ํฌํŠธ 5432์˜ ํ…Œ์ด๋ธ”์ด 100MB๋ฅผ ์ดˆ๊ณผํ•˜๋ฉด ๊ฒฝ๊ณ ํ•˜๊ณ  200MB๋ฅผ ์ดˆ๊ณผํ•˜๋ฉด ์œ„ํ—˜ํ•ฉ๋‹ˆ๋‹ค.
MB

check_postgres_bloat --port=5432 --warning='100M' --critical='200M'

์˜ˆ 2: ํ˜ธ์ŠคํŠธ 'sami'์˜ ํ…Œ์ด๋ธ” 'orders'์— 10MB ์ด์ƒ์˜ ํŒฝ์ฐฝ์ด ์žˆ๋Š” ๊ฒฝ์šฐ ์ž„๊ณ„๊ฐ’ ์ œ๊ณต

check_postgres_bloat --host=sami --include=orders --critical='10MB'

์˜ˆ 3: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค 'sales'์˜ ํ…Œ์ด๋ธ” 'q4'๊ฐ€ 50% ์ด์ƒ ๋ถ€ํ’€๋ ค์ง€๋ฉด ์ž„๊ณ„๊ฐ’ ์ œ๊ณต

check_postgres_bloat --db=ํŒ๋งค --include=q4 --critical='50%'

์˜ˆ 4: ํ…Œ์ด๋ธ”์ด 20% ์ด์ƒ ํŒฝ์ฐฝํ•˜๋ฉด ์ž„๊ณ„๊ฐ’ ์ œ๊ณต ๊ณผ 150MB ์ด์ƒ์˜ ํŒฝ์ฐฝ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

check_postgres_bloat --port=5432 --critical='20% ๋ฐ 150M'

์˜ˆ 5: ํ…Œ์ด๋ธ”์ด 40% ์ด์ƒ ํŒฝ์ฐฝํ•˜๋ฉด ์ž„๊ณ„๊ฐ’ ์ œ๊ณต or 500MB ์ด์ƒ์˜ ํŒฝ์ฐฝ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

check_postgres_bloat --port=5432 --warning='500M ๋˜๋Š” 40%'

MRTG ์ถœ๋ ฅ์˜ ๊ฒฝ์šฐ ์ฒซ ๋ฒˆ์งธ ์ค„์€ ํ…Œ์ด๋ธ”์— ๋Œ€ํ•ด ๊ฐ€์žฅ ๋งŽ์€ ๋‚ญ๋น„ ๋ฐ”์ดํŠธ ์ˆ˜๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
๋‘ ๋ฒˆ์งธ ์ค„์€ ์ธ๋ฑ์Šค์— ๋Œ€ํ•ด ๊ฐ€์žฅ ๋งŽ์€ ๋‚ญ๋น„๋œ ๋ฐ”์ดํŠธ ์ˆ˜๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋„ค ๋ฒˆ์งธ
ํ–‰์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ด๋ฆ„, ํ…Œ์ด๋ธ” ์ด๋ฆ„ ๋ฐ ์ธ๋ฑ์Šค ์ด๋ฆ„ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์›ํ•˜๋Š” ๊ฒฝ์šฐ
๋Œ€์‹  ํŒฝ์ฐฝ ๋น„์œจ์„ ์ถœ๋ ฅํ•˜์‹ญ์‹œ์˜ค(๊ด€๊ณ„๊ฐ€
์ปค์•ผ ํ•จ) "--mrtg=ratio"๋ฅผ ์ „๋‹ฌํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

์ฒดํฌ ํฌ์ธํŠธ
("symlink: check_postgres_checkpoint") ๋งˆ์ง€๋ง‰ ์ฒดํฌํฌ์ธํŠธ๊ฐ€
์‹คํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ํ™•์ธ ์ค‘์ธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ๋™์ผํ•œ ์„œ๋ฒ„์—์„œ ์‹คํ–‰๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(์˜ˆ:
-h ํ”Œ๋ž˜๊ทธ๋Š” ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค). ์ด ๊ฒ€์‚ฌ๋Š” "์›œ ๋Œ€๊ธฐ" ์„œ๋ฒ„์—์„œ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
๋ฐฐ์†ก๋œ WAL ํŒŒ์ผ์„ ์ ๊ทน์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋ฉฐ, ์›œ ๋Œ€๊ธฐ ์ƒํƒœ์ธ์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ •๋ง '๋”ฐ๋œปํ•˜๋‹ค'. ๋ฐ์ดํ„ฐ ๋””๋ ‰ํ† ๋ฆฌ๋Š” ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋กœ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
"PGDATA" ๋˜๋Š” "--datadir" ์ธ์ˆ˜๋ฅผ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. ์ดํ›„ ๊ฒฝ๊ณผ๋œ ์‹œ๊ฐ„(์ดˆ)์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
"pg_controldata"์— ๋Œ€ํ•œ ํ˜ธ์ถœ์„ ๊ตฌ๋ฌธ ๋ถ„์„ํ•˜์—ฌ ๊ฒฐ์ •๋œ ๋Œ€๋กœ ๋งˆ์ง€๋ง‰ ์ฒดํฌํฌ์ธํŠธ๊ฐ€ ์‹คํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋•Œ๋ฌธ์—
์ด๋ฅผ ์œ„ํ•ด์„œ๋Š” ํ˜„์žฌ ๊ฒฝ๋กœ์—์„œ pg_controldata ์‹คํ–‰ ํŒŒ์ผ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋˜๋Š”,
"PGBINDIR"์„ ๊ทธ๊ฒƒ์ด ์žˆ๋Š” ๋””๋ ‰ํ† ๋ฆฌ๋กœ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
ํŠน๋ณ„ํ•œ ์˜ต์…˜ --๊ฐ€์ • ์ œํ’ˆ or --๊ฐ€์ • ๋Œ€๊ธฐ ๋ชจ๋“œ, ๋ฐœ๊ฒฌ๋œ ๋ชจ๋“œ๊ฐ€ ์•„๋‹Œ ๊ฒฝ์šฐ
ํ•˜๋‚˜๊ฐ€ ์˜ˆ์ƒ๋˜๋ฉด CRITICAL์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

ํ•˜๋‚˜ ์ด์ƒ์˜ ๊ฒฝ๊ณ  ๋˜๋Š” ์ค‘์š”ํ•œ ์ธ์ˆ˜๋ฅผ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด ์ž‘์—…์—๋Š” Date::Parse ๋ชจ๋“ˆ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

MRTG ๋˜๋Š” ๋‹จ์ˆœ ์ถœ๋ ฅ์˜ ๊ฒฝ์šฐ ์ดˆ ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

ํด๋Ÿฌ์Šคํ„ฐ ์•„์ด๋””
("symlink: check_postgres_cluster-id") ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ ์‹๋ณ„์ž๊ฐ€ ์ œ๊ณตํ–ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
pg_controldata์— ์˜ํ•ด ๋งˆ์ง€๋ง‰์œผ๋กœ ํ™•์ธํ•œ ์‹œ๊ฐ„๊ณผ ๋™์ผํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋™์ผํ•œ ์„œ๋ฒ„์—์„œ ์‹คํ–‰๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
๊ฒ€์‚ฌ ์ค‘์ธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ(์˜ˆ: -h ํ”Œ๋ž˜๊ทธ๊ฐ€ ์ž‘๋™ํ•˜์ง€ ์•Š์Œ). ๋˜๋Š”
--๊ฒฝ๊ณ  ๋˜๋Š” --๋น„ํŒ์ ์ธ ์˜ต์…˜์„ ์ œ๊ณตํ•ด์•ผ ํ•˜์ง€๋งŒ ๋‘˜ ๋‹ค ์ œ๊ณตํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค. ๊ฐ๊ฐ์˜ ๊ฐ’์€
ํด๋Ÿฌ์Šคํ„ฐ ์‹๋ณ„์ž, ์ •์ˆ˜ ๊ฐ’. ํŠน์ˆ˜ "--critical=0"์œผ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๊ธฐ์กด ํด๋Ÿฌ์Šคํ„ฐ ์‹๋ณ„์ž๋ฅผ ์ฐพ๋Š” ์˜ต์…˜์ž…๋‹ˆ๋‹ค.

์˜ˆ 1: ์ดˆ๊ธฐ ์‹๋ณ„์ž ์ฐพ๊ธฐ

check_postgres_cluster_id --tical=0 --datadir=/var//lib/postgresql/9.0/main

์˜ˆ 2: ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ ๋™์ผํ•œ์ง€ ํ™•์ธํ•˜๊ณ  ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ ์œ„์˜ ๊ฒฐ๊ณผ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฒฝ๊ณ ํ•ฉ๋‹ˆ๋‹ค.

check_postgres_cluster_id --์ค‘์š”=5633695740047915135

MRTG ์ถœ๋ ฅ์˜ ๊ฒฝ์šฐ ์‹๋ณ„์ž ์‹คํŒจ์˜ ์„ฑ๊ณต์„ ๋‚˜ํƒ€๋‚ด๋Š” 1 ๋˜๋Š” 0์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
์„ฑ๋ƒฅ. ์‹๋ณ„์ž๋Š” "--mrtg" ์ธ์ˆ˜๋กœ ์ œ๊ณต๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋„ค ๋ฒˆ์งธ ์ค„์€ ํ•ญ์ƒ
ํ˜„์žฌ ์‹๋ณ„์ž๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์ปค๋ฐ‹ ๋น„์œจ
("symlink: check_postgres_commitratio") ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ปค๋ฐ‹ ๋น„์œจ์„ ํ™•์ธํ•˜๊ณ 
๋„ˆ๋ฌด ๋‚ฎ์„ ๋•Œ ๋ถˆํ‰ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ช…๋ น์„ ํ•œ ๋ฒˆ ์ด์ƒ ์‹คํ–‰ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํด๋Ÿฌ์Šคํ„ฐ. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•„ํ„ฐ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. --ํฌํ•จํ•˜๋‹ค ๊ณผ --๋“ค์–ด์˜ค์ง€ ๋ชปํ•˜๊ฒŒ ํ•˜๋‹ค ์˜ต์…˜. ๋ณด๋‹ค
์ž์„ธํ•œ ๋‚ด์šฉ์€ "๊ธฐ๋ณธ ํ•„ํ„ฐ๋ง" ์„น์…˜์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค. ์†Œ์œ ์ž๊ฐ€ ํ•„ํ„ฐ๋งํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค --ํฌํ•จ ์‚ฌ์šฉ์ž ๊ณผ --์ œ์™ธ ์‚ฌ์šฉ์ž ์˜ต์…˜. "์‚ฌ์šฉ์ž ์ด๋ฆ„
์ž์„ธํ•œ ๋‚ด์šฉ์€ ํ•„ํ„ฐ๋ง' ์„น์…˜์„ ์ฐธ์กฐํ•˜์„ธ์š”.

๊ฒฝ๊ณ  ๋ฐ ์œ„ํ—˜ ์˜ต์…˜์€ ๋ฐฑ๋ถ„์œจ๋กœ ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ์—†์Šต๋‹ˆ๋‹ค
์ด ์ž‘์—…์˜ ๊ธฐ๋ณธ๊ฐ’: ๊ฒฝ๊ณ  ๋ฐ ์œ„ํ—˜์„ ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ฒฝ๊ณ  ๊ฐ’
์ž„๊ณ„๊ฐ’๋ณด๋‹ค ํด ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ถœ๋ ฅ์€ ๋‹ค์Œ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌ๋œ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
commitratio, ๊ฐ€์žฅ ์ž‘์€ ๊ฒƒ ๋จผ์ €.

์˜ˆ: ํ˜ธ์ŠคํŠธ flagg์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์ปค๋ฐ‹ ๋น„์œจ์ด 90% ๋ฏธ๋งŒ์ด๊ณ  ์œ„ํ—˜ํ•˜๋ฉด ๊ฒฝ๊ณ ํ•ฉ๋‹ˆ๋‹ค.
80% ๋ฏธ๋งŒ์ด๋ฉด.

check_postgres_database_commitratio --host=flagg --warning='90%' --critical='80%'

MRTG ์ถœ๋ ฅ์˜ ๊ฒฝ์šฐ ์ปค๋ฐ‹ ๋น„์œจ์ด ๊ฐ€์žฅ ์ž‘์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋ฐฑ๋ถ„์œจ์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
์ฒซ ๋ฒˆ์งธ ์ค„์—๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ด๋ฆ„์ด, ๋„ค ๋ฒˆ์งธ ์ค„์—๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ด๋ฆ„์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์—ฐ๊ฒฐ
("symlink: check_postgres_connection") ๋‹จ์ˆœํžˆ ์—ฐ๊ฒฐํ•˜๊ณ  'SELECT ๋ฒ„์ „()'๋ฐ
์ดํŒŒ๋ฆฌ. ์•„๋‹ˆ์˜ค --๊ฒฝ๊ณ  or --๋น„ํŒ์ ์ธ ์˜ต์…˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

MRTG ์ถœ๋ ฅ์˜ ๊ฒฝ์šฐ ์ฒซ ๋ฒˆ์งธ์— 1(์–‘ํ˜ธํ•œ ์—ฐ๊ฒฐ) ๋˜๋Š” 0(๋‚˜์œ ์—ฐ๊ฒฐ)์„ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.
์ค„์ž…๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž ์ •์˜ ์ฟผ๋ฆฌ
("symlink: check_postgres_custom_query") ์„ ํƒํ•œ ์‚ฌ์šฉ์ž ์ง€์ • ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ๊ตฌ๋ฌธ ๋ถ„์„ํ•ฉ๋‹ˆ๋‹ค.
๊ฒฐ๊ณผ. ์ฟผ๋ฆฌ ์ž์ฒด๋Š” "query" ์ธ์ˆ˜๋ฅผ ํ†ตํ•ด ์ „๋‹ฌ๋˜๋ฉฐ ๋‹ค์Œ๊ณผ ๊ฐ™์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.
์ตœ๋Œ€ํ•œ ๋‹จ์ˆœํ•˜๊ฒŒ ์œ ์ง€ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€๋Šฅํ•˜๋ฉด ๋ทฐ๋‚˜ ํ•จ์ˆ˜๋กœ ๊ฐ์‹ธ์„œ ๋ณด๊ด€ํ•˜์‹ญ์‹œ์˜ค.
๋” ์‰ฝ๊ฒŒ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฟผ๋ฆฌ๋Š” ํ•˜๋‚˜ ๋˜๋Š” ๋‘ ๊ฐœ์˜ ์—ด์„ ๋ฐ˜ํ™˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ์š”๊ตฌ๋œ๋‹ค
์—ด ์ค‘ ํ•˜๋‚˜๋Š” "๊ฒฐ๊ณผ"๋กœ ์ด๋ฆ„์ด ์ง€์ •๋˜๊ณ  ๊ท€ํ•˜์™€ ๋น„๊ตํ•˜์—ฌ ํ™•์ธํ•  ํ•ญ๋ชฉ์ž…๋‹ˆ๋‹ค.
๊ฒฝ๊ณ  ๋ฐ ์ž„๊ณ„๊ฐ’. ๋‘ ๋ฒˆ์งธ ์—ด์€ ์„ฑ๋Šฅ ๋ฐ์ดํ„ฐ ๋ฐ ๋ชจ๋“  ์ด๋ฆ„์— ๋Œ€ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ: ์ด๊ฒƒ์€ ์„ฑ๋Šฅ ๋ฐ์ดํ„ฐ ์„น์…˜ ๋‚ด์˜ '๊ฐ’'์ด ๋ฉ๋‹ˆ๋‹ค.

ํ•˜๋‚˜ ์ด์ƒ์˜ ๊ฒฝ๊ณ  ๋˜๋Š” ์ค‘์š”ํ•œ ์ธ์ˆ˜๋ฅผ ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ๋“ค์ด ๋ฌด์—‡์œผ๋กœ ์„ค์ •๋˜๋Š๋ƒ์— ๋”ฐ๋ผ
์‹คํ–‰ ์ค‘์ธ ์ฟผ๋ฆฌ ์œ ํ˜•์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋„ค ๊ฐ€์ง€ ์œ ํ˜•์˜ custom_queries๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
์‹คํ–‰, "valtype" ์ธ์ˆ˜๋กœ ์ง€์ •๋ฉ๋‹ˆ๋‹ค. ์•„๋ฌด ๊ฒƒ๋„ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ์ด ์ž‘์—…์€ ๊ธฐ๋ณธ์ ์œผ๋กœ
'์ •์ˆ˜'. ๋„ค ๊ฐ€์ง€ ์œ ํ˜•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ •์ˆ˜: ๋‹จ์ˆœ ์ •์ˆ˜ ๋น„๊ต๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ์—ด์€ ๋‹จ์ˆœ ์ •์ˆ˜์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.
๊ฒฝ๊ณ  ๋ฐ ์ž„๊ณ„๊ฐ’์€ ๋™์ผํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํ˜„: warning ๋ฐ critical์€ ๋ฌธ์ž์—ด์ด๋ฉฐ,
์ฒซ ๋ฒˆ์งธ ์—ด์€ ์ •ํ™•ํžˆ ์ผ์น˜ํ•ฉ๋‹ˆ๋‹ค. ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ํ•ฉ๋‹ˆ๋‹ค.

์‹œ๊ฐ„: ๊ฒฝ๊ณ  ๋ฐ ์œ„ํ—˜์€ ์‹œ๊ฐ„์ด๋ฉฐ ์ดˆ, ๋ถ„,
์‹œ๊ฐ„ ๋˜๋Š” ์ผ. ๊ฐ๊ฐ์€ ๋‹จ์ˆ˜ ๋˜๋Š” ์ฒซ ๊ธ€์ž๋กœ ์ถ•์•ฝ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งŒ์•ฝ์—
๋‹จ์œ„๊ฐ€ ์ง€์ •๋˜์ง€ ์•Š๊ณ  ์ดˆ๊ฐ€ โ€‹โ€‹๊ฐ€์ •๋ฉ๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ์—ด์€ ์ •์ˆ˜์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.
ํ™•์ธํ•  ์‹œ๊ฐ„(์ดˆ)์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

ํฌ๊ธฐ: ๊ฒฝ๊ณ  ๋ฐ ์œ„ํ—˜์€ ํฌ๊ธฐ์ด๋ฉฐ ๋ฐ”์ดํŠธ, ํ‚ฌ๋กœ๋ฐ”์ดํŠธ,
๋ฉ”๊ฐ€๋ฐ”์ดํŠธ, ๊ธฐ๊ฐ€๋ฐ”์ดํŠธ, ํ…Œ๋ผ๋ฐ”์ดํŠธ ๋˜๋Š” ์—‘์‚ฌ๋ฐ”์ดํŠธ. ๊ฐ๊ฐ์€ ์ฒซ ๊ธ€์ž๋กœ ์ถ•์•ฝ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋‹จ์œ„๊ฐ€ ์ง€์ •๋˜์ง€ ์•Š์œผ๋ฉด ๋ฐ”์ดํŠธ๊ฐ€ ๊ฐ€์ •๋ฉ๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ์—ด์€ ์ •์ˆ˜์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.
ํ™•์ธํ•  ๋ฐ”์ดํŠธ ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ ๋ฐ˜ํ™˜๋œ ๊ฐ’์ด ๋‹ค์Œ๊ณผ ๊ฐ™์œผ๋ฉด ๊ฒฝ๊ณ ๊ฐ€ ํŠธ๋ฆฌ๊ฑฐ๋ฉ๋‹ˆ๋‹ค. ํฐ ๋ณด๋‹ค ๋˜๋Š” ๊ฐ™์Œ
์œ„ํ—˜ ๋˜๋Š” ๊ฒฝ๊ณ  ๊ฐ’. ๊ทธ๋Ÿฌ๋‚˜, --์—ญ์ „ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ ๊ฒฝ๊ณ ๋ฅผ ํŠธ๋ฆฌ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.
๋ฐ˜ํ™˜๋œ ๊ฐ’์€ ์ ˆ๊ฐ ๋ณด๋‹ค ๋˜๋Š” ์œ„ํ—˜ ๋˜๋Š” ๊ฒฝ๊ณ  ๊ฐ’๊ณผ ๋™์ผํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ 1: 100ํŽ˜์ด์ง€๊ฐ€ ๋„˜๋Š” ๊ด€๊ณ„์˜ ์ด๋ฆ„์ด "rad"์ธ ๊ฒฝ์šฐ ๊ฒฝ๊ณ ํ•˜๊ณ  ํŽ˜์ด์ง€ ์ˆ˜๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
์„ฑ๋Šฅ ๋ฐ์ดํ„ฐ ์„น์…˜ ๋‚ด๋ถ€.

check_postgres_custom_query --valtype=string -w "rad" --query=
"SELECT relname AS ๊ฒฐ๊ณผ, relpages AS ํŽ˜์ด์ง€ FROM pg_class WHERE relpages > 100"

์˜ˆ 2: "foobar" ํ•จ์ˆ˜๊ฐ€ 5MB๋ฅผ ์ดˆ๊ณผํ•˜๋Š” ์ˆซ์ž๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒฝ์šฐ ์ž„๊ณ„๊ฐ’ ์ œ๊ณต:

check_postgres_custom_query --critical='5MB'--valtype=size --query="SELECT foobar() AS ๊ฒฐ๊ณผ"

์˜ˆ 2: "snazzo" ํ•จ์ˆ˜๊ฐ€ 42๋ณด๋‹ค ์ž‘์€ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋ฉด ๊ฒฝ๊ณ :

check_postgres_custom_query --critical=42 --query="SELECT snazzo() AS ๊ฒฐ๊ณผ" --reverse

์œ ์šฉํ•œ custom_query๊ฐ€ ์ƒ๊ฐ๋‚˜๋ฉด ์ด ํ”„๋กœ๊ทธ๋žจ์— ํŒจ์น˜๋ฅผ ๋ณด๋‚ด๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ•˜์‹ญ์‹œ์˜ค.
๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํ‘œ์ค€ ์ž‘์—…์œผ๋กœ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

์ด ์ž‘์—…์€ ์•„์ง MRTG ๋˜๋Š” ๋‹จ์ˆœ ์ถœ๋ ฅ์„ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํฌ๊ธฐ
("symlink: check_postgres_database_size") ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ํฌ๊ธฐ๋ฅผ ํ™•์ธํ•˜๊ณ  ๋ถˆํ‰ํ•ฉ๋‹ˆ๋‹ค.
๊ทธ๋“ค์ด ๋„ˆ๋ฌด ํด ๋•Œ. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋‹น ๋‘ ๋ฒˆ ์ด์ƒ ์ด ๋ช…๋ น์„ ์‹คํ–‰ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
๋ฌด๋ฆฌ. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•„ํ„ฐ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. --ํฌํ•จํ•˜๋‹ค ๊ณผ --๋“ค์–ด์˜ค์ง€ ๋ชปํ•˜๊ฒŒ ํ•˜๋‹ค ์˜ต์…˜. ์ฐธ์กฐ
์ž์„ธํ•œ ๋‚ด์šฉ์€ "๊ธฐ๋ณธ ํ•„ํ„ฐ๋ง" ์„น์…˜์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค. ์†Œ์œ ์ž๊ฐ€ ํ•„ํ„ฐ๋งํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค --ํฌํ•จ ์‚ฌ์šฉ์ž ๊ณผ --์ œ์™ธ ์‚ฌ์šฉ์ž ์˜ต์…˜. "์‚ฌ์šฉ์ž ์ด๋ฆ„ ํ•„ํ„ฐ๋ง"์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.
์ž์„ธํ•œ ๋‚ด์šฉ์€ ์„น์…˜์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

๊ฒฝ๊ณ  ๋ฐ ์ค‘์š” ์˜ต์…˜์€ ๋ฐ”์ดํŠธ, ํ‚ฌ๋กœ๋ฐ”์ดํŠธ, ๋ฉ”๊ฐ€๋ฐ”์ดํŠธ,
๊ธฐ๊ฐ€๋ฐ”์ดํŠธ, ํ…Œ๋ผ๋ฐ”์ดํŠธ ๋˜๋Š” ์—‘์‚ฌ๋ฐ”์ดํŠธ. ๊ฐ๊ฐ์€ ์ฒซ ๊ธ€์ž๋กœ ์ถ•์•ฝ๋  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
๋‹จ์œ„๊ฐ€ ์ง€์ •๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ๋‹จ์œ„๋Š” ๋ฐ”์ดํŠธ๋กœ ๊ฐ„์ฃผ๋ฉ๋‹ˆ๋‹ค. ์ด์— ๋Œ€ํ•œ ๊ธฐ๋ณธ๊ฐ’์ด ์—†์Šต๋‹ˆ๋‹ค.
์กฐ์น˜: ๊ฒฝ๊ณ  ๋ฐ ์œ„ํ—˜์„ ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ฒฝ๊ณ  ๊ฐ’์€ ์ด๋ณด๋‹ค ํด ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
์ž„๊ณ„๊ฐ’๋ณด๋‹ค ์ถœ๋ ฅ์€ ๊ฐ€์žฅ ํฐ ํฌ๊ธฐ๋กœ ์ •๋ ฌ๋œ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋จผ์ € ๋ฐ˜ํ™˜ํ•˜๊ณ ,
์›์‹œ ๋ฐ”์ดํŠธ์™€ ํฌ๊ธฐ์˜ "์˜ˆ์œ" ๋ฒ„์ „์„ ๋ชจ๋‘ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ 1: ํ˜ธ์ŠคํŠธ flagg์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํฌ๊ธฐ๊ฐ€ 1TB๋ฅผ ์ดˆ๊ณผํ•˜๋Š” ๊ฒฝ์šฐ ๊ฒฝ๊ณ ํ•˜๊ณ , ์ดˆ๊ณผํ•˜๋Š” ๊ฒฝ์šฐ ์ค‘์š”
1.1 TB.

check_postgres_database_size --host=flagg --warning='1TB' --critical='1.1 t'

์˜ˆ 2: ํฌํŠธ 1์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ…œํ”Œ๋ฆฟ5432์ด 10MB๋ฅผ ์ดˆ๊ณผํ•˜๋Š” ๊ฒฝ์šฐ ์œ„ํ—˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

check_postgres_database_size --port=5432 --include=template1 --warning='10MB' --critical='10MB'

์˜ˆ 3: ์‚ฌ์šฉ์ž 'tom'์ด ์†Œ์œ ํ•œ ํ˜ธ์ŠคํŠธ 'tardis'์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์ข…๋ฃŒ๋˜๋ฉด ๊ฒฝ๊ณ ๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.
5 GB

check_postgres_database_size --host=tardis --includeuser=tom --warning='5GB' --critical='10GB'

MRTG ์ถœ๋ ฅ์˜ ๊ฒฝ์šฐ ์ฒซ ๋ฒˆ์งธ ์ค„์—์„œ ๊ฐ€์žฅ ํฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ํฌ๊ธฐ๋ฅผ ๋ฐ”์ดํŠธ ๋‹จ์œ„๋กœ ๋ฐ˜ํ™˜ํ•˜๊ณ 
๋„ค ๋ฒˆ์งธ ์ค„์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.

dbstats
("symlink: check_postgres_dbstats") pg_stat_database ๋ณด๊ธฐ์—์„œ ์ •๋ณด๋ฅผ ๋ณด๊ณ ํ•ฉ๋‹ˆ๋‹ค.
์„ ์ธ์žฅ ์นœํ™”์  ์ธ ๋ฐฉ์‹์œผ๋กœ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์ถœ๋ ฅ์€ ์ง€์›๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
์ •๋ณด ์ œ๊ณต์šฉ์ด๋ฉฐ Nagios์™€ ํ•จ๊ป˜ ์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ๊ฒฝ๊ณ ์— ์ ํ•ฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์˜ต์…˜์ด ์—†๋Š” ๊ฒฝ์šฐ
๊ฐ€ ์ฃผ์–ด์ง€๋ฉด ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ํ•œ ์ค„์— ํ•˜๋‚˜์”ฉ ๋ฐ˜ํ™˜๋ฉ๋‹ˆ๋‹ค. ํŠน์ • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ํฌํ•จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
"--include" ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ "--dbname" ์˜ต์…˜์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ ์ค„์— XNUMX๊ฐœ์˜ ํ•ญ๋ชฉ์ด ์ด๋ฆ„:๊ฐ’ ํ˜•์‹์œผ๋กœ ๋ฐ˜ํ™˜๋˜๋ฉฐ ๋‹จ์ผ ํ•ญ๋ชฉ์œผ๋กœ ๊ตฌ๋ถ„๋ฉ๋‹ˆ๋‹ค.
์šฐ์ฃผ. ํ•ญ๋ชฉ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋ฐฑ์—”๋“œ
์ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋Œ€ํ•ด ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ธ ๋ฐฑ์—”๋“œ ์ˆ˜์ž…๋‹ˆ๋‹ค.

์œ„ํƒํ•˜๋‹ค
์ƒ์„ฑ ๋˜๋Š” ์žฌ์„ค์ •๋œ ์ดํ›„ ์ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋Œ€ํ•œ ์ด ์ปค๋ฐ‹ ์ˆ˜์ž…๋‹ˆ๋‹ค.

๋กค๋ฐฑ
์ƒ์„ฑ ๋˜๋Š” ์žฌ์„ค์ •๋œ ์ดํ›„ ์ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋Œ€ํ•œ ์ด ๋กค๋ฐฑ ์ˆ˜์ž…๋‹ˆ๋‹ค.

์ฝ๊ธฐ
์ฝ์€ ๋””์Šคํฌ ๋ธ”๋ก์˜ ์ด ์ˆ˜์ž…๋‹ˆ๋‹ค.

hit ๋ฒ„ํผ ํžˆํŠธ์˜ ์ด ์ˆ˜.

ret ๋ฐ˜ํ™˜๋œ ์ด ํ–‰ ์ˆ˜์ž…๋‹ˆ๋‹ค.

์ˆ ์ฑ…
๊ฐ€์ ธ์˜จ ์ด ํ–‰ ์ˆ˜์ž…๋‹ˆ๋‹ค.

ins ์‚ฝ์ž…๋œ ์ด ํ–‰ ์ˆ˜์ž…๋‹ˆ๋‹ค.

upd ์—…๋ฐ์ดํŠธ๋œ ์ด ํ–‰ ์ˆ˜์ž…๋‹ˆ๋‹ค.

del ์‚ญ์ œ๋œ ์ด ํ–‰ ์ˆ˜์ž…๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ด๋ฆ„
๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.

Postgres๊ฐ€ ๋ฒ„์ „ 0์ธ ๊ฒฝ์šฐ ret, fetch, ins, upd ๋ฐ del ํ•ญ๋ชฉ์€ ํ•ญ์ƒ 8.2์ž…๋‹ˆ๋‹ค.
ํ•ด๋‹น ๋ฒ„์ „์—์„œ๋Š” ํ•ด๋‹น ํ†ต๊ณ„๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์—ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

dbname ์ธ์ˆ˜๊ฐ€ ์ œ๊ณต๋˜๋ฉด XNUMX๊ฐœ์˜ ์ถ”๊ฐ€ ํ•ญ๋ชฉ์ด ๋ฐ˜ํ™˜๋ฉ๋‹ˆ๋‹ค.

์•„์ด๋””์Šค์บ”
์ด ์‚ฌ์šฉ์ž ์ธ๋ฑ์Šค ์Šค์บ” ์ˆ˜์ž…๋‹ˆ๋‹ค.

idxtupread
๋ฐ˜ํ™˜๋œ ์ด ์‚ฌ์šฉ์ž ์ธ๋ฑ์Šค ํ•ญ๋ชฉ ์ˆ˜์ž…๋‹ˆ๋‹ค.

idxtupfetch
๋‹จ์ˆœ ์‚ฌ์šฉ์ž ์ธ๋ฑ์Šค ์Šค์บ”์œผ๋กœ ๊ฐ€์ ธ์˜จ ์ด ํ–‰ ์ˆ˜์ž…๋‹ˆ๋‹ค.

idxblksread
๋ชจ๋“  ์‚ฌ์šฉ์ž ์ธ๋ฑ์Šค์— ๋Œ€ํ•ด ์ฝ์€ ์ด ๋””์Šคํฌ ๋ธ”๋ก ์ˆ˜์ž…๋‹ˆ๋‹ค.

idxblkshit
๋ชจ๋“  ์‚ฌ์šฉ์ž ์ธ๋ฑ์Šค์— ๋Œ€ํ•œ ์ด ๋ฒ„ํผ ํžˆํŠธ ์ˆ˜์ž…๋‹ˆ๋‹ค.

์‹œํ€€์Šค ์Šค์บ”
๋ชจ๋“  ์‚ฌ์šฉ์ž ํ…Œ์ด๋ธ”์— ๋Œ€ํ•œ ์ˆœ์ฐจ ์Šค์บ”์˜ ์ด ์ˆ˜์ž…๋‹ˆ๋‹ค.

seqtupread
๋ชจ๋“  ์‚ฌ์šฉ์ž ํ…Œ์ด๋ธ”์—์„œ ๋ฐ˜ํ™˜๋œ ์ด ํŠœํ”Œ ์ˆ˜์ž…๋‹ˆ๋‹ค.

์˜ˆ 1: "willow" ํ˜ธ์ŠคํŠธ์—์„œ "products"๋ผ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋Œ€ํ•œ ํ†ต๊ณ„๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

check_postgres_dbstats --dbhost ๋ฒ„๋“œ๋‚˜๋ฌด --dbname ์ œํ’ˆ

๋ฐ˜ํ™˜๋œ ์ถœ๋ ฅ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค(๋ชจ๋‘ ์ค„ ๋ฐ”๊ฟˆ๋˜์ง€ ์•Š๊ณ  ํ•œ ์ค„์— ํ‘œ์‹œ๋จ).

๋ฐฑ์—”๋“œ:82 ์ปค๋ฐ‹:58374408 ๋กค๋ฐฑ:1651 ์ฝ๊ธฐ:268435543 ํžˆํŠธ:2920381758 idxscan:310931294 idxtupread:2777040927
idxtupfetch:1840241349 idxblksread:62860110 idxblkshit:1107812216 seqscan:5085305 seqtupread:5370500520
ret:0 ๊ฐ€์ ธ์˜ค๊ธฐ:0 ins:0 upd:0 del:0 dbname:willow

๋น„ํ™œ์„ฑํ™”_ํŠธ๋ฆฌ๊ฑฐ
("symlink: check_postgres_disabled_triggers") ๋น„ํ™œ์„ฑํ™”๋œ ํŠธ๋ฆฌ๊ฑฐ์˜ ์ˆ˜๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋‚ด๋ถ€. NS --๊ฒฝ๊ณ  ๊ณผ --๋น„ํŒ์ ์ธ ์˜ต์…˜์€ ๊ทธ๋Ÿฌํ•œ ํŠธ๋ฆฌ๊ฑฐ์˜ ์ˆ˜์ž…๋‹ˆ๋‹ค.
๋ฐœ๊ฒฌ๋˜์—ˆ์œผ๋ฉฐ ๋‘˜ ๋‹ค ๊ธฐ๋ณธ์ ์œผ๋กœ "1"๋กœ ์„ค์ •๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์ธ ์‚ฌ์šฉ์—์„œ๋Š” ํŠธ๋ฆฌ๊ฑฐ๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•˜๋Š” ๊ฒƒ์ด ์œ„ํ—˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
์ด๋ฒคํŠธ. ๊ฒ€์‚ฌ ์ค‘์ธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ 8.3 ์ด์ƒ์ธ ๊ฒฝ์šฐ ๊ฒ€์‚ฌ๋Š”
'๋น„ํ™œ์„ฑํ™”' ์ƒํƒœ์— ์žˆ๋Š” ํŠธ๋ฆฌ๊ฑฐ('ํ•ญ์ƒ' ๋˜๋Š” '๋ณต์ œ'์™€ ๋ฐ˜๋Œ€). NS
์ถœ๋ ฅ์—๋Š” ํ…Œ์ด๋ธ” ์ด๋ฆ„๊ณผ ๋น„ํ™œ์„ฑํ™”๋œ ๊ฐ ํŠธ๋ฆฌ๊ฑฐ ์ด๋ฆ„์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.
๋ฐฉ์•„์‡ .

์˜ˆ 1: ๋น„ํ™œ์„ฑํ™”๋œ ํŠธ๋ฆฌ๊ฑฐ๊ฐ€ ์—†๋Š”์ง€ ํ™•์ธ

check_postgres_disabled_triggers

MRTG ์ถœ๋ ฅ์˜ ๊ฒฝ์šฐ ์ฒซ ๋ฒˆ์งธ ๋ผ์ธ์—์„œ ๋น„ํ™œ์„ฑํ™”๋œ ํŠธ๋ฆฌ๊ฑฐ ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

๋””์Šคํฌ ๊ณต๊ฐ„
("symlink: check_postgres_disk_space") ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ฌผ๋ฆฌ์  ๋””์Šคํฌ ๊ณต๊ฐ„์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
ํฌ์ŠคํŠธ๊ทธ๋ ˆ์Šค. ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋ ค๋ฉด ์‹คํ–‰ ํŒŒ์ผ "/bin/df" ๋ณด๊ณ  ๊ฐ€๋Šฅ
๋””์Šคํฌ ํฌ๊ธฐ์—์„œ, ๊ทธ๋ฆฌ๊ณ  ๋˜ํ•œ ์ˆ˜ํผ์œ ์ €๋กœ ์‹คํ–‰๋˜์–ด์•ผ ํ•˜๋ฏ€๋กœ ๊ฒ€์‚ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋ฐ์ดํ„ฐ ๋””๋ ‰ํ† ๋ฆฌ Postgres ๋‚ด๋ถ€ ์„ค์ •. NS --๊ฒฝ๊ณ  ๊ณผ --๋น„ํŒ์ ์ธ ์˜ต์…˜์ด ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค
ํฌ๊ธฐ๋‚˜ ๋ฐฑ๋ถ„์œจ ๋˜๋Š” ๋‘˜ ๋‹ค. ํฌ๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ํ‘œ์ค€ ๋‹จ์œ„ ์œ ํ˜•์€
ํ—ˆ์šฉ: ๋ฐ”์ดํŠธ, ํ‚ฌ๋กœ๋ฐ”์ดํŠธ, ๊ธฐ๊ฐ€๋ฐ”์ดํŠธ, ๋ฉ”๊ฐ€๋ฐ”์ดํŠธ, ๊ธฐ๊ฐ€๋ฐ”์ดํŠธ, ํ…Œ๋ผ๋ฐ”์ดํŠธ ๋˜๋Š” ์—‘์‚ฌ๋ฐ”์ดํŠธ. ๊ฐ
์ฒซ ๊ธ€์ž๋กœ๋งŒ ์ถ•์•ฝ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹จ์œ„๊ฐ€ ์ „ํ˜€ ์—†์œผ๋ฉด '๋ฐ”์ดํŠธ'๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. NS
๊ธฐ๋ณธ๊ฐ’์€ '90%' ๋ฐ '95%'์ž…๋‹ˆ๋‹ค.

์ด ๋ช…๋ น์€ ๋‹ค์Œ ์‚ฌํ•ญ์„ ํ™•์ธํ•˜์—ฌ ์„œ๋กœ ๋‹ค๋ฅธ ๋ชจ๋“  ๋ฌผ๋ฆฌ์  ๋””์Šคํฌ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
Postgres์—์„œ ์‚ฌ์šฉ ์ค‘์ž…๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ ๋””๋ ‰ํ† ๋ฆฌ - ์ฃผ ๋ฐ์ดํ„ฐ ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ์žˆ๋Š” ๋””์Šคํฌ.

๊ธฐ๋ก ์˜ˆ๋ฐฐ ๊ทœ์น™์„œ - ๋กœ๊ทธ ํŒŒ์ผ์ด ์žˆ๋Š” ๋””์Šคํฌ.

WAL ํŒŒ์ผ ์˜ˆ๋ฐฐ ๊ทœ์น™์„œ - ๋ฏธ๋ฆฌ ์“ฐ๊ธฐ ๋กœ๊ทธ๊ฐ€ ์žˆ๋Š” ๋””์Šคํฌ(์˜ˆ: ์‹ฌ๋ณผ๋ฆญ ๋งํฌ๋œ pg_xlog)

ํ…Œ์ด๋ธ”์ŠคํŽ˜์ด์Šค - ๋ณ„๋„์˜ ๋””์Šคํฌ์— ์žˆ๋Š” ๊ฐ ํ…Œ์ด๋ธ”์ŠคํŽ˜์ด์Šค.

์ถœ๋ ฅ์€ ๊ฐ ๋””์Šคํฌ์—์„œ ์‚ฌ์šฉ ๋ฐ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ด ํฌ๊ธฐ์™€
๋ฐฑ๋ถ„์œจ, ์‚ฌ์šฉ๋œ ๊ฐ€์žฅ ๋†’์€ ๋ฐฑ๋ถ„์œจ์—์„œ ๊ฐ€์žฅ ๋‚ฎ์€ ๋ฐฑ๋ถ„์œจ๋กœ ์ •๋ ฌ๋ฉ๋‹ˆ๋‹ค. ์œ„์˜ ๊ฐ ํ•ญ๋ชฉ์€ ํŒŒ์ผ์— ๋งคํ•‘๋ฉ๋‹ˆ๋‹ค.
์‹œ์Šคํ…œ: ํฌํ•จํ•˜๊ฑฐ๋‚˜ ์ œ์™ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ "๊ธฐ๋ณธ ํ•„ํ„ฐ๋ง" ์„น์…˜์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.
์„ธ๋ถ€.

์˜ˆ 1: ํฌํŠธ 90์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋Œ€ํ•ด 5432%๋ฅผ ์ดˆ๊ณผํ•˜๋Š” ํŒŒ์ผ ์‹œ์Šคํ…œ์ด ์—†๋Š”์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.

check_postgres_disk_space --port=5432 --warning='90%' --critical='90%'

์˜ˆ 2: /dev/sda๋กœ ์‹œ์ž‘ํ•˜๋Š” ๋ชจ๋“  ํŒŒ์ผ ์‹œ์Šคํ…œ์ด 10GB๋ณด๋‹ค ์ž‘๊ณ 
11GB(๊ฒฝ๊ณ  ๋ฐ ์œ„ํ—˜)

check_postgres_disk_space --port=5432 --warning='10GB' --critical='11GB' --include="~^/dev/sda"

์˜ˆ 4: ๋‘˜ ๋‹ค 50%๋ฅผ ์ดˆ๊ณผํ•˜๋Š” ํŒŒ์ผ ์‹œ์Šคํ…œ์ด ์—†๋Š”์ง€ ํ™•์ธ ๊ณผ 15GB ์ด์ƒ

check_postgres_disk_space --critical='50% ๋ฐ 15GB'

์˜ˆ 5: ํŒŒ์ผ ์‹œ์Šคํ…œ์ด 70% ์ด์ƒ ์ฐจ๋ฉด ๊ฒฝ๊ณ ๋ฅผ ๋ฐœํ–‰ํ•ฉ๋‹ˆ๋‹ค. or 1T ์ด์ƒ

check_postgres_disk_space --warning='1T ๋˜๋Š” 75'

MRTG ์ถœ๋ ฅ์˜ ๊ฒฝ์šฐ ์ฒซ ๋ฒˆ์งธ ์ค„์— ํŒŒ์ผ ์‹œ์Šคํ…œ์˜ ํฌ๊ธฐ๋ฅผ ๋ฐ”์ดํŠธ ๋‹จ์œ„๋กœ ๋ฐ˜ํ™˜ํ•˜๊ณ 
๋„ค ๋ฒˆ์งธ ์ค„์˜ ํŒŒ์ผ ์‹œ์Šคํ…œ ์ด๋ฆ„.

fsm_ํŽ˜์ด์ง€
("symlink: check_postgres_fsm_pages") ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ Postgres์— ์–ผ๋งˆ๋‚˜ ๊ฐ€๊นŒ์šด์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
max_fsm_pages ํ™˜๊ฒฝ. ์ด ์ž‘์—…์€ 8.2 ์ด์ƒ์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ๋งŒ ์ž‘๋™ํ•˜๋ฉฐ
๊ธฐ์—ฌ ๋ชจ๋“ˆ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค pg_freespacemap ์„ค์น˜๋ฉ๋‹ˆ๋‹ค. NS --๊ฒฝ๊ณ  ๊ณผ --๋น„ํŒ์ ์ธ
์˜ต์…˜์€ ๋ฐฑ๋ถ„์œจ๋กœ ํ‘œ์‹œ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ์œ  ๊ณต๊ฐ„ ๋งต์—์„œ ์‚ฌ์šฉ๋œ ํŽ˜์ด์ง€ ์ˆ˜
pg_freespacemap_relations ๋ทฐ๋ฅผ ๋ณด๊ณ  ์ˆ˜์‹์„ ์‹คํ–‰ํ•˜์—ฌ ๊ฒฐ์ •๋ฉ๋‹ˆ๋‹ค.
์ง„๊ณต ์ƒ์„ธ ์ •๋ณด์—์„œ ์—ฌ์œ  ๊ณต๊ฐ„ ๋งต ํŽ˜์ด์ง€ ์Šฌ๋กฏ์„ ์ถœ๋ ฅํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๊ณต์‹์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค.
๋ช…๋ น. ๊ธฐ๋ณธ๊ฐ’์€ 85% ๊ฒฝ๊ณ ์™€ 95% ํฌ๋ฆฌํ‹ฐ์ปฌ์„ ์œ„ํ•ด.

์˜ˆ 1: ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ ์—ฌ์œ  ๊ณต๊ฐ„ ํŽ˜์ด์ง€ ์Šฌ๋กฏ์˜ 76%๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ฒฝ๊ณ ๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.
robert ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์„ค์น˜๋œ pg_freespacemap ์‚ฌ์šฉ

check_postgres_fsm_pages --dbname=robert --warning="76%"

pg_freespacemap์ด ์„ค์น˜๋œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ด๋ฆ„์„ ์ „๋‹ฌํ•ด์•ผ ํ•˜์ง€๋งŒ,
ํด๋Ÿฌ์Šคํ„ฐ๋‹น ํ•œ ๋ฒˆ๋งŒ ์ด ๊ฒ€์‚ฌ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ์ด ์ •๋ณด๋ฅผ ํ™•์ธํ•˜๋ ค๋ฉด
free-space-map์—์„œ ํŠน๋ณ„ํ•œ ์ž ๊ธˆ์„ ์–ป์œผ๋ฏ€๋กœ ์ด๊ฒƒ์„ ์‹คํ–‰ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.
์งง์€ ๊ฐ„๊ฒฉ์œผ๋กœ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.

MRTG ์ถœ๋ ฅ์˜ ๊ฒฝ์šฐ ์ฒซ ๋ฒˆ์งธ ์ค„์— ์žˆ๋Š” ์—ฌ์œ  ๊ณต๊ฐ„ ๋งต์˜ ๋ฐฑ๋ถ„์œจ๊ณผ ์ˆซ์ž๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
๋‘ ๋ฒˆ์งธ ์ค„์—์„œ ํ˜„์žฌ ์‚ฌ์šฉ ์ค‘์ธ ํŽ˜์ด์ง€ ์ˆ˜์ž…๋‹ˆ๋‹ค.

fsm_๊ด€๊ณ„
("symlink: check_postgres_fsm_relations") ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ Postgres์— ์–ผ๋งˆ๋‚˜ ๊ฐ€๊นŒ์šด์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
max_fsm_relations ํ™˜๊ฒฝ. ์ด ์ž‘์—…์€ 8.2 ์ด์ƒ์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ๋งŒ ์ž‘๋™ํ•˜๋ฉฐ,
๊ธฐ์—ฌ ๋ชจ๋“ˆ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค pg_freespacemap ์„ค์น˜๋ฉ๋‹ˆ๋‹ค. NS --๊ฒฝ๊ณ  ๊ณผ --๋น„ํŒ์ ์ธ
์˜ต์…˜์€ ๋ฐฑ๋ถ„์œจ๋กœ ํ‘œ์‹œ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ž์œ ์—์„œ ์‚ฌ์šฉ๋œ ๊ด€๊ณ„์˜ ์ˆ˜
space-map์€ pg_freespacemap_relations ๋ทฐ๋ฅผ ๋ณด๊ณ  ๊ฒฐ์ •๋ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’
๊ฐ’์€ 85% ๊ฒฝ๊ณ ์™€ 95% ํฌ๋ฆฌํ‹ฐ์ปฌ์„ ์œ„ํ•ด.

์˜ˆ 1: ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ ์—ฌ์œ  ๊ณต๊ฐ„ ๊ด€๊ณ„์˜ 80%๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ฒฝ๊ณ ๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.
๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค dylan์— ์„ค์น˜๋œ pg_freespacemap ์‚ฌ์šฉ

check_postgres_fsm_relations --dbname=dylan --warning="75%"

pg_freespacemap์ด ์„ค์น˜๋œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ด๋ฆ„์„ ์ „๋‹ฌํ•ด์•ผ ํ•˜์ง€๋งŒ,
ํด๋Ÿฌ์Šคํ„ฐ๋‹น ํ•œ ๋ฒˆ๋งŒ ์ด ๊ฒ€์‚ฌ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ์ด ์ •๋ณด๋ฅผ ํ™•์ธํ•˜๋ ค๋ฉด
free-space-map์—์„œ ํŠน๋ณ„ํ•œ ์ž ๊ธˆ์„ ์–ป์œผ๋ฏ€๋กœ ์ด๊ฒƒ์„ ์‹คํ–‰ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.
์งง์€ ๊ฐ„๊ฒฉ์œผ๋กœ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.

MRTG ์ถœ๋ ฅ์˜ ๊ฒฝ์šฐ ์ฒซ ๋ฒˆ์งธ ์ค„์— ์žˆ๋Š” ์—ฌ์œ  ๊ณต๊ฐ„ ๋งต์˜ ๋ฐฑ๋ถ„์œจ์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
ํ˜„์žฌ ๋‘ ๋ฒˆ์งธ ์ค„์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๊ด€๊ณ„.

์ ์ค‘๋ฅ 
("symlink: check_postgres_hitratio") ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ ์ค‘๋ฅ ์„ ํ™•์ธํ•˜๊ณ  ๋ถˆ๋งŒ์„ ์ œ๊ธฐํ•ฉ๋‹ˆ๋‹ค.
๋„ˆ๋ฌด ๋‚ฎ์„ ๋•Œ. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋‹น ๋‘ ๋ฒˆ ์ด์ƒ ์ด ๋ช…๋ น์„ ์‹คํ–‰ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
๋ฌด๋ฆฌ. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•„ํ„ฐ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. --ํฌํ•จํ•˜๋‹ค ๊ณผ --๋“ค์–ด์˜ค์ง€ ๋ชปํ•˜๊ฒŒ ํ•˜๋‹ค ์˜ต์…˜. ์ฐธ์กฐ
์ž์„ธํ•œ ๋‚ด์šฉ์€ "๊ธฐ๋ณธ ํ•„ํ„ฐ๋ง" ์„น์…˜์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค. ์†Œ์œ ์ž๊ฐ€ ํ•„ํ„ฐ๋งํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค --ํฌํ•จ ์‚ฌ์šฉ์ž ๊ณผ --์ œ์™ธ ์‚ฌ์šฉ์ž ์˜ต์…˜. "์‚ฌ์šฉ์ž ์ด๋ฆ„ ํ•„ํ„ฐ๋ง"์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.
์ž์„ธํ•œ ๋‚ด์šฉ์€ ์„น์…˜์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

๊ฒฝ๊ณ  ๋ฐ ์œ„ํ—˜ ์˜ต์…˜์€ ๋ฐฑ๋ถ„์œจ๋กœ ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ์—†์Šต๋‹ˆ๋‹ค
์ด ์ž‘์—…์˜ ๊ธฐ๋ณธ๊ฐ’: ๊ฒฝ๊ณ  ๋ฐ ์œ„ํ—˜์„ ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ฒฝ๊ณ  ๊ฐ’
์ž„๊ณ„๊ฐ’๋ณด๋‹ค ํด ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ถœ๋ ฅ์€ ๋‹ค์Œ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌ๋œ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
์ ์ค‘๋ฅ , ๊ฐ€์žฅ ์ž‘์€ ๊ฒƒ๋ถ€ํ„ฐ.

์˜ˆ: ํ˜ธ์ŠคํŠธ flagg์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์ ์ค‘๋ฅ ์ด 90% ๋ฏธ๋งŒ์ธ ๊ฒฝ์šฐ ๊ฒฝ๊ณ ํ•˜๊ณ  ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ ์œ„ํ—˜ํ•ฉ๋‹ˆ๋‹ค.
80% ๋ฏธ๋งŒ.

check_postgres_hitratio --host=flagg --warning='90%' --critical='80%'

MRTG ์ถœ๋ ฅ์˜ ๊ฒฝ์šฐ ์ ์ค‘๋ฅ ์ด ๊ฐ€์žฅ ์ž‘์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋ฐฑ๋ถ„์œจ์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
์ฒซ ๋ฒˆ์งธ ์ค„์—๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ด๋ฆ„์ด ์žˆ๊ณ  ๋„ค ๋ฒˆ์งธ ์ค„์—๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ด๋ฆ„์ด ์žˆ์Šต๋‹ˆ๋‹ค.

hot_standby_delay
("symlink: check_hot_standby_delay") ์ŠคํŠธ๋ฆฌ๋ฐ ๋ณต์ œ ์ง€์—ฐ์„ ๊ณ„์‚ฐํ•˜์—ฌ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
๋งˆ์Šคํ„ฐ ์„œ๋ฒ„์˜ ํ˜„์žฌ xlog ์œ„์น˜์™€
๊ทธ๊ฒƒ์— ์—ฐ๊ฒฐ๋œ ์Šฌ๋ ˆ์ด๋ธŒ. ์Šฌ๋ ˆ์ด๋ธŒ ์„œ๋ฒ„๋Š” hot_standby(์˜ˆ: ์ฝ๊ธฐ ์ „์šฉ) ๋ชจ๋“œ์— ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
๋”ฐ๋ผ์„œ ์ด ์ž‘์—…์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ์ตœ์†Œ ๋ฒ„์ „์€ Postgres 9.0์ž…๋‹ˆ๋‹ค. NS --๊ฒฝ๊ณ  ๊ณผ
--๋น„ํŒ์ ์ธ ์˜ต์…˜์€ xlog ์œ„์น˜ ๊ฐ„์˜ ๋ธํƒ€์ž…๋‹ˆ๋‹ค. ์ด ๊ฐ’์€ ๋ฐ”์ดํŠธ์ด๊ธฐ ๋•Œ๋ฌธ์—
WAL์˜ ์˜คํ”„์…‹์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์˜ˆ์ƒ ํŠธ๋žœ์žญ์…˜ ๋ณผ๋ฅจ๊ณผ ์ผ์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
๊ฑฐ์ง“ ๊ธ์ • ๋˜๋Š” ๋ถ€์ •์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด.

์ฒซ ๋ฒˆ์งธ "--dbname", "--host" ๋ฐ "--port" ๋“ฑ์˜ ์˜ต์…˜์€ ๋งˆ์Šคํ„ฐ๋กœ ๊ฐ„์ฃผ๋ฉ๋‹ˆ๋‹ค. NS
๋‘ ๋ฒˆ์งธ๋Š” ๋…ธ์˜ˆ์— ์†ํ•ฉ๋‹ˆ๋‹ค.

๋ฐ”์ดํŠธ ๊ฐ’์€ ์ŠคํŠธ๋ฆฌ๋ฐ์— ํ•„์š”ํ•œ ํŠธ๋žœ์žญ์…˜ ๋ณผ๋ฅจ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
Postgres์— ์˜ํ•ด ๊ฒฐ์ •๋œ ๋„ˆ๋ฌด ๋งŽ์€ ์ง€์—ฐ์œผ๋กœ ์ธํ•ด ๋งˆ์Šคํ„ฐ์—์„œ ๋ณต์ œ ์—ฐ๊ฒฐ์ด ๋Š์–ด์กŒ์Šต๋‹ˆ๋‹ค.
๊ตฌ์„ฑ ๋ณ€์ˆ˜ wal_keep_segments. ์‹œ๊ฐ„ ๋‹จ์œ„์˜ ๊ฒฝ์šฐ ์œ ํšจํ•œ ๋‹จ์œ„๋Š” '์ดˆ'์ž…๋‹ˆ๋‹ค.
'๋ถ„', '์‹œ๊ฐ„' ๋˜๋Š” '์ผ'. ๊ฐ๊ฐ์€ ๋‹จ์ˆ˜ ๋˜๋Š” ์•ฝ์–ด๋กœ ์“ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์ฒซ ํŽธ์ง€. ๋‘˜ ๋‹ค ์ง€์ •ํ•  ๋•Œ '๋ฐ”์ดํŠธ ๊ณผ ์‹œ๊ฐ„', ๋‘ ์กฐ๊ฑด ๋ชจ๋‘
์ž„๊ณ„๊ฐ’์„ ์ถฉ์กฑํ•˜๋ ค๋ฉด true์ž…๋‹ˆ๋‹ค.

์‰ผํ‘œ๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
"--dbport=5432,5543"๊ณผ ๊ฐ™์€ --dbhost ๋ฐ --dbport ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋‚˜์—ดํ•ฉ๋‹ˆ๋‹ค. ์ฃผ์–ด์ง€์ง€ ์•Š์œผ๋ฉด,
์ž‘์—…์ด ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ 1: xlog ์žฌ์ƒ์—์„œ ํฌํŠธ 5433์˜ ๋กœ์ปฌ ๋ณต์ œ๋ณธ์ด ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ๋’ค์— ์žˆ์Œ์„ ๊ฒฝ๊ณ ํ•ฉ๋‹ˆ๋‹ค.
์ „ํ˜€

check_hot_standby_delay --dbport=5432,5433 --warning='1'

์˜ˆ 2: replica1์ด ๋งˆ์ง€๋ง‰์œผ๋กœ ์ˆ˜์‹ ํ•œ ํŠธ๋žœ์žญ์…˜์ด 10๊ฐœ๋ฅผ ์ดˆ๊ณผํ•˜๋Š” ๊ฒฝ์šฐ ์ž„๊ณ„๊ฐ’ ์ œ๊ณต
๋ช‡๋ถ„ ์ „์—

check_hot_standby_delay --dbhost=master,replica1 --critical='10๋ถ„'

์˜ˆ 3: ๋งˆ์Šคํ„ฐ๊ฐ€ ์ˆœ๊ฐ„์ ์œผ๋กœ ๋ณด๊ณ  ์žˆ๋Š” ๊ฒฝ์šฐ replica1์ด 1 WAL ์„ธ๊ทธ๋จผํŠธ ๋’ค์— ์žˆ๋„๋ก ํ—ˆ์šฉ
์ŠคํŠธ๋ฆฌ๋ฐ ๋ณต์ œ ์—ฐ๊ฒฐ์ด ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ๋ณด๋‹ค ๋” ๋งŽ์€ ํ™œ๋™ ๋˜๋Š” 10๋ถ„ ๋’ค,
๋งˆ์Šคํ„ฐ๊ฐ€ ํ™œ๋™์„ ๊ฑฐ์˜ ๋ณด๊ณ  ์žˆ์ง€ ์•Š๊ณ  ํŠธ๋žœ์žญ์…˜์„ ์ฒ˜๋ฆฌํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ
๋‘˜ ๋‹ค ๋ณต์ œ ์—ฐ๊ฒฐ์— ์ง€์†์ ์ธ ๋ฌธ์ œ๊ฐ€ ์žˆ์Œ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

check_hot_standby_delay --dbhost=master,replica1 --warning='1048576 ๋ฐ 2๋ถ„' --critical='16777216 ๋ฐ 10๋ถ„'

์ธ๋ฑ์Šค ํฌ๊ธฐ
ํ…Œ์ด๋ธ” ํฌ๊ธฐ
๊ด€๊ณ„ ํฌ๊ธฐ
(์‹ฌ๋ณผ ๋งํฌ: "check_postgres_index_size", "check_postgres_table_size" ๋ฐ
"check_postgres_relation_size") ์ž‘์—… ํ…Œ์ด๋ธ” ํฌ๊ธฐ ๊ณผ ์ธ๋ฑ์Šค ํฌ๊ธฐ ๋‹จ์ˆœํžˆ
๋ณ€ํ˜• ๊ด€๊ณ„ ํฌ๊ธฐ ๋„ˆ๋ฌด ์„ฑ์žฅํ•œ ๊ด€๊ณ„๋ฅผ ํ™•์ธํ•˜๋Š” ์ž‘์—…
ํฐ. ๊ด€๊ณ„(์ฆ‰, ํ…Œ์ด๋ธ” ๋ฐ ์ธ๋ฑ์Šค)๋Š” ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•„ํ„ฐ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. --ํฌํ•จํ•˜๋‹ค
๊ณผ --๋“ค์–ด์˜ค์ง€ ๋ชปํ•˜๊ฒŒ ํ•˜๋‹ค ์˜ต์…˜. ์ž์„ธํ•œ ๋‚ด์šฉ์€ "๊ธฐ๋ณธ ํ•„ํ„ฐ๋ง" ์„น์…˜์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค. ๊ด€๊ณ„ ์ˆ˜
๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์†Œ์œ ํ•œ ์‚ฌ์šฉ์ž๊ฐ€ ํ•„ํ„ฐ๋งํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. --ํฌํ•จ ์‚ฌ์šฉ์ž ๊ณผ --์ œ์™ธ ์‚ฌ์šฉ์ž
์˜ต์…˜. ์ž์„ธํ•œ ๋‚ด์šฉ์€ "USER NAME FILTERING" ์„น์…˜์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

์— ๋Œ€ํ•œ ๊ฐ’ --๊ฒฝ๊ณ  ๊ณผ --๋น„ํŒ์ ์ธ ์˜ต์…˜์€ ํŒŒ์ผ ํฌ๊ธฐ์ด๋ฉฐ ๋‹จ์œ„๋Š”
๋ฐ”์ดํŠธ, ํ‚ฌ๋กœ๋ฐ”์ดํŠธ, ๋ฉ”๊ฐ€๋ฐ”์ดํŠธ, ๊ธฐ๊ฐ€๋ฐ”์ดํŠธ, ํ…Œ๋ผ๋ฐ”์ดํŠธ ๋˜๋Š” ์—‘์‚ฌ๋ฐ”์ดํŠธ. ๊ฐ๊ฐ ์ค„์ž„๋ง ๊ฐ€๋Šฅ
์ฒซ ๊ธ€์ž๊นŒ์ง€. ๋‹จ์œ„๊ฐ€ ์ง€์ •๋˜์ง€ ์•Š์œผ๋ฉด ๋ฐ”์ดํŠธ๊ฐ€ ๊ฐ€์ •๋ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์ด ์—†์Šต๋‹ˆ๋‹ค
๊ฐ’: ๊ฒฝ๊ณ ์™€ ์œ„ํ—˜ ์˜ต์…˜์ด ๋ชจ๋‘ ์ œ๊ณต๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ˜ํ™˜ ํ…์ŠคํŠธ๋Š” ๋‹ค์Œ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.
๋ฐœ๊ฒฌ๋œ ๊ฐ€์žฅ ํฐ ๊ด€๊ณ„์˜ ํฌ๊ธฐ.

๊ฒฝ์šฐ --showperf ์˜ต์…˜์ด ํ™œ์„ฑํ™”๋˜๊ณ , ๋ชจ๋“  ํฌ๊ธฐ์™€์˜ ๊ด€๊ณ„๊ฐ€ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค.
์ด๋ฅผ ๋ฐฉ์ง€ํ•˜๋ ค๋ฉด ๋‹ค์Œ์„ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. --perflimit ์˜ต์…˜
"ORDER BY size DESC LIMIT(perflimit)"๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ์ฟผ๋ฆฌ์ž…๋‹ˆ๋‹ค.

์˜ˆ 1: ํ˜ธ์ŠคํŠธ burrick์—์„œ 600MB๋ณด๋‹ค ํฐ ํ…Œ์ด๋ธ”์ด ์žˆ์œผ๋ฉด ์ž„๊ณ„๊ฐ’์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

check_postgres_table_size --critical='600MB' --warning='600MB' --host=burrick

์˜ˆ 2: ํ…Œ์ด๋ธ” ์ œํ’ˆ์˜ ํฌ๊ธฐ๊ฐ€ 4GB๋ฅผ ์ดˆ๊ณผํ•˜๋ฉด ๊ฒฝ๊ณ ํ•˜๊ณ  4.5GB์—์„œ ์ž„๊ณ„๊ฐ’์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

check_postgres_table_size --host=burrick --warning='4GB' --critical='4.5GB' --include=์ œํ’ˆ

์˜ˆ 3: postgres๊ฐ€ ์†Œ์œ ํ•˜์ง€ ์•Š์€ ์ธ๋ฑ์Šค๊ฐ€ 500MB๋ฅผ ์ดˆ๊ณผํ•˜๋ฉด ๊ฒฝ๊ณ ํ•ฉ๋‹ˆ๋‹ค.

check_postgres_index_size --port=5432 --excludeuser=postgres -w 500MB -c 600MB

MRTG ์ถœ๋ ฅ์˜ ๊ฒฝ์šฐ ๊ฐ€์žฅ ํฐ ๊ด€๊ณ„์˜ ํฌ๊ธฐ(๋ฐ”์ดํŠธ)์™€ ์ด๋ฆ„์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฐ ๊ด€๊ณ„๋ฅผ ๋„ค ๋ฒˆ์งธ ์ค„๋กœ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

๋งˆ์ง€๋ง‰_๋ถ„์„
last_vacuum
last_autoanalyze
last_autovacuum
(์‹ฌ๋ณผ ๋งํฌ: "check_postgres_last_analyze", "check_postgres_last_vacuum",
"check_postgres_last_autoanalyze" ๋ฐ "check_postgres_last_autovacuum") ์‹œ๊ฐ„ ํ™•์ธ
ํ•˜๋‚˜ ์ด์ƒ์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์žˆ๋Š” ๊ฐ ํ…Œ์ด๋ธ”์— ๋Œ€ํ•ด ์ง„๊ณต(๋˜๋Š” ๋ถ„์„)์ด ๋งˆ์ง€๋ง‰์œผ๋กœ ์‹คํ–‰๋œ ์ดํ›„์ž…๋‹ˆ๋‹ค.
์ด๋Ÿฌํ•œ ์ž‘์—…์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ๋Œ€์ƒ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ๋ฒ„์ „ 8.3 ์ด์ƒ์ด๊ฑฐ๋‚˜
๋ฒ„์ „์€ 8.2์ด๊ณ  ๊ตฌ์„ฑ ๋ณ€์ˆ˜๋Š” ํ†ต๊ณ„_ํ–‰_์ˆ˜์ค€ ํ™œ์„ฑํ™”๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํ…Œ์ด๋ธ”
๋กœ ํ•„ํ„ฐ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. --ํฌํ•จํ•˜๋‹ค ๊ณผ --๋“ค์–ด์˜ค์ง€ ๋ชปํ•˜๊ฒŒ ํ•˜๋‹ค ์˜ต์…˜. "๊ธฐ๋ณธ ํ•„ํ„ฐ๋ง" ์ฐธ์กฐ
์ž์„ธํ•œ ๋‚ด์šฉ์€ ์„น์…˜์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค. ํ…Œ์ด๋ธ” ์†Œ์œ ์ž๋Š” ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•„ํ„ฐ๋งํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
--ํฌํ•จ ์‚ฌ์šฉ์ž ๊ณผ --์ œ์™ธ ์‚ฌ์šฉ์ž ์˜ต์…˜. ์ž์„ธํ•œ ๋‚ด์šฉ์€ "USER NAME FILTERING" ์„น์…˜์„ ์ฐธ์กฐํ•˜์„ธ์š”.
์„ธ๋ถ€.

๋‹จ์œ„ --๊ฒฝ๊ณ  ๊ณผ --๋น„ํŒ์ ์ธ ์‹œ๊ฐ„์œผ๋กœ ์ง€์ •๋ฉ๋‹ˆ๋‹ค. ์œ ํšจํ•œ ๋‹จ์œ„๋Š” ์ดˆ,
๋ถ„, ์‹œ๊ฐ„ ๋ฐ ์ผ; ๋ชจ๋‘ ์ฒซ ๊ธ€์ž๋กœ ์ถ•์•ฝ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹จ์œ„๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ
์ฃผ์–ด์ง„ ๊ฒฝ์šฐ '์ดˆ'๋กœ ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ '1์ผ'๊ณผ '2์ผ'์ž…๋‹ˆ๋‹ค. ์ฐธ๊ณ ํ•˜์„ธ์š”
์ด ํ•„๋“œ๊ฐ€ ์ž๋™์œผ๋กœ ์ฑ„์›Œ์ง€์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ํ™•์‹คํ•œ ๊ฒฝ์šฐ
ํ…Œ์ด๋ธ”์ด ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ค๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.
ํ…Œ์ŠคํŠธ์—์„œ ์ œ์™ธํ•˜์‹ญ์‹œ์˜ค.

'information_schema'๋ผ๋Š” ์Šคํ‚ค๋งˆ๋Š” ์œ ์ผํ•œ ํ…Œ์ด๋ธ”์ด๋ฏ€๋กœ ์ด ํ…Œ์ŠคํŠธ์—์„œ ์ œ์™ธ๋ฉ๋‹ˆ๋‹ค.
ํฌํ•จ์€ ์ž‘๊ณ  ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

'์ž๋™'์ด ์•„๋‹Œ ๋ฒ„์ „์€ ์ž๋™ ๋ฒ„์ „๋„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ๊ธฐํƒ€์—์„œ
๋‹จ์–ด, last_vacuum์„ ์‚ฌ์šฉํ•˜๋ฉด ์ผ๋ฐ˜ ์ง„๊ณต์ธ์ง€ ์—ฌ๋ถ€์— ๊ด€๊ณ„์—†์ด ๋งˆ์ง€๋ง‰ ์ง„๊ณต์— ๋Œ€ํ•ด ๋ณด๊ณ ํ•ฉ๋‹ˆ๋‹ค.
๋˜๋Š” autovacuum ๋ฐ๋ชฌ์— ์˜ํ•ด ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

์˜ˆ 1: 3์ผ ๋™์•ˆ ์ฒญ์†Œ๋˜์ง€ ์•Š์€ ํ…Œ์ด๋ธ”์ด ์žˆ์œผ๋ฉด ๊ฒฝ๊ณ ํ•˜๊ณ 
์ฃผ, ์ˆ™์ฃผ ์‘ฅ์˜ ๊ฒฝ์šฐ

check_postgres_last_vacuum --host=์‘ฅ --warning='3d' --critical='7d'

์˜ˆ 2: ์œ„์™€ ๊ฐ™์ง€๋งŒ ์‚ฌ์šฉ์ž 'eve' ๋˜๋Š” 'mallory'์— ์†ํ•œ ํ…Œ์ด๋ธ”์„ ๊ฑด๋„ˆ๋œ๋‹ˆ๋‹ค.

check_postgres_last_vacuum --host=์‘ฅ --warning='3d' --critical='7d' --excludeusers=eve, mallory

MRTG ์ถœ๋ ฅ์˜ ๊ฒฝ์šฐ (์ฒซ ๋ฒˆ์งธ ์ค„์—) a ์ดํ›„ ์ตœ์†Œ ์‹œ๊ฐ„(์ดˆ)์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
ํ…Œ์ด๋ธ”์ด ๋งˆ์ง€๋ง‰์œผ๋กœ ์ง„๊ณต ์ฒ˜๋ฆฌ๋˜๊ฑฐ๋‚˜ ๋ถ„์„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋„ค ๋ฒˆ์งธ ์ค„์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ด๋ฆ„์„ ๋ฐ˜ํ™˜ํ•˜๊ณ 
ํ…Œ์ด๋ธ”์˜ ์ด๋ฆ„.

๊ฒฝ์ฒญ์ž
("symlink: check_postgres_listener") ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ํ•˜๋‚˜ ์ด์ƒ์„ ๋“ฃ๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธ
ํŠน์ • ๋ฌธ์ž์—ด(LISTEN/NOTIFY ์‹œ์Šคํ…œ ์‚ฌ์šฉ)์€ pg_listener ํ…Œ์ด๋ธ”์„ ์‚ดํŽด๋ด…๋‹ˆ๋‹ค.
๊ฒฝ๊ณ  ๋˜๋Š” ์œ„ํ—˜ ์ค‘ ํ•˜๋‚˜๋งŒ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ํ˜•์‹์€ ๋‹ค์Œ์„ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฐ„๋‹จํ•œ ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค.
LISTEN ๋Œ€์ƒ, ๋˜๋Š” ์ •๊ทœ์‹ ๊ฒ€์‚ฌ๋ฅผ ์œ„ํ•œ ๋ฌธ์ž์—ด์ด ๋’ค์— ์˜ค๋Š” ๋ฌผ๊ฒฐํ‘œ ๋ฌธ์ž.
์ด ๊ฒ€์‚ฌ๋Š” Postgres 9.0 ์ด์ƒ ๋ฒ„์ „์—์„œ๋Š” ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์˜ˆ 1: ํฌํŠธ์—์„œ bucardo_mcp_ping ๋ฌธ์ž์—ด์„ ์ˆ˜์‹ ํ•˜๋Š” ์‚ฌ๋žŒ์ด ์—†์œผ๋ฉด ๊ฒฝ๊ณ ๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.
5555 ๋ฐ 5556

check_postgres_listener --port=5555,5556 --warning=bucardo_mcp_ping

์˜ˆ 2: 'grimm'๊ณผ ์ผ์น˜ํ•˜๋Š” ํ™œ์„ฑ LISTEN ์š”์ฒญ์ด ์—†๋Š” ๊ฒฝ์šฐ ์ž„๊ณ„๊ฐ’ ์ œ๊ณต
๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์˜ค์Šค์นด

check_postgres_listener --db ์˜ค์Šค์นด --critical=~grimm

MRTG ์ถœ๋ ฅ์˜ ๊ฒฝ์šฐ ์„ฑ๊ณต ๋˜๋Š” ์‹คํŒจ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ฒซ ๋ฒˆ์งธ์— 1 ๋˜๋Š” 0์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฆ„
๋ฅผ ํ†ตํ•ด ํ†ต์ง€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. --mrtg ์˜ต์…˜์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

์ž ๊ธˆ
("symlink: check_postgres_locks") ํ•˜๋‚˜ ์ด์ƒ์˜ ์ž ๊ธˆ์— ๋Œ€ํ•œ ์ด ์ˆ˜๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํด๋Ÿฌ์Šคํ„ฐ๋‹น ๋‘ ๋ฒˆ ์ด์ƒ ์‹คํ–‰ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ˆ˜
๋กœ ํ•„ํ„ฐ๋ง --ํฌํ•จํ•˜๋‹ค ๊ณผ --๋“ค์–ด์˜ค์ง€ ๋ชปํ•˜๊ฒŒ ํ•˜๋‹ค ์˜ต์…˜. "๊ธฐ๋ณธ ํ•„ํ„ฐ๋ง" ์„น์…˜์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.
์ž์„ธํ•œ ๋‚ด์šฉ์€.

XNUMXD๋ดํƒˆ์˜ --๊ฒฝ๊ณ  ๊ณผ --๋น„ํŒ์ ์ธ ์˜ต์…˜์€ ๋‹ค์Œ์„ ๋‚˜ํƒ€๋‚ด๋Š” ๋‹จ์ˆœํ•œ ์ˆซ์ž๋กœ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์ด ์ž ๊ธˆ ์ˆ˜ ๋˜๋Š” ์ž ๊ธˆ ์œ ํ˜•๋ณ„๋กœ ๋ถ„๋ฅ˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์œ ํšจํ•œ ์ž ๊ธˆ ์ด๋ฆ„
'total', 'waiting' ๋˜๋Š” Postgres์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์ž ๊ธˆ ์œ ํ˜•์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ด๋ฆ„์€
๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ํ•˜์ง€ ์•Š๊ณ  ๋์— "์ž ๊ธˆ" ๋ถ€๋ถ„์ด ํ•„์š”ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ๋ฐฐํƒ€์ ์ธ ์ผ์น˜ํ•ฉ๋‹ˆ๋‹ค
'์ต์Šคํด๋ฃจ์‹œ๋ธŒ ๋ฝ'. ํ˜•์‹์€ ์ด๋ฆ„=์ˆซ์ž์ด๋ฉฐ ๋‹ค๋ฅธ ํ•ญ๋ชฉ์€ ์ฝœ๋ก  ๋˜๋Š”
์„ธ๋ฏธ์ฝœ๋ก (๋˜๋Š” ๊ธฐํƒ€ ๊ธฐํ˜ธ).

์˜ˆ 1: ์ž ๊ธˆ ์ˆ˜๊ฐ€ 100๊ฐœ ์ด์ƒ์ธ ๊ฒฝ์šฐ ๊ฒฝ๊ณ , 200๊ฐœ ์ด์ƒ์ธ ๊ฒฝ์šฐ ์ž„๊ณ„๊ฐ’ ์ผœ๊ธฐ
ํ˜ธ์ŠคํŠธ ๊ฐ€๋ ›

check_postgres_locks --host=garrett --warning=100 --์ค‘์š”=200

์˜ˆ 2: ํ˜ธ์ŠคํŠธ artemus์—์„œ 200๊ฐœ ์ด์ƒ์˜ ์ž ๊ธˆ์ด ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ ๊ฒฝ๊ณ ํ•˜๊ณ  ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ ์ž„๊ณ„๊ฐ’์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
์ด 250๊ฐœ ์ด์ƒ์˜ ์ž ๊ธˆ์ด ์กด์žฌํ•˜๊ฑฐ๋‚˜ 20๊ฐœ ์ด์ƒ์˜ ๋‹จ๋… ์ž ๊ธˆ์ด ์กด์žฌํ•˜๊ฑฐ๋‚˜ 5๊ฐœ ์ด์ƒ์˜ ์—ฐ๊ฒฐ์ด ์žˆ๋Š” ๊ฒฝ์šฐ
์ž ๊ธˆ์„ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

check_postgres_locks --host=artemus --warning=200 --critical="total=250:waiting=5:exclusive=20"

MRTG ์ถœ๋ ฅ์˜ ๊ฒฝ์šฐ ์ฒซ ๋ฒˆ์งธ ์ค„์˜ ์ž ๊ธˆ ์ˆ˜์™€ ์ด๋ฆ„์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
๋„ค ๋ฒˆ์งธ ์ค„์— ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค.

๋กœ๊ทธ ํŒŒ์ผ
("symlink: check_postgres_logfile") ๋กœ๊ทธ ํŒŒ์ผ์ด ์˜ˆ์ƒ ์œ„์น˜์— ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
๋ฐ ๋กœ๊ทธ์ธ ์ค‘์ž…๋‹ˆ๋‹ค. ์ด ์ž‘์—…์€ ๊ฐ๊ฐ์— ๋Œ€ํ•ด ์˜ค๋ฅ˜๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๋Š” ๋ช…๋ น์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ํ™•์ธํ•˜๊ณ  ๋ฉ”์‹œ์ง€๊ฐ€ ๋กœ๊ทธ์— ํ‘œ์‹œ๋˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ์Šค์บ”
๋กœ๊ทธ๊ฐ€ ์žˆ์–ด์•ผ ํ•  ์œ„์น˜๋ฅผ ํŒŒ์•…ํ•˜๊ธฐ ์œ„ํ•ด Postgres ๋‚ด๋ถ€์˜ ๋‹ค์–‘ํ•œ log_* ์„ค์ •. ๋งŒ์•ฝ ๋„ˆ๋ผ๋ฉด
syslog๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ๊ฒฝ์šฐ, /etc/syslog.conf.
๋˜๋Š” ๋กœ๊ทธ ํŒŒ์ผ์˜ ์ด๋ฆ„์„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. --๋กœ๊ทธ ํŒŒ์ผ ์˜ต์…˜. ์ด๊ฒƒ์€
๋กœ๊ทธ์— ์™ธ๋ถ€ ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ๊ตฌ๋™๋˜๋Š” ์‚ฌ์šฉ์ž ์ •์˜ ํšŒ์ „ ๊ตฌ์„ฑํ‘œ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ํŠนํžˆ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.
XNUMXD๋ดํƒˆ์˜ --๋กœ๊ทธ ํŒŒ์ผ ์˜ต์…˜์€ "%Y %m %d %H" ์ด์Šค์ผ€์ดํ”„ ๋ฌธ์ž๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
ํ˜„์žฌ ์—ฐ๋„, ์›”, ๋‚ ์งœ ๋ฐ ์‹œ๊ฐ„์„ ๊ฐ๊ฐ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ์˜ค๋ฅ˜๋Š” ํ•ญ์ƒ
๊ฒฝ๊ณ  ์˜ต์…˜์ด XNUMX์ด ์•„๋‹Œ ๊ฐ’์œผ๋กœ ์ „๋‹ฌ๋˜์ง€ ์•Š๋Š” ํ•œ ์œ„ํ—˜์œผ๋กœ ๋ณด๊ณ ๋ฉ๋‹ˆ๋‹ค.
ํŠน์ • ์šฉ๋„ ์™ธ์— "--warning" ๋ฐ "--critical" ์˜ต์…˜์€ ์ง€์› be
์ต์ˆ™ํ•œ.

์˜ˆ 1: ํฌํŠธ 5432์—์„œ ๋กœ๊ทธ ํŒŒ์ผ์ด ํŒŒ์ผ์— ๊ธฐ๋ก๋˜๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.
/home/greg/pg8.2.log

check_postgres_logfile --port=5432 --logfile=/home/greg/pg8.2.log

์˜ˆ 2: ์œ„์™€ ๋™์ผํ•˜์ง€๋งŒ ์ค‘์š”ํ•˜์ง€ ์•Š์€ ๊ฒฝ๊ณ  ๋ฐœ์ƒ

check_postgres_logfile --port=5432 --logfile=/home/greg/pg8.2.log -w 1

MRTG ์ถœ๋ ฅ์˜ ๊ฒฝ์šฐ ์„ฑ๊ณต ๋˜๋Š” ์‹คํŒจ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ฒซ ๋ฒˆ์งธ ์ค„์— 1 ๋˜๋Š” 0์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์—
์‹คํŒจ์˜ ๊ฒฝ์šฐ ๋„ค ๋ฒˆ์งธ ์ค„์€ ๋ฐœ์ƒํ•œ ์‹คํŒจ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

new_version_bc
("symlink: check_postgres_new_version_bc") Bucardo์˜ ์ตœ์‹  ๋ฒ„์ „์ธ์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
ํ”„๋กœ๊ทธ๋žจ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ ๋ฒ„์ „์€ "bucardo_ctl --version"์„ ์‹คํ–‰ํ•˜์—ฌ ์–ป์Šต๋‹ˆ๋‹ค.
์ฃผ์š” ์—…๊ทธ๋ ˆ์ด๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ ๊ฒฝ๊ณ ๊ฐ€ ๋ฐ˜ํ™˜๋ฉ๋‹ˆ๋‹ค. ๋ฆฌ๋น„์ „ ์—…๊ทธ๋ ˆ์ด๋“œ๊ฐ€
์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ ์ž„๊ณ„๊ฐ’์ด ๋ฐ˜ํ™˜๋ฉ๋‹ˆ๋‹ค. (Bucardo๋Š” ๋งˆ์Šคํ„ฐ์—์„œ ๋…ธ์˜ˆ๋กœ, ๋งˆ์Šคํ„ฐ์—์„œ ๋งˆ์Šคํ„ฐ๋กœ
Postgres์šฉ ๋ณต์ œ ์‹œ์Šคํ…œ: ์ฐธ์กฐ http://bucardo.org ์ž์„ธํ•œ ๋‚ด์šฉ์€). ๋˜ํ•œ๋ณด์‹ญ์‹œ์˜ค
"--get_method" ์˜ต์…˜์— ๋Œ€ํ•œ ์ •๋ณด์ž…๋‹ˆ๋‹ค.

new_version_box
("symlink: check_postgres_new_version_box") boxinfo์˜ ์ตœ์‹  ๋ฒ„์ „์ธ์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
ํ”„๋กœ๊ทธ๋žจ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ ๋ฒ„์ „์€ "boxinfo.pl --version"์„ ์‹คํ–‰ํ•˜์—ฌ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์ฃผ์š” ์—…๊ทธ๋ ˆ์ด๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ ๊ฒฝ๊ณ ๊ฐ€ ๋ฐ˜ํ™˜๋ฉ๋‹ˆ๋‹ค. ๋ฆฌ๋น„์ „ ์—…๊ทธ๋ ˆ์ด๋“œ๊ฐ€
์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ ์ž„๊ณ„๊ฐ’์ด ๋ฐ˜ํ™˜๋ฉ๋‹ˆ๋‹ค. (boxinfo๋Š” ์ค‘์š”ํ•œ ์ •๋ณด๋ฅผ ์–ป๊ธฐ ์œ„ํ•œ ํ”„๋กœ๊ทธ๋žจ์ž…๋‹ˆ๋‹ค.
์„œ๋ฒ„์—์„œ ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์™€ HTML ํ˜•์‹์œผ๋กœ ๋„ฃ๊ธฐ: ์ฐธ์กฐ
http://bucardo.org/wiki/boxinfo ์ž์„ธํ•œ ๋‚ด์šฉ์€). ์— ๋Œ€ํ•œ ์ •๋ณด๋„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.
"--get_method" ์˜ต์…˜.

new_version_cp
("symlink: check_postgres_new_version_cp") ์ด ํ”„๋กœ๊ทธ๋žจ์˜ ์ตœ์‹  ๋ฒ„์ „์ธ์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
(check_postgres)๋Š” ๋ฉ”์ธ์— ์žˆ๋Š” ์ž‘์€ ํ…์ŠคํŠธ ํŒŒ์ผ์—์„œ ๋ฒ„์ „์„ ๊ฐ€์ ธ์™€์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
ํ”„๋กœ์ ํŠธ ํ™ˆ ํŽ˜์ด์ง€์˜ ํŽ˜์ด์ง€์ž…๋‹ˆ๋‹ค. ๋ฐ˜ํ™˜๋œ ๋ฒ„์ „์ด ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ ๊ฒฝ๊ณ ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
์‹คํ–‰ ์ค‘์ธ ๊ฒƒ๊ณผ ์ผ์น˜ํ•ฉ๋‹ˆ๋‹ค. ๊ถŒ์žฅ ์ ๊ฒ€ ๊ฐ„๊ฒฉ์€ XNUMX์ผ XNUMXํšŒ์ž…๋‹ˆ๋‹ค. ์ฐธ์กฐ
"--get_method" ์˜ต์…˜์— ๋Œ€ํ•œ ์ •๋ณด์ž…๋‹ˆ๋‹ค.

new_version_pg
("symlink: check_postgres_new_version_pg") Postgres์˜ ์ตœ์‹  ๋ฒ„์ „์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
์—ฐ๊ฒฐ๋œ ๊ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋Œ€ํ•ด ์ด๊ฒƒ์€ ๊ฐœ์ •๋งŒ ํ™•์ธํ•œ๋‹ค๋Š” ์ ์— ์œ ์˜ํ•˜์‹ญ์‹œ์˜ค. ์˜ˆ๋ฅผ ๋“ค์–ด
8.3.6 ~ 8.3.7. ๊ฐœ์ •ํŒ์€ ํ•ญ์ƒ 100% ๋ฐ”์ด๋„ˆ๋ฆฌ์™€ ํ˜ธํ™˜๋˜๋ฉฐ ๋คํ”„ ๋ฐ
์—…๊ทธ๋ ˆ์ด๋“œ๋ฅผ ์œ„ํ•ด ๋ณต์›ํ•ฉ๋‹ˆ๋‹ค. ๋ฒ„๊ทธ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์ˆ˜์ •๋˜์—ˆ์œผ๋ฏ€๋กœ ๊ฐ€๋Šฅํ•œ ํ•œ ๋นจ๋ฆฌ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜์‹ญ์‹œ์˜ค.
ํ•ญ์ƒ ๊ถŒ์žฅ๋ฉ๋‹ˆ๋‹ค. ์ตœ์‹  ๋ฒ„์ „์ด ์—†์œผ๋ฉด ๊ฒฝ๊ณ ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€์ด๋‹ค
์ด ๊ฒ€์‚ฌ๋Š” ํ•˜๋ฃจ์— ํ•œ ๋ฒˆ ์ด์ƒ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์— ๋Œ€ํ•œ ์ •๋ณด๋„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.
"--get_method" ์˜ต์…˜.

new_version_tnm
("symlink: check_postgres_new_version_tnm") tail_n_mail์˜ ์ตœ์‹  ๋ฒ„์ „์ธ์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
ํ”„๋กœ๊ทธ๋žจ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ ๋ฒ„์ „์€ "tail_n_mail --version"์„ ์‹คํ–‰ํ•˜์—ฌ ์–ป์Šต๋‹ˆ๋‹ค.
์ฃผ์š” ์—…๊ทธ๋ ˆ์ด๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ ๊ฒฝ๊ณ ๊ฐ€ ๋ฐ˜ํ™˜๋ฉ๋‹ˆ๋‹ค. ๋ฆฌ๋น„์ „ ์—…๊ทธ๋ ˆ์ด๋“œ๊ฐ€
์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ ์ž„๊ณ„๊ฐ’์ด ๋ฐ˜ํ™˜๋ฉ๋‹ˆ๋‹ค. (tail_n_mail์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋Š” ๋กœ๊ทธ ๋ชจ๋‹ˆํ„ฐ๋ง ๋„๊ตฌ์ž…๋‹ˆ๋‹ค.
Postgres ๋กœ๊ทธ์— ํฅ๋ฏธ๋กœ์šด ์ด๋ฒคํŠธ๊ฐ€ ๋‚˜ํƒ€๋‚  ๋•Œ ๋ฉ”์ผ์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค. ๋ณด๋‹ค:
http://bucardo.org/wiki/Tail_n_mail ์ž์„ธํ•œ ๋‚ด์šฉ์€). ์— ๋Œ€ํ•œ ์ •๋ณด๋„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.
"--get_method" ์˜ต์…˜.

pgb_pool_cl_active
pgb_pool_cl_waiting
pgb_pool_sv_active
pgb_pool_sv_idle
pgb_pool_sv_used
pgb_pool_sv_tested
pgb_pool_sv_login
pgb_pool_maxwait
(์‹ฌ๋ณผ ๋งํฌ: "check_postgres_pgb_pool_cl_active", "check_postgres_pgb_pool_cl_waiting",
"check_postgres_pgb_pool_sv_active", "check_postgres_pgb_pool_sv_idle",
"check_postgres_pgb_pool_sv_used", "check_postgres_pgb_pool_sv_tested",
"check_postgres_pgb_pool_sv_login" ๋ฐ "check_postgres_pgb_pool_maxwait")

pgbouncer์˜ ํ’€ ํ†ต๊ณ„๋ฅผ ๊ฒ€์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ํ’€์—๋Š” "ํด๋ผ์ด์–ธํŠธ" ์—ฐ๊ฒฐ ์„ธํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
์™ธ๋ถ€ ํด๋ผ์ด์–ธํŠธ์˜ ์—ฐ๊ฒฐ์„ ์ฐธ์กฐํ•˜๊ณ  "์„œ๋ฒ„" ์—ฐ๊ฒฐ์„ ์ฐธ์กฐํ•ฉ๋‹ˆ๋‹ค.
PostgreSQL ์ž์ฒด์— ๋Œ€ํ•œ ์—ฐ๊ฒฐ. ๊ด€๋ จ๋œ check_postgres ์ž‘์—…์—๋Š” "cl_"์ด ์ ‘๋‘์‚ฌ๋กœ ๋ถ™์Šต๋‹ˆ๋‹ค.
๋ฐ "sv_". ํ™œ์„ฑ ํด๋ผ์ด์–ธํŠธ ์—ฐ๊ฒฐ์€ ํ˜„์žฌ ์—ฐ๊ฒฐ๋œ ์—ฐ๊ฒฐ์ž…๋‹ˆ๋‹ค.
ํ™œ์„ฑ ์„œ๋ฒ„ ์—ฐ๊ฒฐ๋กœ. ํด๋ผ์ด์–ธํŠธ ์—ฐ๊ฒฐ์€ "๋Œ€๊ธฐ ์ค‘"์ผ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
์•„์ง ์„œ๋ฒ„ ์—ฐ๊ฒฐ์ด ํ• ๋‹น๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์„œ๋ฒ„ ์—ฐ๊ฒฐ์ด "ํ™œ์„ฑ"(์—ฐ๊ฒฐ๋จ
ํด๋ผ์ด์–ธํŠธ๋กœ), "์œ ํœด"(ํด๋ผ์ด์–ธํŠธ ์—ฐ๊ฒฐ์ด ์—ฐ๊ฒฐ๋  ๋•Œ๊นŒ์ง€ ๋Œ€๊ธฐ), "์‚ฌ์šฉ๋จ"(๊ทธ๋ƒฅ
ํด๋ผ์ด์–ธํŠธ์—์„œ ์—ฐ๊ฒฐ ํ•ด์ œ๋˜๊ณ  ์•„์ง ์œ ํœด ํ’€๋กœ ๋ฐ˜ํ™˜๋˜์ง€ ์•Š์Œ), "ํ…Œ์ŠคํŠธ๋จ"(ํ˜„์žฌ
ํ…Œ์ŠคํŠธ๋จ) ๋ฐ "๋กœ๊ทธ์ธ"(๋กœ๊ทธ์ธ ๊ณผ์ • ์ค‘). maxwait ๊ฐ’์€ ์–ผ๋งˆ๋‚˜ ์˜ค๋ž˜
๋Œ€๊ธฐ ์ค‘์ธ ๊ฐ€์žฅ ์˜ค๋ž˜๋œ ํด๋ผ์ด์–ธํŠธ ์—ฐ๊ฒฐ์ด ๋Œ€๊ธฐํ•œ ์‹œ๊ฐ„(์ดˆ)์ž…๋‹ˆ๋‹ค.

pgbouncer_backends
("symlink: check_postgres_pgbouncer_backends") ํ˜„์žฌ ์—ฐ๊ฒฐ ์ˆ˜๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
pgbouncer๋ฅผ ํ†ตํ•ด ํ•˜๋‚˜ ์ด์ƒ์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋Œ€ํ•ด ์„ ํƒ์ ์œผ๋กœ ์ตœ๋Œ€๊ฐ’๊ณผ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค.
pgbouncer ๊ตฌ์„ฑ ๋ณ€์ˆ˜์— ์˜ํ•ด ๊ฒฐ์ •๋˜๋Š” ํ—ˆ์šฉ๋จ max_client_conn. ๊ทธ๋งŒํผ
--๊ฒฝ๊ณ  ๊ณผ --๋น„ํŒ์ ์ธ ์˜ต์…˜์€ ์„ธ ๊ฐ€์ง€ ํ˜•์‹ ์ค‘ ํ•˜๋‚˜๋ฅผ ์ทจํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฒซ์งธ, ๊ฐ„๋‹จํ•œ ์ˆซ์ž๋Š”
๊ฒฝ๊ณ ๊ฐ€ ์ œ๊ณต๋  ์—ฐ๊ฒฐ ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
์ด ์„ ํƒ์€ ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. max_connections ํ™˜๊ฒฝ. ๋‘˜์งธ, ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋น„์œจ
์—ฐ๊ฒฐ์„ ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์…‹์งธ, ๋‹ค์Œ์„ ๋‚˜ํƒ€๋‚ด๋Š” ์Œ์ˆ˜๊ฐ€ ์ฃผ์–ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๊นŒ์ง€ ๋‚จ์€ ์—ฐ๊ฒฐ ์ˆ˜ max_connections ๋„๋‹ฌํ–ˆ์Šต๋‹ˆ๋‹ค. ์— ๋Œ€ํ•œ ๊ธฐ๋ณธ๊ฐ’
--๊ฒฝ๊ณ  ๊ณผ --๋น„ํŒ์ ์ธ '90%'์™€ '95%'์ž…๋‹ˆ๋‹ค. ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ํ•„ํ„ฐ๋งํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
์ „์—, --ํฌํ•จํ•˜๋‹ค ๊ณผ --๋“ค์–ด์˜ค์ง€ ๋ชปํ•˜๊ฒŒ ํ•˜๋‹ค ์˜ต์…˜. ์ž์„ธํ•œ ๋‚ด์šฉ์€ "๊ธฐ๋ณธ ํ•„ํ„ฐ๋ง" ์„น์…˜์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

์œ ํœด ์ƒํƒœ๊ฐ€ ์•„๋‹Œ ํ”„๋กœ์„ธ์Šค๋งŒ ๋ณด๋ ค๋ฉด ๋‹ค์Œ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. --๋…ธ์ด๋“ค ๋…ผ์Ÿ. ์‚ฌ์šฉ์ž๊ฐ€
์ด ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜๋ ค๋ฉด ์ˆ˜ํผ์œ ์ €์—ฌ์•ผ ํ•˜๋ฏ€๋กœ ์—ฐ๊ฒฐํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ 1: ํ˜ธ์ŠคํŠธ quirm์˜ ์—ฐ๊ฒฐ ์ˆ˜๊ฐ€ 120์— ๋„๋‹ฌํ•˜๋ฉด ๊ฒฝ๊ณ ๋ฅผ ์ œ๊ณตํ•˜๊ณ 
150์— ๋„๋‹ฌํ•˜๋ฉด ์น˜๋ช…์ ์ž…๋‹ˆ๋‹ค.

check_postgres_pgbouncer_backends --host=quirm --warning=120 --tical=150 -p 6432 -u pgbouncer

์˜ˆ 2: ํ˜ธ์ŠคํŠธ์—์„œ max_connections ์„ค์ •์˜ 75%์— ๋„๋‹ฌํ•˜๋ฉด ์ž„๊ณ„๊ฐ’ ์ œ๊ณต
lancre ๋˜๋Š” lancre2.

check_postgres_pgbouncer_backends --warning='75%' --critical='75%' --host=lancre,lancre2 -p 6432 -u pgbouncer

์˜ˆ 3: ํ˜ธ์ŠคํŠธ์— ์—ฐ๊ฒฐ ์Šฌ๋กฏ์ด 10๊ฐœ๋งŒ ๋” ๋‚จ์•„ ์žˆ์„ ๋•Œ ๊ฒฝ๊ณ ๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.
ํ”Œ๋ผ์Šค๋ฏธ๋“œ, ๊ทธ๋ฆฌ๊ณ  5๊ฐœ๋งŒ ๋‚จ์•˜์„ ๋•Œ ์ž„๊ณ„๊ฐ’์ž…๋‹ˆ๋‹ค.

check_postgres_pgbouncer_backends --warning=-10 --creation=-5 --host=plasmid -p 6432 -u pgbouncer

MRTG ์ถœ๋ ฅ์˜ ๊ฒฝ์šฐ ์ฒซ ๋ฒˆ์งธ ์ค„์— ์—ฐ๊ฒฐ ์ˆ˜๊ฐ€ ๋ณด๊ณ ๋˜๊ณ  ๋„ค ๋ฒˆ์งธ ์ค„์— ์—ฐ๊ฒฐ ์ˆ˜๊ฐ€ ๋ณด๊ณ ๋ฉ๋‹ˆ๋‹ค.
ํ–‰์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ด๋ฆ„๊ณผ ํ˜„์žฌ max_client_conn์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ํ•˜๋‚˜ ์ด์ƒ์ธ ๊ฒฝ์šฐ
๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์ฟผ๋ฆฌ๋œ ๊ฒฝ์šฐ ์—ฐ๊ฒฐ ์ˆ˜๊ฐ€ ๊ฐ€์žฅ ๋งŽ์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์ถœ๋ ฅ๋ฉ๋‹ˆ๋‹ค.

pgbouncer_checksum
("symlink: check_postgres_pgbouncer_checksum") ๋ชจ๋“  pgBouncer ์„ค์ •์ด ๋‹ค์Œ๊ณผ ๊ฐ™์€์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
๋งˆ์ง€๋ง‰์œผ๋กœ ํ™•์ธํ–ˆ์„ ๋•Œ์™€ ๋™์ผํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ •๋ ฌ๋œ ๋ชฉ๋ก์˜ ์ฒดํฌ์„ฌ์„ ์ƒ์„ฑํ•˜์—ฌ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค.
์„ค์ • ์ด๋ฆ„๊ณผ ๊ทธ ๊ฐ’. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ด๋ฆ„์„ ์ง€์ •ํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค.
์ž๋™์œผ๋กœ pgbouncer๋กœ ๊ธฐ๋ณธ ์„ค์ •๋ฉ๋‹ˆ๋‹ค. ๋˜๋Š” --๊ฒฝ๊ณ  ๋˜๋Š” --๋น„ํŒ์ ์ธ ์„ ํƒ๊ถŒ
์ฃผ์–ด์ ธ์•ผ ํ•˜์ง€๋งŒ ๋‘˜ ๋‹ค ์ฃผ์–ด์„œ๋Š” ์•ˆ ๋œ๋‹ค. ๊ฐ๊ฐ์˜ ๊ฐ’์€ 32์ž์˜ ์ฒดํฌ์„ฌ์ž…๋‹ˆ๋‹ค.
0์ง„์ˆ˜ ๊ฐ’. ํŠน๋ณ„ํ•œ "--critical=XNUMX" ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๊ธฐ์กด ์ฒดํฌ์„ฌ.

์ด ์ž‘์—…์—๋Š” Digest::MD5 ๋ชจ๋“ˆ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ 1: ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ ํฌํŠธ 6432์—์„œ pgbouncer ๊ตฌ์„ฑ์— ๋Œ€ํ•œ ์ดˆ๊ธฐ ์ฒดํฌ์„ฌ์„ ์ฐพ์Šต๋‹ˆ๋‹ค.
๊ธฐ๋ณธ ์‚ฌ์šฉ์ž(๋ณดํ†ต postgres)

check_postgres_pgbouncer_checksum --port=6432 --์ค‘์š”=0

์˜ˆ 2: ์„ค์ •์ด ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์•˜๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ๋ณ€๊ฒฝ๋œ ๊ฒฝ์šฐ ๊ฒฝ๊ณ ํ•ฉ๋‹ˆ๋‹ค.
์œ„.

check_postgres_pgbouncer_checksum --port=6432 --warning=cd2f3b5e129dc2b4f5c0f6d8d2e64231

MRTG ์ถœ๋ ฅ์˜ ๊ฒฝ์šฐ ์ผ์น˜ํ•˜๋Š” ์ฒดํฌ์„ฌ ์‹คํŒจ์˜ ์„ฑ๊ณต์„ ๋‚˜ํƒ€๋‚ด๋Š” 1 ๋˜๋Š” 0์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
์ฒดํฌ์„ฌ์€ "--mrtg" ์ธ์ˆ˜๋กœ ์ œ๊ณต๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋„ค ๋ฒˆ์งธ ์ค„์€ ํ•ญ์ƒ
ํ˜„์žฌ ์ฒดํฌ์„ฌ.

pgagent_jobs
("symlink: check_postgres_pgagent_jobs")
์ด์ „ ์‹œ๊ฐ„ ๊ฐ„๊ฒฉ์œผ๋กœ ์‹คํ–‰์ด ์„ฑ๊ณตํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋‹ค์Œ์„ ํ™•์ธํ•˜์—ฌ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค.
๊ฒฐ๊ณผ๊ฐ€ XNUMX์ด ์•„๋‹Œ ๋ชจ๋“  ๋‹จ๊ณ„.

"--warning" ๋˜๋Š” "--critical" ๋˜๋Š” ๋‘˜ ๋‹ค ์‹œ๊ฐ„์œผ๋กœ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ž‘์—…์€
ํ˜„์žฌ ์‹œ๊ฐ„ ์ด์ „์— ์ง€์ •๋œ ์‹œ๊ฐ„ ๋™์•ˆ ์˜ค๋ฅ˜๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์œ ํšจํ•œ
๋‹จ์œ„๋Š” ์ดˆ, ๋ถ„, ์‹œ๊ฐ„ ๋ฐ ์ผ์ž…๋‹ˆ๋‹ค. ๋ชจ๋‘ ์ฒซ ๊ธ€์ž๋กœ ์ถ•์•ฝ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋‹จ์œ„๊ฐ€ ์ง€์ •๋˜์ง€ ์•Š์œผ๋ฉด '์ดˆ'๋กœ ๊ฐ„์ฃผ๋ฉ๋‹ˆ๋‹ค.

์˜ˆ 1: ๋งˆ์ง€๋ง‰ ๋‚ ์— ์‹คํ–‰๋œ ์ž‘์—…์ด ์‹คํŒจํ•œ ๊ฒฝ์šฐ ์ž„๊ณ„๊ฐ’์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

check_postgres_pgagent_jobs --์ค‘์š”=1d

์˜ˆ 2: ์ง€๋‚œ ์ฃผ์— ์‹คํ–‰๋œ ์ž‘์—…์ด ์‹คํŒจํ•˜๋ฉด ๊ฒฝ๊ณ ๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

check_postgres_pgagent_jobs --๊ฒฝ๊ณ =7d

์˜ˆ 3: ์ง€๋‚œ 2์‹œ๊ฐ„ ๋™์•ˆ ์‹คํŒจํ•œ ์ž‘์—…์— ๋Œ€ํ•ด ์ž„๊ณ„๊ฐ’์„ ์ œ๊ณตํ•˜๊ณ  ๋‹ค์Œ ์ž‘์—…์— ๋Œ€ํ•œ ๊ฒฝ๊ณ ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
์ง€๋‚œ 4์‹œ๊ฐ„ ๋™์•ˆ ์‹คํŒจํ•œ ์ž‘์—…:

check_postgres_pgagent_jobs --์ค‘์š”=2h --warning=4h

์ค€๋น„๋œ_txns
("symlink: check_postgres_prepared_txns") ๊ธฐ์กด ์ค€๋น„๋œ ๋ชจ๋“  ์—ฐ๋ น ํ™•์ธ
์—…๋ฌด. ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ๋žŒ๋“ค์€ ์ค€๋น„๋œ ํŠธ๋žœ์žญ์…˜์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
๋‘ ๋ถ€๋ถ„์œผ๋กœ ์ปค๋ฐ‹ํ•˜๊ณ  ์œ ์ง€ ๊ด€๋ฆฌ๊ฐ€ ๋ณต์žกํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ๋˜ํ•œ ๋‹ค์Œ๊ณผ ํ˜ผ๋™๋˜์–ด์„œ๋Š” ์•ˆ๋ฉ๋‹ˆ๋‹ค.
์ค€๋น„๋œ ์ง„์ˆ , ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ๋žŒ๋“ค์ด ์ค€๋น„๋ฅผ ๋“ค์—ˆ์„ ๋•Œ ์ƒ๊ฐํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. NS
๊ฒฝ๊ณ ์˜ ๊ธฐ๋ณธ๊ฐ’์€ 1์ดˆ์ด๋ฉฐ ์ค€๋น„๋œ ํŠธ๋žœ์žญ์…˜์˜ ์‚ฌ์šฉ์„ ๊ฐ์ง€ํ•ฉ๋‹ˆ๋‹ค.
์•„๋งˆ๋„ ๋Œ€๋ถ€๋ถ„์˜ ์‹œ์Šคํ…œ์—์„œ ์‹ค์ˆ˜์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ฒฝ๊ณ  ๋ฐ ์œ„ํ—˜์€ ์‹œ๊ฐ„(์ดˆ)์ž…๋‹ˆ๋‹ค.
๊ฒฝ๊ณ ๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ ์ „์— ์ค€๋น„๋œ ํŠธ๋žœ์žญ์…˜์ด ์—ด๋ ค ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ 1: ์ค€๋น„๋œ ํŠธ๋žœ์žญ์…˜ ๊ฐ์ง€ ์‹œ ๊ฒฝ๊ณ  ํ‘œ์‹œ:

check_postgres_prepared_txns -w 0

์˜ˆ 2: ์ค€๋น„๋œ ํŠธ๋žœ์žญ์…˜์ด 10๊ฐœ ์ด์ƒ ์—ด๋ ค ์žˆ๋Š” ๊ฒฝ์šฐ ์ž„๊ณ„๊ฐ’ ์ œ๊ณต
์ดˆ, ๊ทธ๋Ÿฌ๋‚˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค 'shike'์— ๋Œ€ํ•ด ์ตœ๋Œ€ 360์ดˆ๋ฅผ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค.

check_postgres_prepared_txns --critical=10 --exclude=์Šˆ๋ผ์ดํฌ
check_postgres_prepared_txns --critical=360 --include=์Šˆ๋ผ์ดํฌ

MRTG ์ถœ๋ ฅ์˜ ๊ฒฝ์šฐ ๊ฐ€์žฅ ์˜ค๋ž˜๋œ ํŠธ๋žœ์žญ์…˜์ด ์—ด๋ฆฐ ์‹œ๊ฐ„(์ดˆ)์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
์ฒซ ๋ฒˆ์งธ ์ค„๊ณผ ๋งˆ์ง€๋ง‰ ์ค„์—์„œ ๊ฐ€์ ธ์˜จ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค.

์ฟผ๋ฆฌ_๋Ÿฐํƒ€์ž„
("symlink: check_postgres_query_runtime") ํŠน์ • ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ฐ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„์„ ํ™•์ธํ•˜๊ณ ,
์ด์— ๋Œ€ํ•ด "EXPLAIN ANALYZE"๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. NS --๊ฒฝ๊ณ  ๊ณผ --๋น„ํŒ์ ์ธ ์˜ต์…˜์€
์ฟผ๋ฆฌ์— ์†Œ์š”๋˜๋Š” ์ตœ๋Œ€ ์‹œ๊ฐ„์ž…๋‹ˆ๋‹ค. ์œ ํšจํ•œ ๋‹จ์œ„๋Š” ์ดˆ, ๋ถ„, ์‹œ๊ฐ„์ž…๋‹ˆ๋‹ค.
any๋Š” ์ฒซ ๊ธ€์ž๋กœ ์ถ•์•ฝ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹จ์œ„๋ฅผ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด '์ดˆ'๋กœ ๊ฐ„์ฃผ๋ฉ๋‹ˆ๋‹ค.
๊ฒฝ๊ณ ์™€ ์œ„ํ—˜ ์˜ต์…˜์ด ๋ชจ๋‘ ์ œ๊ณต๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ณด๊ธฐ ๋˜๋Š” ํ•จ์ˆ˜์˜ ์ด๋ฆ„
์‹คํ–‰ํ•˜๋ ค๋ฉด ์— ์ „๋‹ฌ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. --์ฟผ๋ฆฌ ์ด๋ฆ„ ์˜ต์…˜. ํ•œ ๋‹จ์–ด๋กœ ๊ตฌ์„ฑ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
(๋˜๋Š” schema.word), ๋์— ์„ ํƒ์  ๊ด„ํ˜ธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ 1: "speedtest"๋ผ๋Š” ํ•จ์ˆ˜๊ฐ€ 10์ดˆ ์ด๋‚ด์— ์‹คํ–‰๋˜์ง€ ์•Š๊ฑฐ๋‚˜
์ ๊ฒŒ.

check_postgres_query_runtime --queryname='speedtest()' --critical=10 --warning=10

MRTG ์ถœ๋ ฅ์˜ ๊ฒฝ์šฐ ์ฟผ๋ฆฌ๊ฐ€ ์ฒซ ๋ฒˆ์งธ ์ค„์—์„œ ์™„๋ฃŒ๋˜๋Š” ๋ฐ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„(์ดˆ)์„ ๋ณด๊ณ ํ•ฉ๋‹ˆ๋‹ค.
๋„ค ๋ฒˆ์งธ ์ค„์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋‚˜์—ดํ•ฉ๋‹ˆ๋‹ค.

์ฟผ๋ฆฌ ์‹œ๊ฐ„
("symlink: check_postgres_query_time") ํ•˜๋‚˜ ์ด์ƒ์˜ ์ฟผ๋ฆฌ ์‹คํ–‰ ๊ธธ์ด๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค. ๋™์ผํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ๋‘ ๋ฒˆ ์ด์ƒ ์‹คํ–‰ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๋ฉ”๋ชจ
์ด๊ฒƒ์€ ์ด๋ฏธ "ํŠธ๋žœ์žญ์…˜ ์œ ํœด" ์ฟผ๋ฆฌ๋ฅผ ์ œ์™ธํ•ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ˆ˜
๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•„ํ„ฐ๋ง --ํฌํ•จํ•˜๋‹ค ๊ณผ --๋“ค์–ด์˜ค์ง€ ๋ชปํ•˜๊ฒŒ ํ•˜๋‹ค ์˜ต์…˜. "๊ธฐ๋ณธ ํ•„ํ„ฐ๋ง" ์„น์…˜์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.
์ž์„ธํ•œ ์‚ฌํ•ญ์€. ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ์‚ฌ์šฉ์ž๋ฅผ ํ•„ํ„ฐ๋งํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. --ํฌํ•จ ์‚ฌ์šฉ์ž
๊ณผ --์ œ์™ธ ์‚ฌ์šฉ์ž ์˜ต์…˜. ์ž์„ธํ•œ ๋‚ด์šฉ์€ "USER NAME FILTERING" ์„น์…˜์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

์— ๋Œ€ํ•œ ๊ฐ’ --๊ฒฝ๊ณ  ๊ณผ --๋น„ํŒ์ ์ธ ์˜ต์…˜์€ ์‹œ๊ฐ„์ด๋ฉฐ ๊ธฐ๋ณธ๊ฐ’์€ '2์ž…๋‹ˆ๋‹ค.
๋ถ„'๊ณผ '5๋ถ„'. ์œ ํšจํ•œ ๋‹จ์œ„๋Š” '์ดˆ', '๋ถ„', '์‹œ๊ฐ„' ๋˜๋Š”
'๋‚ '. ๊ฐ๊ฐ์€ ๋‹จ์ˆ˜ ๋˜๋Š” ์ฒซ ๊ธ€์ž๋กœ ์ถ•์•ฝ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹จ์œ„๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ
์ฃผ์–ด์ง„ ๊ฒฝ์šฐ ๋‹จ์œ„๋Š” ์ดˆ๋กœ ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.

์ด ์ž‘์—…์—๋Š” Postgres 8.1 ์ด์ƒ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ 1: ์ฟผ๋ฆฌ๊ฐ€ 3๋ถ„ ์ด์ƒ ์‹คํ–‰๋œ ๊ฒฝ์šฐ ๊ฒฝ๊ณ ๋ฅผ ํ‘œ์‹œํ•˜๊ณ 
5๋ถ„๋ณด๋‹ค ๊ธธ๋ฉด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

check_postgres_query_time --port=5432 --warning='3๋ถ„' --critical='5๋ถ„'

์˜ˆ 2: ๊ธฐ๋ณธ๊ฐ’(2๋ถ„ ๋ฐ 5๋ถ„)์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ œ์™ธํ•œ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ™•์ธ
'ํ…œํ”Œ๋ฆฟ'์œผ๋กœ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

check_postgres_query_time --port=5432 --exclude=~^ํ…œํ”Œ๋ฆฟ

์˜ˆ 3: ์‚ฌ์šฉ์ž 'don'์ด 20์ดˆ ์ด์ƒ ์‹คํ–‰ ์ค‘์ธ ์ฟผ๋ฆฌ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ๊ฒฝ๊ณ 

check_postgres_query_time --port=5432 --includeuser=don --warning=20s

MRTG ์ถœ๋ ฅ์˜ ๊ฒฝ์šฐ ์ฒซ ๋ฒˆ์งธ ์ฟผ๋ฆฌ์—์„œ ๊ฐ€์žฅ ์˜ค๋ž˜ ์‹คํ–‰๋œ ์ฟผ๋ฆฌ์˜ ๊ธธ์ด(์ดˆ)๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
์„ . ๋„ค ๋ฒˆ์งธ ์ค„์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ด๋ฆ„์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

๋ณต์ œ ํ–‰
("symlink: check_postgres_replicate_row") ๋งˆ์Šคํ„ฐ-์Šฌ๋ ˆ์ด๋ธŒ ๋ณต์ œ๊ฐ€ ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
ํ•˜๋‚˜ ์ด์ƒ์˜ ๋…ธ์˜ˆ์—๊ฒŒ.

์ฒซ ๋ฒˆ์งธ "--dbname", "--host" ๋ฐ "--port" ๋“ฑ์˜ ์˜ต์…˜์€ ๋งˆ์Šคํ„ฐ๋กœ ๊ฐ„์ฃผ๋ฉ๋‹ˆ๋‹ค.
ํ›„์† ์šฉ๋„๋Š” ์Šฌ๋ ˆ์ด๋ธŒ์ž…๋‹ˆ๋‹ค. ๊ฐ’ ๋˜๋Š” --๊ฒฝ๊ณ  ๊ณผ --๋น„ํŒ์ ์ธ ์˜ต์…˜์€
์‹œ๊ฐ„ ๋‹จ์œ„์ด๋ฉฐ ์ ์–ด๋„ ํ•˜๋‚˜๋Š” ์ œ๊ณต๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(๊ธฐ๋ณธ๊ฐ’ ์—†์Œ). ์œ ํšจํ•œ ๋‹จ์œ„๋Š” '์ดˆ'์ž…๋‹ˆ๋‹ค.
'๋ถ„', '์‹œ๊ฐ„' ๋˜๋Š” '์ผ'. ๊ฐ๊ฐ์€ ๋‹จ์ˆ˜ ๋˜๋Š” ์•ฝ์–ด๋กœ ์“ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์ฒซ ํŽธ์ง€. ๋‹จ์œ„๊ฐ€ ์ง€์ •๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ๋‹จ์œ„๋Š” ์ดˆ๋กœ ๊ฐ„์ฃผ๋ฉ๋‹ˆ๋‹ค.

์ด ๊ฒ€์‚ฌ๋Š” ๋งˆ์Šคํ„ฐ์˜ ๋‹จ์ผ ํ–‰์„ ์—…๋ฐ์ดํŠธํ•œ ๋‹ค์Œ ์—…๋ฐ์ดํŠธ๋˜๋Š” ๋ฐ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„์„ ์ธก์ •ํ•ฉ๋‹ˆ๋‹ค.
๋…ธ์˜ˆ์—๊ฒŒ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ ค๋ฉด ๋ณต์ œ ์ค‘์ธ ํ…Œ์ด๋ธ”์„ ์„ ํƒํ•œ ๋‹ค์Œ
๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๊ณ  ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์— ์˜ํ•ด ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์„ ํ–‰์„ ์ฐพ์Šต๋‹ˆ๋‹ค. NS
์ด ํ–‰์˜ ํŠน์ • ์—ด์€ ํ•œ ๊ฐ’์—์„œ ๋‹ค๋ฅธ ๊ฐ’์œผ๋กœ ๋ณ€๊ฒฝ๋ฉ๋‹ˆ๋‹ค. ์ด ๋ชจ๋“  ๊ฒƒ์ด ๋จนํžŒ๋‹ค.
"repinfo" ์˜ต์…˜์— ์ถ”๊ฐ€ํ•˜๊ณ  ์‰ผํ‘œ๋กœ ๊ตฌ๋ถ„๋œ ๋‹ค์Œ ์˜ต์…˜์„ ํฌํ•จํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
ํ…Œ์ด๋ธ” ์ด๋ฆ„, ๊ธฐ๋ณธ ํ‚ค, ํ‚ค ID, ์—ด, ์ฒซ ๋ฒˆ์งธ ๊ฐ’, ๋‘ ๋ฒˆ์งธ ๊ฐ’.

์˜ˆ 1: Slony๋Š” 'orders'๋ผ๋Š” ํ…Œ์ด๋ธ”์„ ํ˜ธ์ŠคํŠธ 'alpha'์—์„œ ํ˜ธ์ŠคํŠธ 'beta'๋กœ ๋ณต์ œํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค 'ํŒ๋งค'. ํ…Œ์ด๋ธ”์˜ ๊ธฐ๋ณธ ํ‚ค๋Š” id๋กœ ๋ช…๋ช…๋˜๊ณ  ์šฐ๋ฆฌ๋Š”
ID๊ฐ€ 3์ธ ํ–‰์„ ํ…Œ์ŠคํŠธํ•ฉ๋‹ˆ๋‹ค(์ด๊ฒƒ์€ ์—ญ์‚ฌ์ ์ด๋ฉฐ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์Œ). ์นผ๋Ÿผ์ด ์žˆ๋‹ค
ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด 'slon' ๊ฐ’์—์„œ 'nols' ๊ฐ’์œผ๋กœ ์ „ํ™˜ํ•  'salesrep'๋ผ๋Š” ์ด๋ฆ„
๋ณต์ œ. 10์‹œ๊ฐ„ ์ด๋‚ด์— ๋ณต์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์œผ๋ฉด ๊ฒฝ๊ณ ๋ฅผ ๋˜์ง€๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.
์ดˆ.

check_postgres_replicate_row --host=alpha --dbname=ํŒ๋งค --host=๋ฒ ํƒ€
--dbname=ํŒ๋งค --warning=10 --repinfo=์ฃผ๋ฌธ,id,3,ํŒ๋งค ๋‹ด๋‹น์ž,slon,nols

์˜ˆ 2: Bucardo๋Š” 'green' ํ˜ธ์ŠคํŠธ์—์„œ ํ˜ธ์ŠคํŠธ๋กœ 'receipt'๋ผ๋Š” ํ…Œ์ด๋ธ”์„ ๋ณต์ œํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
'๋นจ๊ฐ„์ƒ‰', 'ํŒŒ๋ž€์ƒ‰', '๋…ธ๋ž€์ƒ‰'. ์–‘์ธก์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” '๊ณต๊ฐœ'์ž…๋‹ˆ๋‹ค. ์Šฌ๋ ˆ์ด๋ธŒ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค
ํฌํŠธ 5455์—์„œ ์‹คํ–‰ ์ค‘์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ํ‚ค๋Š” ์šฐ๋ฆฌ๊ฐ€ ์‚ฌ์šฉํ•˜๋ ค๋Š” ํ–‰์ธ 'receipt_id'์ž…๋‹ˆ๋‹ค.
๊ฐ’์ด 9์ด๊ณ  ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•ด ๋ณ€๊ฒฝํ•˜๋ ค๋Š” ์—ด์„ 'zone'์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์ž˜
์ด ์—ด์˜ ๊ฐ’์— ๋Œ€ํ•ด '๋ถ์ชฝ'๊ณผ '๋‚จ์ชฝ' ์‚ฌ์ด๋ฅผ ์ „ํ™˜ํ•˜๊ณ  ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ ์ž„๊ณ„๊ฐ’์„ ๋˜์ง‘๋‹ˆ๋‹ค.
5์ดˆ ์ด๋‚ด์— XNUMX๊ฐœ์˜ ์Šฌ๋ ˆ์ด๋ธŒ ๋ชจ๋‘์— โ€‹โ€‹๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์ ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

check_postgres_replicate_row --host=green --port=5455 --host=๋นจ๊ฐ„์ƒ‰, ํŒŒ๋ž€์ƒ‰, ๋…ธ๋ž€์ƒ‰
--์ค‘์š”=5 --repinfo=receipt,receipt_id,9,zone,north,south

MRTG ์ถœ๋ ฅ์˜ ๊ฒฝ์šฐ ๋ณต์ œ์— ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„(์ดˆ)์„ ์ฒซ ๋ฒˆ์งธ ์ค„์— ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
๋งˆ์น˜๋‹ค. ์ตœ๋Œ€ ์‹œ๊ฐ„์€ 4๋ถ„ 30์ดˆ๋กœ ์„ค์ •๋ฉ๋‹ˆ๋‹ค. ๋ณต์ œ๊ฐ€ ์ˆ˜ํ–‰๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ
๊ทธ ์˜ค๋žœ ์‹œ๊ฐ„ ๋™์•ˆ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

same_schema
("symlink: check_postgres_same_schema") ๋‘˜ ์ด์ƒ์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ๋™์ผํ•œ์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
์Šคํ‚ค๋งˆ๊นŒ์ง€(๊ทธ๋Ÿฌ๋‚˜ ๋‚ด๋ถ€์˜ ๋ฐ์ดํ„ฐ๋Š” ์ œ์™ธ). ์ด๊ฒƒ์€ ํŠนํžˆ ๋งŒ๋“ค๊ธฐ์— ํŽธ๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
๋งˆ์Šคํ„ฐ๋ฅผ ์Šฌ๋ ˆ์ด๋ธŒ๋กœ ์‚ฌ์šฉํ•  ๋•Œ ์Šฌ๋ ˆ์ด๋ธŒ๊ฐ€ ์ˆ˜์ •๋˜๊ฑฐ๋‚˜ ์†์ƒ๋˜์ง€ ์•Š์•˜๋Š”์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.
๋ณต์ œ. ๋Œ€๋ถ€๋ถ„์˜ ๋‹ค๋ฅธ ์ž‘์—…๊ณผ ๋‹ฌ๋ฆฌ ์ด ์ž‘์—…์—๋Š” ๊ฒฝ๊ณ ๋‚˜ ์ค‘์š”ํ•œ ๊ธฐ์ค€์ด ์—†์Šต๋‹ˆ๋‹ค.
๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ๋™๊ธฐํ™”๋˜์–ด ์žˆ๊ฑฐ๋‚˜ ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅผ ๊ฒฝ์šฐ ์„ธ๋ถ€ ๋ชฉ๋ก
์ฐจ์ด์ ์ด ์ œ์‹œ๋ฉ๋‹ˆ๋‹ค.

ํŠน์ • ์ฐจ์ด์ ์„ ์ œ์™ธํ•˜๊ฑฐ๋‚˜ ํ•„ํ„ฐ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
๋ฌธ์ž์—ด์„ "--filter" ์˜ต์…˜์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ๊ฐœ์ฒด ์œ ํ˜•์„ ์ œ์™ธํ•˜๋ ค๋ฉด "noname"์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ 'name'
๊ฐœ์ฒด ์œ ํ˜•์ž…๋‹ˆ๋‹ค(์˜ˆ: "noschema"). ํŠน์ • ์œ ํ˜•์˜ ๊ฐ์ฒด๋ฅผ ์ œ์™ธํ•˜๋ ค๋ฉด
์ด๋ฆ„์— ๋Œ€ํ•œ ์ •๊ทœ์‹์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด "noname=regex"๋ฅผ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค. ์•„๋ž˜ ์˜ˆ๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.
๋” ๋‚˜์€ ์ดํ•ด.

ํ•„ํ„ฐ๋งํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐœ์ฒด ์œ ํ˜•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž
๊ฐœ์š”
ํ…Œ์ด๋ธ”
์ „๋ง
์ƒ‰์ธ
์ˆœ์„œ
๊ตฌ์†
ํŠธ๋ฆฌ๊ฑฐ
๊ธฐ๋Šฅ

ํ•„ํ„ฐ ์˜ต์…˜ "noposition"์€ ๋‚ด์—์„œ ์—ด์˜ ์œ„์น˜ ํ™•์ธ์„ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค.
ํ…Œ์ด๋ธ”.

ํ•„ํ„ฐ ์˜ต์…˜ "nofuncbody"๋Š” ๋ชจ๋“  ํ•จ์ˆ˜์˜ ๋ณธ๋ฌธ ๋น„๊ต๋ฅผ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค.

ํ•„ํ„ฐ ์˜ต์…˜ "noperm"์€ ๊ฐœ์ฒด ๊ถŒํ•œ ๋น„๊ต๋ฅผ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค.

๋‘ ๋ฒˆ์งธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ œ๊ณตํ•˜๋ ค๋ฉด
์ ์ ˆํ•œ ์—ฐ๊ฒฐ ์ธ์ˆ˜. ์˜ˆ๋ฅผ ๋“ค์–ด, ํ˜ธ์ŠคํŠธ alpha์™€ ํ˜ธ์ŠคํŠธ์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋น„๊ตํ•˜๋ ค๋ฉด
๋ธŒ๋ผ๋ณด, "--dbhost=alpha,bravo"๋ฅผ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค. ๋˜ํ•œ ์•„๋ž˜์˜ ์˜ˆ๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

๋‹จ์ผ ํ˜ธ์ŠคํŠธ๋งŒ ์ œ๊ณต๋˜๋Š” ๊ฒฝ์šฐ "์‹œ๊ฐ„ ๊ธฐ๋ฐ˜" ๋ณด๊ณ ์„œ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค. NS
์ฒ˜์Œ ์‹คํ–‰ํ•˜๋ฉด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋ชจ๋“  ํ•ญ๋ชฉ์— ๋Œ€ํ•œ ์Šค๋ƒ…์ƒท์ด ๋กœ์ปฌ์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.
ํŒŒ์ผ. ๋‹ค์‹œ ์‹คํ–‰ํ•˜๋ฉด ํ•ด๋‹น ์Šค๋ƒ…์ƒท์ด ์ฝํ˜€์ง€๊ณ  "๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค #2"๊ฐ€ ๋˜๊ณ 
ํ˜„์žฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค.

์ด์ „ ์ €์žฅ ํŒŒ์ผ์„ ์ƒˆ ๋ฒ„์ „์œผ๋กœ ๋ฐ”๊พธ๋ ค๋ฉด --replace ์ธ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์–‘ํ•œ ์‹œ์ ์—์„œ ์Šค๋ƒ…์ƒท์„ ํ™œ์„ฑํ™”ํ•˜๋ ค๋ฉด "--suffix" ์ธ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ
๊ฐ ์‹คํ–‰์— ๊ณ ์œ ํ•œ ํŒŒ์ผ ์ด๋ฆ„. ์•„๋ž˜์˜ ์˜ˆ๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

์˜ˆ 1: star ๋ฐ line ํ˜ธ์ŠคํŠธ์˜ ๋‘ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ๋™์ผํ•œ์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

check_postgres_same_schema --dbhost=์Šคํƒ€, ๋ผ์ธ

์˜ˆ 2: ์ด์ „๊ณผ ๋™์ผํ•˜์ง€๋งŒ ์ด๋ฆ„์— "slony"๊ฐ€ ํฌํ•จ๋œ ๋ชจ๋“  ํŠธ๋ฆฌ๊ฑฐ ์ œ์™ธ

check_postgres_same_schema --dbhost=star,line --filter="notrigger=slony"

์˜ˆ 3: ์ด์ „๊ณผ ๋™์ผํ•˜์ง€๋งŒ ๋ชจ๋“  ์ธ๋ฑ์Šค๋„ ์ œ์™ธ

check_postgres_same_schema --dbhost=star,line --filter="notrigger=slony noindexes"

์˜ˆ 4: ๋‹ค๋ฅธ ํฌํŠธ์—์„œ "battlestar" ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ฐจ์ด์  ํ™•์ธ

check_postgres_same_schema --dbname=battlestar --dbport=5432,5544

์˜ˆ 5: ์ผ๋ณ„ ๋ฐ ์ฃผ๋ณ„ ์Šค๋ƒ…์ƒท ํŒŒ์ผ ์ƒ์„ฑ

check_postgres_same_schema --dbname=cylon --suffix=๋งค์ผ
check_postgres_same_schema --dbname=cylon --suffix=์ฃผ๊ฐ„

์˜ˆ 6: ๊ธฐ๋ก ๋น„๊ต๋ฅผ ์‹คํ–‰ํ•œ ๋‹ค์Œ ํŒŒ์ผ ๋ฐ”๊พธ๊ธฐ

check_postgres_same_schema --dbname=cylon --suffix=daily --replace

์ˆœ์„œ
("symlink: check_postgres_sequence") ๋ชจ๋“  ์‹œํ€€์Šค์— ์–ผ๋งˆ๋‚˜ ๋งŽ์€ ๊ณต๊ฐ„์ด ๋‚จ์•„ ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค. ์ด๊ฒƒ์€ ์‚ฌ์šฉ๋œ ์ด ๊ฐ€๋Šฅํ•œ ๊ฐ’์˜ ๋ฐฑ๋ถ„์œจ๋กœ ์ธก์ •๋ฉ๋‹ˆ๋‹ค.
๊ฐ ์‹œํ€€์Šค์— ๋Œ€ํ•ด. NS --๊ฒฝ๊ณ  ๊ณผ --๋น„ํŒ์ ์ธ ์˜ต์…˜์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ‘œํ˜„๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
๋ฐฑ๋ถ„์œจ. ๊ธฐ๋ณธ๊ฐ’์€ 85% ๊ฒฝ๊ณ ์™€ 95% ํฌ๋ฆฌํ‹ฐ์ปฌ์„ ์œ„ํ•ด. ๋‹น์‹ ์€ ํ•  ์ˆ˜์žˆ๋‹ค
--include ๋ฐ --exclude๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฒ€์‚ฌํ•  ์‹œํ€€์Šค๋ฅผ ์ œ์–ดํ•ฉ๋‹ˆ๋‹ค. ์ด
์ˆ˜ํ‘œ๋Š” ๋น„์ •์ƒ์ ์ธ ๊ฒƒ์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค ์ตœ์†Œ๊ฐ’ ๊ณผ ์ฆ๊ฐ€ by ๊ฐ’์ด์ง€๋งŒ ์ƒ๊ด€ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
์‹œํ€€์Šค๊ฐ€ ์ˆœํ™˜ ์—ฌ๋ถ€๋กœ ์„ค์ •๋ฉ๋‹ˆ๋‹ค.

Nagios์˜ ์ถœ๋ ฅ์€ ์‹œํ€€์Šค์˜ ์ด๋ฆ„, ์‚ฌ์šฉ๋œ ๋ฐฑ๋ถ„์œจ ๋ฐ ์ˆซ์ž๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
ํ•ด๋‹น ์‹œํ€€์Šค์—์„œ nextval์„ ๋ช‡ ๋ฒˆ ๋” ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ๋‚˜ํƒ€๋‚ด๋Š” 'calls'๊ฐ€ ๋‚จ์Œ
์ตœ๋Œ€๊ฐ’์— ๋„๋‹ฌํ•˜๊ธฐ ์ „์—.

MRTG์— ๋Œ€ํ•œ ์ถœ๋ ฅ์€ ์ฒซ ๋ฒˆ์งธ ์ค„์˜ ๋ชจ๋“  ์‹œํ€€์Šค์—์„œ ๊ฐ€์žฅ ๋†’์€ ๋ฐฑ๋ถ„์œจ์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
"|"๋กœ ๊ตฌ๋ถ„๋œ ๋„ค ๋ฒˆ์งธ ์ค„์— ํ•ด๋‹น ๋ฐฑ๋ถ„์œจ์ด ์žˆ๋Š” ๊ฐ ์‹œํ€€์Šค์˜ ์ด๋ฆ„
(ํŒŒ์ดํ”„) ํ•ด๋‹น ๋ฐฑ๋ถ„์œจ์— ๋‘˜ ์ด์ƒ์˜ ์‹œํ€€์Šค๊ฐ€ โ€‹โ€‹์žˆ๋Š” ๊ฒฝ์šฐ.

์˜ˆ 1: ์‹œํ€€์Šค๊ฐ€ โ€‹โ€‹95%์— ๊ฐ€๊นŒ์›Œ์ง€๋ฉด ๊ฒฝ๊ณ ๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

check_postgres_sequence --dbport=5432 --๊ฒฝ๊ณ =95%

์˜ˆ 2: "orders_id_seq"๋ผ๋Š” ์‹œํ€€์Šค๊ฐ€ โ€‹โ€‹์ ˆ๋ฐ˜์„ ๋„˜์ง€ ์•Š์•˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

check_postgres_sequence --dbport=5432 --์ค‘์š”=50% --include=orders_id_seq

์„ค์ •_์ฒดํฌ์„ฌ
("symlink: check_postgres_settings_checksum") ๋ชจ๋“  Postgres ์„ค์ •์ด ๋‹ค์Œ๊ณผ ๊ฐ™์€์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
๋งˆ์ง€๋ง‰์œผ๋กœ ํ™•์ธํ–ˆ์„ ๋•Œ์™€ ๋™์ผํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ •๋ ฌ๋œ ๋ชฉ๋ก์˜ ์ฒดํฌ์„ฌ์„ ์ƒ์„ฑํ•˜์—ฌ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค.
์„ค์ • ์ด๋ฆ„๊ณผ ๊ทธ ๊ฐ’. ๋™์ผํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž๋Š”
๋‹ค๋ฅธ ์ฒดํฌ์„ฌ, ALTER USER ์‚ฌ์šฉ ๋ฐ ์ˆ˜ํผ์œ ์ €๊ฐ€ ๋” ๋งŽ์ด ๋ณผ ์ˆ˜ ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค๋กœ ์ธํ•ด
์ผ๋ฐ˜ ์‚ฌ์šฉ์ž๋ณด๋‹ค ์„ค์ •. ๋˜๋Š” --๊ฒฝ๊ณ  ๋˜๋Š” --๋น„ํŒ์ ์ธ ์˜ต์…˜์€
์ฃผ์–ด์กŒ์ง€๋งŒ ๋‘˜ ๋‹ค ์•„๋‹ˆ๋‹ค. ๊ฐ๊ฐ์˜ ๊ฐ’์€ 32์ž์˜ XNUMX์ง„์ˆ˜ ์ฒดํฌ์„ฌ์ž…๋‹ˆ๋‹ค.
๊ฐ’. ํŠน๋ณ„ํ•œ "--critical=0" ์˜ต์…˜์œผ๋กœ ์‹คํ–‰ํ•˜์—ฌ ๊ธฐ์กด
์ฒดํฌ์„ฌ.

์ด ์ž‘์—…์—๋Š” Digest::MD5 ๋ชจ๋“ˆ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ 1: ๊ธฐ๋ณธ ์‚ฌ์šฉ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํฌํŠธ 5555์—์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ดˆ๊ธฐ ์ฒดํฌ์„ฌ ์ฐพ๊ธฐ
(๋ณดํ†ต ํฌ์ŠคํŠธ๊ทธ๋ ˆ์Šค)

check_postgres_settings_checksum --port=5555 --์ค‘์š”=0

์˜ˆ 2: ์„ค์ •์ด ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์•˜๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ๋ณ€๊ฒฝ๋œ ๊ฒฝ์šฐ ๊ฒฝ๊ณ ํ•ฉ๋‹ˆ๋‹ค.
์œ„.

check_postgres_settings_checksum --port=5555 --warning=cd2f3b5e129dc2b4f5c0f6d8d2e64231

MRTG ์ถœ๋ ฅ์˜ ๊ฒฝ์šฐ ์ผ์น˜ํ•˜๋Š” ์ฒดํฌ์„ฌ ์‹คํŒจ์˜ ์„ฑ๊ณต์„ ๋‚˜ํƒ€๋‚ด๋Š” 1 ๋˜๋Š” 0์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
์ฒดํฌ์„ฌ์€ "--mrtg" ์ธ์ˆ˜๋กœ ์ œ๊ณต๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋„ค ๋ฒˆ์งธ ์ค„์€ ํ•ญ์ƒ
ํ˜„์žฌ ์ฒดํฌ์„ฌ.

slony_status
("symlink: check_postgres_slony_status") ๋‹ค์Œ์„ ํ†ตํ•ด Slony ํด๋Ÿฌ์Šคํ„ฐ์˜ ์ƒํƒœ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
Slony์˜ sl_status ๋ณด๊ธฐ์˜ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ˆ˜๋กœ ๋ฐ˜ํ™˜๋ฉ๋‹ˆ๋‹ค.
"์ง€์—ฐ ์‹œ๊ฐ„"์˜ ์ดˆ. NS --๊ฒฝ๊ณ  ๊ณผ --๋น„ํŒ์ ์ธ ์˜ต์…˜์€ ์‹œ๊ฐ„์œผ๋กœ ํ‘œํ˜„๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
๊ธฐ๋ณธ๊ฐ’์€ 60 ์ดˆ ๊ฒฝ๊ณ ์™€ 300 ์ดˆ ํฌ๋ฆฌํ‹ฐ์ปฌ์„ ์œ„ํ•ด.

์„ ํƒ์  ์ธ์ˆ˜ --๊ฐœ์š” Slony๊ฐ€ ์„ค์น˜๋œ ์Šคํ‚ค๋งˆ๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ๊ทธ ๊ฒฝ์šฐ
์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ์ด ๊ฒ€์‚ฌ๊ฐ€ ์‹คํ–‰๋  ๋•Œ๋งˆ๋‹ค ์Šคํ‚ค๋งˆ๊ฐ€ ์ž๋™์œผ๋กœ ๊ฒฐ์ •๋ฉ๋‹ˆ๋‹ค.

์˜ˆ 1: Slony๊ฐ€ 20์ดˆ ์ด์ƒ ์ง€์—ฐ๋˜๋ฉด ๊ฒฝ๊ณ ๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

check_postgres_slony_status --๊ฒฝ๊ณ  20

์˜ˆ 2: "_slony" ์Šคํ‚ค๋งˆ ์•„๋ž˜์— ์„ค์น˜๋œ Slony๊ฐ€ 10์„ ์ดˆ๊ณผํ•˜๋Š” ๊ฒฝ์šฐ ์ž„๊ณ„๊ฐ’ ์ œ๊ณต
๋ถ„ ์ง€์—ฐ

check_postgres_slony_status --schema=_slony --tical=600

์‹œ๊ฐ„ ๋™๊ธฐํ™”
("symlink: check_postgres_timesync") ๋กœ์ปฌ ์‹œ์Šคํ…œ ์‹œ๊ฐ„์„ ๋ณด๊ณ ๋œ ์‹œ๊ฐ„๊ณผ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค.
ํ•˜๋‚˜ ์ด์ƒ์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์˜ํ•ด NS --๊ฒฝ๊ณ  ๊ณผ --๋น„ํŒ์ ์ธ ์˜ต์…˜์€ ๋‹ค์Œ ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
๊ฒฝ๊ณ ๊ฐ€ ์ฃผ์–ด์ง€๊ธฐ ์ „์— ๋‘ ์‹œ์Šคํ…œ ์‚ฌ์ด์˜ ์ดˆ. ๋‘˜ ๋‹ค ์ง€์ •๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ
๊ธฐ๋ณธ๊ฐ’์€ '2'์™€ '5'๊ฐ€ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๊ฒฝ๊ณ  ๊ฐ’์€ ๋‹ค์Œ๋ณด๋‹ค ํด ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
์ž„๊ณ„๊ฐ’. ์ด ํ…Œ์ŠคํŠธ์˜ ์ •ํ™•ํ•˜์ง€ ์•Š์€ ํŠน์„ฑ์œผ๋กœ ์ธํ•ด '0' ๋˜๋Š” '1' ๊ฐ’์€
์ข‹์Šต๋‹ˆ๋‹ค.

๋ฐ˜ํ™˜๋œ ๋ฌธ์ž์—ด์€ ์‹œ์ฐจ์™€ ์ž‘์„ฑ๋œ ๊ฐ ๋ฉด์˜ ์‹œ๊ฐ„์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.
์•„์›ƒ.

์˜ˆ 1: ํ˜ธ์ŠคํŠธ ankh, morpork ๋ฐ klatch์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ 3๊ฐœ ์ดํ•˜์ธ์ง€ ํ™•์ธ
ํ˜„์ง€ ์‹œ๊ฐ„์—์„œ ์ดˆ ์ฐจ์ด:

check_postgres_timesync --host=ankh,morpork,klatch --์ค‘์š”=3

MRTG ์ถœ๋ ฅ์˜ ๊ฒฝ์šฐ ์ฒซ ๋ฒˆ์งธ ์ค„์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
ํ˜„์ง€ ์‹œ๊ฐ„๊ณผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ๊ฐ„. ๋„ค ๋ฒˆ์งธ ์ค„์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ด๋ฆ„์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

txn_idle
("symlink: check_postgres_txn_idle") "idle in
ํ•˜๋‚˜ ์ด์ƒ์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ "ํŠธ๋žœ์žญ์…˜" ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ด ์ž‘์—…์„ ๋‘ ๋ฒˆ ์ด์ƒ ์‹คํ–‰ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
๋™์ผํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•„ํ„ฐ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. --ํฌํ•จํ•˜๋‹ค ๊ณผ
--๋“ค์–ด์˜ค์ง€ ๋ชปํ•˜๊ฒŒ ํ•˜๋‹ค ์˜ต์…˜. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์•„๋ž˜์˜ "๊ธฐ๋ณธ ํ•„ํ„ฐ๋ง" ์„น์…˜์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

XNUMXD๋ดํƒˆ์˜ --๊ฒฝ๊ณ  ๊ณผ --๋น„ํŒ์ ์ธ ์˜ต์…˜์€ ์‹œ๊ฐ„ ๋‹จ์œ„, ๋ถ€ํ˜ธ ์žˆ๋Š” ์ •์ˆ˜ ๋˜๋Š”
์‹œ๊ฐ„ ๋‹จ์œ„์— ๋Œ€ํ•œ ์ •์ˆ˜์ด๋ฉฐ ๋‘˜ ๋‹ค ์ œ๊ณตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(๊ธฐ๋ณธ๊ฐ’ ์—†์Œ). ์œ ํšจํ•œ ๋‹จ์œ„
'์ดˆ', '๋ถ„', '์‹œ๊ฐ„' ๋˜๋Š” '์ผ'์ž…๋‹ˆ๋‹ค. ๊ฐ๊ฐ์€ ๋‹จ์ˆ˜ ๋˜๋Š” ์•ฝ์–ด๋กœ ์ž‘์„ฑ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์ฒซ ๊ธ€์ž๋งŒ. ๋‹จ์œ„๊ฐ€ ์ง€์ •๋˜์ง€ ์•Š๊ณ  ์ˆซ์ž์— ๋ถ€ํ˜ธ๊ฐ€ ์—†์œผ๋ฉด ๋‹จ์œ„
์ดˆ๋กœ ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.

์ด ์ž‘์—…์—๋Š” Postgres 8.3 ์ด์ƒ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ 1: ํŠธ๋žœ์žญ์…˜์—์„œ 15์‹œ๊ฐ„ ์ด์ƒ ์œ ํœด ์ƒํƒœ์ธ ์—ฐ๊ฒฐ์ด ์žˆ๋Š” ๊ฒฝ์šฐ ๊ฒฝ๊ณ ๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.
์ดˆ:

check_postgres_txn_idle --port=5432 --warning='15์ดˆ'

์˜ˆ 2: 50๊ฐœ ์ด์ƒ์˜ ํŠธ๋žœ์žญ์…˜์ด ์žˆ๋Š” ๊ฒฝ์šฐ ๊ฒฝ๊ณ  ์ œ๊ณต

check_postgres_txn_idle --port=5432 --warning='+50'

์˜ˆ 3: 5๊ฐœ ์ด์ƒ์˜ ์—ฐ๊ฒฐ์ด ํŠธ๋žœ์žญ์…˜์—์„œ ๋” ๋งŽ์€ ์‹œ๊ฐ„ ๋™์•ˆ ์œ ํœด ์ƒํƒœ์ธ ๊ฒฝ์šฐ ์ž„๊ณ„๊ฐ’ ์ œ๊ณต
10์ดˆ ์ด์ƒ:

check_postgres_txn_idle --port=5432 --critical='5์ดˆ ๋™์•ˆ 10'

MRTG ์ถœ๋ ฅ์˜ ๊ฒฝ์šฐ ๊ฐ€์žฅ ๊ธด ์œ ํœด ํŠธ๋žœ์žญ์…˜์ด ๋ฐœ์ƒํ•œ ์‹œ๊ฐ„(์ดˆ)์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
๋‹ฌ๋ฆฌ๊ธฐ. ๋„ค ๋ฒˆ์งธ ์ค„์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ด๋ฆ„๊ณผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋Œ€ํ•œ ๊ธฐํƒ€ ์ •๋ณด๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
๊ฐ€์žฅ ๊ธด ๊ฑฐ๋ž˜.

txn_time
("symlink: check_postgres_txn_time") ํ•˜๋‚˜ ์ด์ƒ์˜ ์—ด๋ฆฐ ํŠธ๋žœ์žญ์…˜ ๊ธธ์ด๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํด๋Ÿฌ์Šคํ„ฐ๋‹น ๋‘ ๋ฒˆ ์ด์ƒ ์ด ๋ช…๋ น์„ ์‹คํ–‰ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•„ํ„ฐ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. --ํฌํ•จํ•˜๋‹ค ๊ณผ --๋“ค์–ด์˜ค์ง€ ๋ชปํ•˜๊ฒŒ ํ•˜๋‹ค ์˜ต์…˜. "๊ธฐ๋ณธ"์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.
FILTERING' ์„น์…˜์—์„œ ์ž์„ธํ•œ ๋‚ด์šฉ์„ ํ™•์ธํ•˜์„ธ์š”. ๊ฑฐ๋ž˜ ์†Œ์œ ์ž๋Š” ๋‹ค์Œ์„ ํ†ตํ•ด ํ•„ํ„ฐ๋งํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
์˜ ์‚ฌ์šฉ --ํฌํ•จ ์‚ฌ์šฉ์ž ๊ณผ --์ œ์™ธ ์‚ฌ์šฉ์ž ์˜ต์…˜. "์‚ฌ์šฉ์ž ์ด๋ฆ„ ํ•„ํ„ฐ๋ง" ์„น์…˜์„ ์ฐธ์กฐํ•˜์„ธ์š”.
์ž์„ธํ•œ ๋‚ด์šฉ์€.

๊ฐ’ ๋˜๋Š” --๊ฒฝ๊ณ  ๊ณผ --๋น„ํŒ์ ์ธ ์˜ต์…˜์€ ์‹œ๊ฐ„ ๋‹จ์œ„์ด๋ฉฐ ์ œ๊ณต๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
(๊ธฐ๋ณธ๊ฐ’ ์—†์Œ). ์œ ํšจํ•œ ๋‹จ์œ„๋Š” '์ดˆ', '๋ถ„', '์‹œ๊ฐ„' ๋˜๋Š” '์ผ'์ž…๋‹ˆ๋‹ค. ๊ฐ๊ฐ์€
๋‹จ์ˆ˜ ๋˜๋Š” ์ฒซ ๊ธ€์ž๋กœ ์ถ•์•ฝ๋ฉ๋‹ˆ๋‹ค. ๋‹จ์œ„๊ฐ€ ์ง€์ •๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ
๋‹จ์œ„๋Š” ์ดˆ๋กœ ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.

์ด ์ž‘์—…์—๋Š” Postgres 8.3 ์ด์ƒ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ 1: ํŠธ๋žœ์žญ์…˜์ด 10๋ถ„ ์ด์ƒ ์—ด๋ ค ์žˆ๋Š” ๊ฒฝ์šฐ ์ž„๊ณ„๊ฐ’์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

check_postgres_txn_time --port=5432 --critical='10๋ถ„'

์˜ˆ 1: ์‚ฌ์šฉ์ž '์ฐฝ๊ณ '๊ฐ€ 30์ดˆ ๋™์•ˆ ์—ด๋ฆฐ ํŠธ๋žœ์žญ์…˜์ด ์žˆ๋Š” ๊ฒฝ์šฐ ๊ฒฝ๊ณ 

check_postgres_txn_time --port-5432 --warning=30s --includeuser=์›จ์–ดํ•˜์šฐ์Šค

MRTG ์ถœ๋ ฅ์˜ ๊ฒฝ์šฐ ํŠธ๋žœ์žญ์…˜์ด ์—ด๋ฆฐ ์ตœ๋Œ€ ์‹œ๊ฐ„(์ดˆ)์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
์ฒซ์งธ ์ค„. ๋„ค ๋ฒˆ์งธ ์ค„์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ด๋ฆ„์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

txn_wraparound
("symlink: check_postgres_txn_wraparound") ํŠธ๋žœ์žญ์…˜ ๋žฉ์–ด๋ผ์šด๋“œ XNUMX์— ์–ผ๋งˆ๋‚˜ ๊ฐ€๊นŒ์šด์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
๋˜๋Š” ๋” ๋งŽ์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ํ™•๋ณดํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. NS --๊ฒฝ๊ณ  ๊ณผ --๋น„ํŒ์ ์ธ ์˜ต์…˜์€ ์ˆซ์ž๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค
์™„๋ฃŒ๋œ ํŠธ๋žœ์žญ์…˜์˜ ์ˆ˜์ด๋ฉฐ ์–‘์˜ ์ •์ˆ˜์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‘˜ ์ค‘ ํ•˜๋‚˜์˜ ์˜ต์…˜์ด ์ œ๊ณต๋˜์ง€ ์•Š์œผ๋ฉด
๊ธฐ๋ณธ๊ฐ’ 1.3์–ต๊ณผ 1.4์–ต์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ด ๋ช…๋ น์„ ๋” ์ด์ƒ ์‹คํ–‰ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํด๋Ÿฌ์Šคํ„ฐ๋‹น ํ•œ ๋ฒˆ ์ด์ƒ. ์ด ์ˆซ์ž์— ๋Œ€ํ•œ ์ž์„ธํ•œ ์„ค๋ช…์€
ํ‘œ์‹œํ•˜๊ณ  ์ด์— ๋Œ€ํ•ด ์ˆ˜ํ–‰ํ•  ์ž‘์—…์€ ํŽ˜์ด์ง€๋ฅผ ๋ฐฉ๋ฌธํ•˜์‹ญ์‹œ์˜ค.
<http://www.postgresql.org/docs/current/static/routine-vacuuming.html#ํฌ์žฅ์šฉ ์ง„๊ณต>

๊ฒฝ๊ณ  ๋ฐ ์ž„๊ณ„๊ฐ’์—๋Š” Perl๊ณผ ๊ฐ™์ด ๊ฐ€๋…์„ฑ์„ ์œ„ํ•ด ์ˆซ์ž์— ๋ฐ‘์ค„์ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์•Š์Šต๋‹ˆ๋‹ค.

์˜ˆ 1: localhost ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๊ธฐ๋ณธ๊ฐ’ ํ™•์ธ

check_postgres_txn_wraparound --ํ˜ธ์ŠคํŠธ=๋กœ์ปฌํ˜ธ์ŠคํŠธ

์˜ˆ 2: ํฌํŠธ 6000์„ ํ™•์ธํ•˜๊ณ  1.7์–ต ํŠธ๋žœ์žญ์…˜์— ๋„๋‹ฌํ•˜๋ฉด ์ž„๊ณ„๊ฐ’์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

check_postgres_txn_wraparound --port=6000 --critical=1_700_000_000

MRTG ์ถœ๋ ฅ์˜ ๊ฒฝ์šฐ XNUMXํ–‰์˜ ๋ชจ๋“  โ€‹โ€‹๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋Œ€ํ•ด ๊ฐ€์žฅ ๋†’์€ ํŠธ๋žœ์žญ์…˜ ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
4ํ–‰์€ ๊ทธ๊ฒƒ์ด ์–ด๋–ค ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์ธ์ง€๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

๋ฒ„์ „
("symlink: check_postgres_version") Postgres์˜ ํ•„์ˆ˜ ๋ฒ„์ „์ด ๋‹ค์Œ์ธ์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
๋‹ฌ๋ฆฌ๊ธฐ. NS --๊ฒฝ๊ณ  ๊ณผ --๋น„ํŒ์ ์ธ ์˜ต์…˜(ํ•˜๋‚˜๋งŒ ํ•„์š”)์€ ๋‹ค์Œ ํ˜•์‹์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
XY or XYZ ์–ด๋””์— X ๋Š” ์ฃผ ๋ฒ„์ „ ๋ฒˆํ˜ธ์ด๋ฉฐ, Y ๋Š” ๋ถ€ ๋ฒ„์ „ ๋ฒˆํ˜ธ์ด๋ฉฐ Z is
๊ฐœ์ •.

์˜ˆ 1: ํฌํŠธ 5678์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ๋ฒ„์ „ 8.4.10์ด ์•„๋‹Œ ๊ฒฝ์šฐ ๊ฒฝ๊ณ ๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

check_postgres_version --port=5678 -w=8.4.10

์˜ˆ 2: ๊ณ„๊ณก, ๊ณก๋ฌผ ๋˜๋Š” ์ผ์กฐ ํ˜ธ์ŠคํŠธ์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ 8.3์ด ์•„๋‹Œ ๊ฒฝ์šฐ ๊ฒฝ๊ณ ๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

check_postgres_version -H ๊ณ„๊ณก, ๊ณก๋ฌผ, ํ–‡๋น› --critical=8.3

MRTG ์ถœ๋ ฅ์˜ ๊ฒฝ์šฐ ์ฒซ ๋ฒˆ์งธ ์ค„์—์„œ ์„ฑ๊ณต ๋˜๋Š” ์‹คํŒจ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” 1 ๋˜๋Š” 0์„ ๋ณด๊ณ ํ•ฉ๋‹ˆ๋‹ค. NS
๋„ค ๋ฒˆ์งธ ์ค„์€ ํ˜„์žฌ ๋ฒ„์ „์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ๋ฒ„์ „์€ "--mrtg"๋ฅผ ํ†ตํ•ด ์ œ๊ณต๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
์˜ต์…˜์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

wal_files
("symlink: check_postgres_wal_files") ํŒŒ์ผ์— WAL ํŒŒ์ผ์ด ๋ช‡ ๊ฐœ ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. pg_xlog
๋””๋ ‰ํ† ๋ฆฌ์—์„œ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ๋””๋ ‰ํ† ๋ฆฌ, ๋•Œ๋กœ๋Š” ๋‹ค๋ฅธ ์‹ฌ๋ณผ๋ฆญ ๋งํฌ๋กœ
์„ฑ๋Šฅ์ƒ์˜ ์ด์œ ๋กœ ๋ฌผ๋ฆฌ์  ๋””์Šคํฌ. ์ด ์ž‘์—…์€ ์ˆ˜ํผ์œ ์ €๋กœ ์‹คํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
์˜ ๋‚ด์šฉ์— ์•ก์„ธ์Šค pg_xlog ์˜ˆ๋ฐฐ ๊ทœ์น™์„œ. ์ด ์ž‘์—…์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ์ตœ์†Œ ๋ฒ„์ „์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
ํฌ์ŠคํŠธ๊ทธ๋ ˆ์Šค 8.1. NS --๊ฒฝ๊ณ  ๊ณผ --๋น„ํŒ์ ์ธ ์˜ต์…˜์€ ๋‹จ์ˆœํžˆ ํŒŒ์ผ์˜ ์ˆ˜์ž…๋‹ˆ๋‹ค.
pg_xlog ์˜ˆ๋ฐฐ ๊ทœ์น™์„œ. ์ด๊ฒƒ์„ ์„ค์ •ํ•˜๋Š” ์ˆซ์ž๋Š” ๋‹ค์–‘ํ•˜์ง€๋งŒ ์ผ๋ฐ˜์ ์ธ ์ง€์นจ์€
๋ฌธ์ œ๋ฅผ ์กฐ๊ธฐ์— ํฌ์ฐฉํ•˜๊ธฐ ์œ„ํ•ด ํ‰์†Œ๋ณด๋‹ค ์•ฝ๊ฐ„ ๋†’์€ ์ˆซ์ž์ž…๋‹ˆ๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ WAL ํŒŒ์ผ์€ ๋‹ซํ˜€์„œ ์žฌ์‚ฌ์šฉ๋˜์ง€๋งŒ ์žฅ๊ธฐ ์‹คํ–‰๋˜๋Š” ์—ด๋ฆฐ ํŠธ๋žœ์žญ์…˜ ๋˜๋Š”
๊ฒฐํ•จ ์•„์นด์ด๋ธŒ ๋ช…๋ น ์Šคํฌ๋ฆฝํŠธ๋กœ ์ธํ•ด Postgres๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์€ ํŒŒ์ผ์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ถ๊ทน์ ์œผ๋กœ,
์ด๋กœ ์ธํ•ด ๋””์Šคํฌ์— ๊ณต๊ฐ„์ด ๋ถ€์กฑํ•˜๊ฒŒ ๋˜๋ฉฐ ์ด ์‹œ์ ์—์„œ Postgres๋Š”
๋‹ฅ์ณ

์˜ˆ 1: "pluto" ํ˜ธ์ŠคํŠธ์—์„œ WAL ํŒŒ์ผ ์ˆ˜๊ฐ€ 20๊ฐœ ์ดํ•˜์ธ์ง€ ํ™•์ธ

check_postgres_wal_files --host=pluto --์ค‘์š”=20

MRTG ์ถœ๋ ฅ์˜ ๊ฒฝ์šฐ 1ํ–‰์˜ WAL ํŒŒ์ผ ์ˆ˜๋ฅผ ๋ณด๊ณ ํ•ฉ๋‹ˆ๋‹ค.

์žฌ๊ตฌ์ถ•_symlinks
์žฌ๊ตฌ์ถ•_symlinks_force
์ด ์ž‘์—…์€ ๋‹ค๋ฅธ ์ธ์ˆ˜๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์œผ๋ฉฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์—ฐ๊ฒฐํ•˜์ง€ ์•Š๊ณ  ๋‹จ์ˆœํžˆ
๊ฐ ์ž‘์—…์— ๋Œ€ํ•ด ํ˜„์žฌ ๋””๋ ‰ํ† ๋ฆฌ์— ๋‹ค์Œ ํ˜•์‹์œผ๋กœ ์‹ฌ๋ณผ๋ฆญ ๋งํฌ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
check_postgres_. ํŒŒ์ผ์ด ์ด๋ฏธ ์žˆ๋Š” ๊ฒฝ์šฐ ๋ฎ์–ด์“ฐ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋งŒ์•ฝ์—
์ž‘์—…์ด rebuild_symlinks_force์ด๋ฉด ์‹ฌ๋ณผ๋ฆญ ๋งํฌ๋ฅผ ๋ฎ์–ด์”๋‹ˆ๋‹ค. ์˜ต์…˜
--symlinks๋Š” --action=rebuild_symlinks๋ฅผ ๋” ์งง๊ฒŒ ํ‘œํ˜„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

BASIC ํ•„ํ„ฐ๋ง


์˜ต์…˜ --ํฌํ•จํ•˜๋‹ค ๊ณผ --๋“ค์–ด์˜ค์ง€ ๋ชปํ•˜๊ฒŒ ํ•˜๋‹ค ๊ฒ€์‚ฌํ•  ํ•ญ๋ชฉ์„ ์ œํ•œํ•˜๊ธฐ ์œ„ํ•ด ๊ฒฐํ•ฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
ํ–‰๋™์— ๋”ฐ๋ผ. ๋‹ค์Œ์„ ์‚ฌ์šฉํ•  ๋•Œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ด๋ฆ„์„ ํ•„ํ„ฐ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์ž‘์—…: ๋ฐฑ์—”๋“œ, database_size, ์ž ๊ธˆ, query_time, txn_idle ๋ฐ txn_time. ์˜ ์ด๋ฆ„
๋‹ค์Œ ์ž‘์—…์„ ์‚ฌ์šฉํ•  ๋•Œ ๊ด€๊ณ„๋ฅผ ํ•„ํ„ฐ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. bloat, index_size,
table_size, relation_size, last_vacuum, last_autovacuum, last_analyze ๋ฐ
last_autoanalyze. settings_checksum์„ ์‚ฌ์šฉํ•  ๋•Œ ์„ค์ • ์ด๋ฆ„์„ ํ•„ํ„ฐ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋™์ž‘. disk_space ์ž‘์—…์„ ์‚ฌ์šฉํ•  ๋•Œ ํŒŒ์ผ ์‹œ์Šคํ…œ์˜ ์ด๋ฆ„์„ ํ•„ํ„ฐ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํฌํ•จ ์˜ต์…˜๋งŒ ์ œ๊ณต๋˜๋ฉด ์ผ์น˜ํ•˜๋Š” ํ•ญ๋ชฉ๋งŒ ํ™•์ธ๋ฉ๋‹ˆ๋‹ค.
๋‹จ, ์ œ์™ธ์™€ ํฌํ•จ์ด ๋ชจ๋‘ ์ฃผ์–ด์ง€๋ฉด ์ œ์™ธ๋ฅผ ๋จผ์ € ํ•˜๊ณ  ํฌํ•จ์„ ์‹œํ‚จ๋‹ค.
ํ›„์— ์ œ์™ธ๋˜์—ˆ์„ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์„ ๋ณต์›ํ•ฉ๋‹ˆ๋‹ค. ๋‘˜ ๋‹ค --ํฌํ•จํ•˜๋‹ค ๊ณผ --๋“ค์–ด์˜ค์ง€ ๋ชปํ•˜๊ฒŒ ํ•˜๋‹ค
์—ฌ๋Ÿฌ ๋ฒˆ ์ œ๊ณต๋˜๊ฑฐ๋‚˜ ์‰ผํ‘œ๋กœ ๊ตฌ๋ถ„๋œ ๋ชฉ๋ก์œผ๋กœ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. ์„ ํ–‰ ๋ฌผ๊ฒฐํ‘œ๊ฐ€ ์ผ์น˜ํ•ฉ๋‹ˆ๋‹ค.
๋‹ค์Œ ๋‹จ์–ด๋ฅผ ์ •๊ทœ์‹์œผ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์Šคํ‚ค๋งˆ๋ฅผ ์ผ์น˜์‹œํ‚ค๋ ค๋ฉด ๊ฒ€์ƒ‰์–ด๋ฅผ ๋งˆ์นจํ‘œ ํ•˜๋‚˜๋กœ ๋๋‚ด์‹ญ์‹œ์˜ค. ์„ ํ–‰ ๋ฌผ๊ฒฐํ‘œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์Šคํ‚ค๋งˆ์— ๋Œ€ํ•ด์„œ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค.

ํ•„ํ„ฐ๋ง์„ ์‚ฌ์šฉํ•  ๋•Œ ์ฃผ์˜ํ•˜์‹ญ์‹œ์˜ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋ฐฑ์—”๋“œ์˜ ํฌํ•จ ๊ทœ์น™์€
์ผ์น˜ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋ฐฑ์—”๋“œ๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋ฌธ์ œ๊ฐ€ ๋ณด๊ณ ๋˜์ง€ ์•Š์„ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ
๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ด๋ฆ„์˜ ์ฒ ์ž๊ฐ€ ํ‹€๋ ธ์Šต๋‹ˆ๋‹ค!

์˜ˆ :

pg_class๋ผ๋Š” ์ด๋ฆ„์˜ ํ•ญ๋ชฉ๋งŒ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

--include=pg_class

'pg_' ๋ฌธ์ž๊ฐ€ ํฌํ•จ๋œ ํ•ญ๋ชฉ๋งŒ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

--ํฌํ•จ=~ํŽ˜์ด์ง€_

'pg_'๋กœ ์‹œ์ž‘ํ•˜๋Š” ํ•ญ๋ชฉ๋งŒ ํ™•์ธ:

--ํฌํ•จ=~^pg_

'test'๋ผ๋Š” ํ•ญ๋ชฉ์„ ์ œ์™ธํ•ฉ๋‹ˆ๋‹ค.

--์ œ์™ธ=ํ…Œ์ŠคํŠธ

'test:' ๋ฌธ์ž๊ฐ€ ํฌํ•จ๋œ ๋ชจ๋“  ํ•ญ๋ชฉ ์ œ์™ธ:

--exclude=~ํ…Œ์ŠคํŠธ

์Šคํ‚ค๋งˆ 'pg_catalog'์˜ ๋ชจ๋“  ํ•ญ๋ชฉ์„ ์ œ์™ธํ•ฉ๋‹ˆ๋‹ค.

--exclude='pg_catalog.'

'ace' ๋ฌธ์ž๊ฐ€ ํฌํ•จ๋œ ๋ชจ๋“  ํ•ญ๋ชฉ์„ ์ œ์™ธํ•˜์ง€๋งŒ 'faceoff' ํ•ญ๋ชฉ์€ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค.

--exclude=~ace --include=ํŽ˜์ด์Šค์˜คํ”„

'slon' ๋ฌธ์ž๊ฐ€ ํฌํ•จ๋œ 'pg_' ๋ฌธ์ž๋กœ ์‹œ์ž‘ํ•˜๋Š” ๋ชจ๋“  ํ•ญ๋ชฉ์„ ์ œ์™ธํ•˜๊ฑฐ๋‚˜
์ด๋ฆ„์€ 'sql_settings' ๋˜๋Š” 'green'์ž…๋‹ˆ๋‹ค. ๋ฌธ์ž๊ฐ€ ์žˆ๋Š” ํ•ญ๋ชฉ์„ ๊ตฌ์ฒด์ ์œผ๋กœ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.
์ด๋ฆ„์— 'prod'๋ฅผ ํฌํ•จํ•˜๊ณ  ํ•ญ์ƒ 'pg_relname'์ด๋ผ๋Š” ํ•ญ๋ชฉ์„ ํ™•์ธํ•˜์„ธ์š”.

--exclude=~^pg_,~slon,sql_settings --exclude=green --include=~prod,pg_relname

USER ์ด๋ฆ„ ํ•„ํ„ฐ๋ง


์˜ต์…˜ --ํฌํ•จ ์‚ฌ์šฉ์ž ๊ณผ --์ œ์™ธ ์‚ฌ์šฉ์ž ์ผ๋ถ€ ์ž‘์—…์—๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
ํ•œ ๋ช… ์ด์ƒ์˜ ์‚ฌ์šฉ์ž๊ฐ€ ์†Œ์œ ํ•œ(๋˜๋Š” ์†Œ์œ ํ•˜์ง€ ์•Š์€) ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฐœ์ฒด. NS --ํฌํ•จ ์‚ฌ์šฉ์ž ์„ ํƒ๊ถŒ
ํ•ญ์ƒ ์ด๊ธด๋‹ค --์ œ์™ธ ์‚ฌ์šฉ์ž ์˜ต์…˜. ๊ฐ ์˜ต์…˜์— ๋Œ€ํ•ด ๋‘ ๋ฒˆ ์ด์ƒ ๋ถ€์—ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์—ฌ๋Ÿฌ ์‚ฌ์šฉ์ž ๋˜๋Š” ์‰ผํ‘œ๋กœ ๊ตฌ๋ถ„๋œ ๋ชฉ๋ก์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ ์‚ฌ์šฉ ์ค‘์ธ ์ž‘์—…
์ด๋Ÿฌํ•œ ์˜ต์…˜์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํฌ๊ธฐ
๋งˆ์ง€๋ง‰_๋ถ„์„
last_autoanalyze
last_vacuum
last_autovacuum
์ฟผ๋ฆฌ ์‹œ๊ฐ„
๊ด€๊ณ„ ํฌ๊ธฐ
txn_time

์˜ˆ :

greg๋ผ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์†Œ์œ ํ•œ ํ•ญ๋ชฉ๋งŒ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.

--includeuser=๊ทธ๋ ‰

watson ๋˜๋Š” crick์ด ์†Œ์œ ํ•œ ํ•ญ๋ชฉ๋งŒ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.

--includeuser=์™“์Šจ, ํฌ๋ฆญ

crick, franklin, watson ๋˜๋Š” Wilkins๊ฐ€ ์†Œ์œ ํ•œ ํ•ญ๋ชฉ๋งŒ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.

--includeuser=watson --includeuser=franklin --includeuser=crick, Wilkins

์‚ฌ์šฉ์ž scott์— ์†ํ•œ ํ•ญ๋ชฉ์„ ์ œ์™ธํ•œ ๋ชจ๋“  ํ•ญ๋ชฉ์„ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.

--excludeuser=์Šค์ฝง

TEST ๋ชจ๋“œ


์„ค์ •์„ ๋•๊ธฐ ์œ„ํ•ด ์ด ํ”„๋กœ๊ทธ๋žจ์€ ๋‹ค์Œ์„ ์ง€์ •ํ•˜์—ฌ "ํ…Œ์ŠคํŠธ ๋ชจ๋“œ"์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
--์‹œํ—˜ ์˜ต์…˜. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋ช‡ ๊ฐ€์ง€ ๊ธฐ๋ณธ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€
์‚ฌ์šฉ์ž๊ฐ€
์ˆ˜ํผ์œ ์ €, Postgres ๋ฒ„์ „์ด ์ถฉ๋ถ„ํžˆ ์ƒˆ ๋ฒ„์ „์ด๊ณ  stats_row_level์ด ํ™œ์„ฑํ™”๋œ ๊ฒฝ์šฐ.

onworks.net ์„œ๋น„์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์˜จ๋ผ์ธ์œผ๋กœ check_postgres_database_sizep๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”.


๋ฌด๋ฃŒ ์„œ๋ฒ„ ๋ฐ ์›Œํฌ์Šคํ…Œ์ด์…˜

Windows ๋ฐ Linux ์•ฑ ๋‹ค์šด๋กœ๋“œ

Linux ๋ช…๋ น

Ad