Zabbix Meetup Online์ ๋ํ Daria Vilkova์ ๋ณด๊ณ ์
Zabbix๋ฅผ ์ฌ์ฉํ์ฌ ๋น์ฌ์์ ๊ฐ๋ฐ ์ค์ธ PostgreSQL ๋ฐ ์ด์ ์ฒด์ ๋ชจ๋ํฐ๋ง ๋๊ตฌ๋ฅผ ์๊ฐํ๊ณ ์ ํฉ๋๋ค.
Zabbix๋ ๋ฌ์์์์ ๋งค์ฐ ์ธ๊ธฐ ์๋ ํ์ฑ ์ปค๋ฎค๋ํฐ์์ ์ง์ํ๋ ์คํ ์์ค ํ๋ซํผ์ด๊ธฐ ๋๋ฌธ์ ์ค๋ซ๋์ ๋ชจ๋ํฐ๋ง ๋๊ตฌ๋ก Zabbix๋ฅผ ์ ํํ์ต๋๋ค.
๋น์ ํ์ฉ๋ ํ์ค ๋๊ตฌ๋ณด๋ค ๋ ์ ์ฐํ ๋ชจ๋ํฐ๋ง์ ์ ๊ณตํ๊ณ ๋ฉํธ๋ฆญ ์์ง ๋ฐ Zabbix ์๋ฒ๋ก์ ์ ์ก์ ๋ณด์ฅํ๋ ํ์ฑ ์์ด์ ํธ Mamonsu๋ฅผ ๋ง๋ค์์ต๋๋ค. ์ฐ๋ฆฌ ํ์ฌ์์๋ Mamonsu๊ฐ ๊ฐ์ฌ์ ์ฌ์ฉ๋ฉ๋๋ค.
๋ง๋ชฌ์
Mamonsu๋ PostgreSQL ๋ฐ ์ด์ ์ฒด์ ๋ฅผ ๋ชจ๋ํฐ๋งํ๊ธฐ ์ํ ํ์ฑ ์์ด์ ํธ(Zabbix Trapper)์ ๋๋ค. Mamonsu(Python์ผ๋ก ์์ฑ)๋ฅผ ์ฌ์ฉํ๋ฉด PostgreSQL ๋ฐ ์ด์ ์ฒด์ ๋ชจ๋ํฐ๋ง ์ค์ ์ XNUMX๋ถ ์์ ๊ตฌ์ฑํ ์ ์์ต๋๋ค.
Mamonsu์๋ ๋ค์๊ณผ ๊ฐ์ ์ถ๊ฐ ๋๊ตฌ๊ฐ ์์ต๋๋ค.
- mamonsu tune์ Mamonsu ์์ด์ ํธ๊ฐ ์ค์น๋ ๋จธ์ ์ ๋ํ PostgreSQL ๊ตฌ์ฑ ํ์ผ์ ์ค์ ์ ํธ์งํ๋ ๋ช ๋ น์ ๋๋ค.
- mamonsu report๋ ์ด์ ์ฒด์ ์ PostgreSQL์ ๋ํ ๋ต๋ณ์ ์์ฑํ๋ ๋ช ๋ น์ ๋๋ค.
Mamonsu๋ DBMS ์๋ฒ์ ์ค์น๋์ด ์ ๋ณด๋ฅผ ์์งํ๊ณ JSON์ผ๋ก ๊ตฌ์ฑํ์ฌ ์๊ฐํ๋ฅผ ์ํด Zabbix ์๋ฒ๋ก ์ ์กํฉ๋๋ค. ์ฌ๊ธฐ์์ ๋ฉํธ๋ฆญ์ ๋ํ ํ ํ๋ฆฟ์ด ์์ด์ผ ํฉ๋๋ค.
๋ง๋ชฌ์ ์์ ๋ฐฉ์
ํน์ง Mamonsu
- PostgreSQL์ ์ฌ์ฉํ ํจ์จ์ ์ธ ์์ . PostgreSQL์ ๋ํ ์ง์์ ์ธ ์ฐ๊ฒฐ์ Mamonsu์ ์ฃผ์ ์ด์ ์ ๋๋ค. ์ด ๊ฒฝ์ฐ ์ต๋ ์ฐ๊ฒฐ ์๋ ์ฐ๊ฒฐํ๋ ์ต๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ ๊ฐ์ต๋๋ค.
- ํ์ฅ์ฑ. Mamonsu๋ ์์ ํ "ํ๋ฌ๊ทธ์ธ" ์์ด์ ํธ์ด๋ฉฐ ๊ฐ ํ๋ฌ๊ทธ์ธ์ ๊ณ ์ ๋ ๊ตฌ์กฐ์ Python์ ์๋์ ๋จ์์ฑ์ผ๋ก ์ธํด ์ ํ๋ฌ๊ทธ์ธ์ ์์ฑํ๊ฑฐ๋ ํ์ค ํ๋ฌ๊ทธ์ธ(์: ๋ฉํธ๋ฆญ ์์ง ๋งค๊ฐ๋ณ์)์ ํธ์งํ๋ ๋ฐฉ๋ฒ์ ์ฝ๊ฒ ๋ฐฐ์ธ ์ ์์ต๋๋ค.
- ๋ชจ๋ํฐ๋ง ์งํ์ ๊ด๋ฒ์ํ ์ ์ฉ ๋ฒ์ ํ์ฅ ๊ด๋ จ ์งํ๋ฅผ ํฌํจํ PotgreSQL์ ๊ฒฝ์ฐ.
- ๋น ๋ฅธ ์คํ, ์ฆ์ ์ฌ์ฉ ๊ฐ๋ฅ.
- ํ ํ๋ฆฟ ๋ฐ ๊ตฌ์ฑ ํ์ผ ์ ๋ก๋, ๋ฟ๋ง ์๋๋ผ Zabbix ์๋ฒ์ ์ ๋ก๋ํฉ๋๋ค.
- ํฌ๋ก์ค ํ๋ซํผ, ๊ตญ๋ด๋ฅผ ํฌํจํ์ฌ ๋ค์ํ Linux ๋ฐฐํฌํ์ ์ฌ์ฉํ๋ ๊ณ ๊ฐ์๊ฒ ์ค์ํฉ๋๋ค.
- BSD ์กฐํญ ๋ผ์ด์ ์ค.
ํ์ฌ ์ฐ๋ฆฌ๋ ๋ง์ ํ๋ฌ๊ทธ์ธ์ ์ ๊ณตํ๊ณ ์์ผ๋ฉฐ ๋ค์ ๋ฒ์ ๋ง๋ค ์๋ก์ด ๊ฒ์ ์ถ๊ฐํ๋ ค๊ณ ํฉ๋๋ค.
- PostgreSQL์ฉ ํ๋ฌ๊ทธ์ธ 14๊ฐ,
- OS Linux์ฉ ํ๋ฌ๊ทธ์ธ 8๊ฐ,
- OS Windows์ฉ ํ๋ฌ๊ทธ์ธ 4๊ฐ.
Mamonsu๋ 110๊ฐ๊ฐ ๋๋ PostgreSQL ๋ฐ ์ด์ ์ฒด์ ๋ฉํธ๋ฆญ์ ์์งํฉ๋๋ค.
- 70๊ฐ์ PostgreSQL ์งํ,
- 40๊ฐ์ OS Linux ์งํ,
- 8 OS Windows ์งํ.
์ฃผ์ ๋ฉํธ๋ฆญ์๋ DBMS ๊ฐ์ฉ์ฑ, ์ฐ๊ฒฐ ์, ๋ฐ์ดํฐ๋ฒ ์ด์ค ํฌ๊ธฐ, ์ฒดํฌํฌ์ธํธ, ์ฝ๊ธฐ/์ฐ๊ธฐ ์๋, ์ ๊ธ, autovacuum ํ๋ก์ธ์ค ์ ๋ฐ WAL ์์ฑ ์๋๊ฐ ํฌํจ๋ฉ๋๋ค. ์ฌ์ฉ ๊ฐ๋ฅํ ๋ฉํธ๋ฆญ์ ์ ์ฒด ๋ชฉ๋ก๊ณผ ๋ชจ๋ ๋๊ตฌ์ ๋ํ ์์ธํ ์ค๋ช
์ ๋ค์์์ ํ์ธํ ์ ์์ต๋๋ค.
GitHub์์ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ฉํธ๋ฆญ ๋ชฉ๋ก
5๋ถ ๋ง์ ๋ง๋ชฌ์ ์คํ
Mamonsu๋ฅผ ์ฌ์ฉํ์ฌ PostgreSQL ๋ฐ ์ด์ ์ฒด์ ๋ชจ๋ํฐ๋ง์ ์ค์ ํ๋ ค๋ฉด ๊ฐ๋จํ 5๋จ๊ณ๋ฅผ ๋ฐ๋ฅด๋ฉด 5๋ถ ์์ ์๋ฃํ ์ ์์ต๋๋ค.
- ๋ง๋ชฌ์ ์ค์น. Mamonsu๋ ์์ค์์ ๋น๋ํ๊ฑฐ๋ ์ฌ์ฉ ๊ฐ๋ฅํ ํจํค์ง๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
$ git clone ... && cd mamonsu && python setup.py
build && python setup.py install
- ์ฐ๊ฒฐ ์ค์ . agent.conf ํ์ผ์์ PostgreSQL ๋ฐ Zabbix ์๋ฒ์ ๋ํ ์ฐ๊ฒฐ ๋งค๊ฐ ๋ณ์๋ฅผ ์ค์ ํด์ผ ํฉ๋๋ค.
/etc/mamonsu/agent.conf
- ํ ํ๋ฆฟ์ Zabbix ์๋ฒ๋ก ๋ด๋ณด๋ด๊ธฐ.
$ mamonsu zabbix template export
/usr/share/mamonsu/example.xml
- Zabbix ์๋ฒ์ ํธ์คํธ ์ถ๊ฐ. ๋ด๋ณด๋ธ ํ ํ๋ฆฟ์ Zabbix ์๋ฒ์ ์ ํธ์คํธ์ ์๋์ผ๋ก ์ฐ๊ฒฐ๋ฉ๋๋ค.
$ mamonsu zabbix host create mamonsu-demo
- ์ถ์.
$ service mamonsu start
๋ง๋ชฌ์ ๊ฐ๋ฐ๋ฐฉํฅ
Mamonsu ๊ฐ๋ฐ์ ์ผํ์ผ๋ก ์งํ๋ฅผ ์ธ๋ถํํ๊ณ ๊ฐ๋ณ ํ ์ด๋ธ์ ํฌ๊ธฐ๋ฅผ ๋ชจ๋ํฐ๋งํ๋ ํ๋ฌ๊ทธ์ธ๊ณผ ๊ฐ์ ์๋ก์ด ํ๋ฌ๊ทธ์ธ์ ๋ง๋ค ๊ณํ์ ๋๋ค. ๋ํ ๋ช ๋ น์ ํตํด ์๋ ์กฐ์ ๊ธฐ๋ฅ์ ํ์ฅํ ๋ฟ๋ง ์๋๋ผ ์ถ๊ฐ ๋๊ตฌ๋ฅผ ๊ฐ์ ํ๊ณ ๋ง๋ค ๊ณํ์ ๋๋ค. ๋ง๋ชฌ์ ํ .
Zabbix Agent 2์ ์ผ๋ถ์ธ PostgreSQL ๋ชจ๋ํฐ๋ง ๋ชจ๋
๋น ๋ฅด๊ณ ๋๋ฆฌ ์ฌ์ฉ๋๋ ๋๋ผ์ด๋ฒ๋ PostgreSQL์ ์ฐ๊ฒฐํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
์ง๊ธ๊น์ง ํค๋ก ํธ๋ค๋ฌ๋ฅผ ํธ์ถํ๋ Exporter์ ๊ตฌ์ฑ ํ์ผ์ ์ง์ ๋ ์๋ฒ์์ ์ฐ๊ฒฐ ๋งค๊ฐ ๋ณ์๋ฅผ ์ฝ๊ณ ํ์ธํ๋ Configurator Zabbix Agent 2์ ๋ ๊ฐ์ง ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
๋ฉํธ๋ฆญ์ ๊ทธ๋ฃนํํ๊ณ ๋ฉํธ๋ฆญ๊ณผ ๋ฉํธ๋ฆญ ๊ทธ๋ฃน์ ๋ํ ์ฒ๋ฆฌ๊ธฐ(handler)๋ฅผ ์ฌ์ฉํ๊ณ JSON์์ ๋ฉํธ๋ฆญ ๊ทธ๋ฃน์ ์ข ์ ๋ณ์(์ข ์ ํญ๋ชฉ)๋ก ์ฌ์ฉํ๊ณ ํ์ ์์ค ๊ฒ์(๋ฐ๊ฒฌ ๊ท์น)์ ์ฌ์ฉํ์ฌ DBMS ์์ ์ ์ต์ ํํ๋ ค๊ณ ํ์ต๋๋ค. ).
์ฃผ์ ๊ธฐ๋ฅ
- ํ์ธ ์ฌ์ด์ PostgreSQL์ ๋ํ ์ง์์ ์ธ ์ฐ๊ฒฐ ์ ์ง
- ์ ์ฐํ ํด๋ง ๊ฐ๊ฒฉ ์ง์
- 10๋ถํฐ ์์ํ๋ PostgreSQL ๋ฒ์ ๋ฐ ๋ฒ์ 4.4๋ถํฐ ์์ํ๋ Zabbix Server์์ ํธํ์ฑ;
- Zabbix Agent 2๋ฅผ ์ฌ์ฉํ๋ฉด ์ฌ๋ฌ ์ธ์ ์ ๋ง๋ค ์ ์์ผ๋ฏ๋ก ์ฌ๋ฌ PostgreSQL ์ธ์คํด์ค๋ฅผ ๋์์ ์ฐ๊ฒฐํ๊ณ ๋ชจ๋ํฐ๋งํ ์ ์์ต๋๋ค.
PostgreSQL ์ฐ๊ฒฐ ๋งค๊ฐ๋ณ์ ์์ค
์ด ์ธ ๊ฐ์ง ์์ค์ PostgreSQL ์ฐ๊ฒฐ ๋งค๊ฐ๋ณ์, ์ฆ ์์ ๋ฐ ์ค์ ์ด ์์ต๋๋ค.
- ๊ธ๋ก๋ฒ,
- ์ธ์ ,
- ๋งคํฌ๋ก.
-
์ ์ญ ๋งค๊ฐ๋ณ์๋ ์์ด์ ํธ ์์ค์์ ์ค์ ๋๊ณ ์ธ์ ๋ฐ ๋งคํฌ๋ก ๋งค๊ฐ๋ณ์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ ๋งค๊ฐ๋ณ์๋ฅผ ์ ์ํฉ๋๋ค.
-
PostgreSQL์ ๋ํ ์ฐ๊ฒฐ ๋งค๊ฐ๋ณ์ - ์ธ์ ์ ํ์ผ์ ์ค์ ๋ฉ๋๋ค. zabbix_agent2.conf.
PostgreSQL ์ฐ๊ฒฐ ์ต์ - ์ธ์
- ํค์๋ ๋ค ์ธ์ ํค(ํ ํ๋ฆฟ)์ ์ง์ ๋์ด์ผ ํ๋ ๊ณ ์ ํ ์ธ์ ์ด๋ฆ์ด ์ง์ ๋ฉ๋๋ค.
- ๋งค๊ฐ ๋ณ์ URI ะธ ์ฌ์ฉ์ ์ด๋ฆ ๋ชจ๋ ์ธ์ ์ ํ์ํฉ๋๋ค.
- ๊ธฐ๋ณธ ์ด๋ฆ์ ์ง์ ํ์ง ์์ผ๋ฉด ๋ชจ๋ PostgreSQL ์ธ์ ์ ๋ํ ๊ธฐ๋ณธ ๊ณตํต ๊ธฐ๋ณธ ์ด๋ฆ์ด ์ฌ์ฉ๋๋ฉฐ ์ด๋ ๊ตฌ์ฑ ํ์ผ์์๋ ์ค์ ๋ฉ๋๋ค.
- PostgreSQL์ ๋ํ ์ฐ๊ฒฐ ๋งค๊ฐ๋ณ์ - ๋งคํฌ๋ก๋ ํ ํ๋ฆฟ์ ๋ฉํธ๋ฆญ ํค์ ์ค์ ๋ฉ๋๋ค(Zabbix Agent 1์์ ์ฌ์ฉ๋๋ ๋ฐฉ๋ฒ๊ณผ ์ ์ฌ). ์ฆ, ํ ํ๋ฆฟ์ ์์ฑ๋ ๋ค์ ํค์ ๋งค๊ฐ๋ณ์๋ก ์ง์ ๋ฉ๋๋ค. ์ด ๊ฒฝ์ฐ ๋งคํฌ๋ก์ ์์๋ ๊ณ ์ ๋์ด ์์ต๋๋ค. ์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค. URI ํญ์ ๋จผ์ ๋์ด๋ฉ๋๋ค.
PostgreSQL ์ฐ๊ฒฐ ๋งค๊ฐ๋ณ์ - ๋งคํฌ๋ก
PostgreSQL ๋ชจ๋ํฐ๋ง ๋ชจ๋์๋ ๋ค์์ ํฌํจํ์ฌ ์๋นํ ๊ด๋ฒ์ํ PostgreSQL ๋งค๊ฐ๋ณ์๋ฅผ ๋ค๋ฃฐ ์ ์๋ 95๊ฐ ์ด์์ ์งํ๊ฐ ์ด๋ฏธ ํฌํจ๋์ด ์์ต๋๋ค.
- ์ฐ๊ฒฐ ์
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ํฌ๊ธฐ,
- wal ํ์ผ ๋ณด๊ด,
- ๊ฒ๋ฌธ์,
- "๋ถํ์ด ์ค๋ฅธ" ํ ์ด๋ธ์ ์,
- ๋ณต์ ์ํ,
- ๋ณต์ ์ง์ฐ.
PostgreSQL ์งํ๋ ์ด์ ์ฒด์ ๋งค๊ฐ๋ณ์ ์์ด๋ ์ ์ตํ์ง ์์ต๋๋ค. ๊ทธ๋ฌ๋ Zabbix Agent 2๋ ์ด๋ฏธ ์ด์ ์ฒด์ ๋งค๊ฐ ๋ณ์๋ฅผ ์์งํ๋ ๋ฐฉ๋ฒ์ ์๊ณ ์์ผ๋ฏ๋ก ์ ์ฒด ๊ทธ๋ฆผ์ ๋ณด๋ ค๋ฉด ํ์ํ ํ ํ๋ฆฟ์ ํธ์คํธ์ ์ฐ๊ฒฐํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค.
๋งค๋์
ํธ๋ค๋ฌ๋ ์์ฒญ ์์ฒด๊ฐ ์คํ๋๊ณ ๋ฉํธ๋ฆญ์ ์์ ํ ์ ์๋ ๋ชจ๋์ ๊ธฐ๋ณธ ๋จ์์ ๋๋ค.
๊ฐ๋จํ ๋ฉํธ๋ฆญ์ ์ป์ผ๋ ค๋ฉด:
- ์ ์ธก์ ํญ๋ชฉ์ ๊ฐ์ ธ์ฌ ํ์ผ์ ๋ง๋ญ๋๋ค.
zabbix/src/go/plugins/postgres/handler_uptime.go
- ํจํค์ง๋ฅผ ์ฐ๊ฒฐํ๊ณ ๋ฉํธ๋ฆญ์ ๊ณ ์ ํค(ํค)๋ฅผ ์ง์ ํฉ๋๋ค.
- ์์ฒญ์ผ๋ก ์ฒ๋ฆฌ๊ธฐ(์ฒ๋ฆฌ๊ธฐ)๋ฅผ ๋ง๋ญ๋๋ค. ์ฆ, ๊ฒฐ๊ณผ๋ฅผ ํฌํจํ ๋ณ์๋ฅผ ์์ํฉ๋๋ค.
- ์์ฒญ์ ์คํํฉ๋๋ค.
์ค๋ฅ ์์ฒญ์ ํ์ธํด์ผ ํ๋ฉฐ ๊ทธ ํ Zabbix Agent 2 ํ๋ก์ธ์ค์์ ๊ฒฐ๊ณผ๋ฅผ ์ ํํฉ๋๋ค.
- ์ ์ธก์ ํญ๋ชฉ ํค๋ฅผ ๋ฑ๋กํฉ๋๋ค.
๋ฉํธ๋ฆญ์ ๋ฑ๋กํ ํ ์ ๋ฉํธ๋ฆญ์ผ๋ก ์์ด์ ํธ๋ฅผ ๋ค์ ๋น๋ํ ์ ์์ต๋๋ค.
์ด ๋ชจ๋์ ์ฌ์ดํธ์์ Zabbix 5.0๋ถํฐ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๊ฐ์ฌํฉ๋๋ค!
์ ์ฉํ ๋งํฌ
์ถ์ฒ : habr.com