X5๋ 43๊ฐ์ ์ ํต ์ผํฐ์ 4๋์ ์์ฒด ํธ๋ญ์ ์ด์ํ์ฌ 029๊ฐ ๋งค์ฅ์ ์ค๋จ ์์ด ์ ํ์ ๊ณต๊ธํฉ๋๋ค. ์ด ๊ธฐ์ฌ์์๋ ์ฐฝ๊ณ ์ด๋ฒคํธ๋ฅผ ์ฒ์๋ถํฐ ๋ชจ๋ํฐ๋งํ๊ธฐ ์ํ ๋ํํ ์์คํ ์ ๋ง๋ ๊ฒฝํ์ ๊ณต์ ํ๊ฒ ์ต๋๋ค. ์ด ์ ๋ณด๋ ๋ค์ํ ์ ํ์ ๊ด๋ฆฌํ๋ ์์ญ ๊ฐ์ ์ ํต ์ผํฐ๋ฅผ ๋ณด์ ํ ๋ฌด์ญ ํ์ฌ์ ๋ฌผ๋ฅ ์ ๋ฌธ๊ฐ์๊ฒ ์ ์ฉํ ๊ฒ์ ๋๋ค.
์์น์ ์ผ๋ก ๋ชจ๋ํฐ๋ง ๋ฐ ๋น์ฆ๋์ค ํ๋ก์ธ์ค ๊ด๋ฆฌ ์์คํ
๊ตฌ์ถ์ ๋ฉ์์ง ๋ฐ ์ฌ๊ณ ์ฒ๋ฆฌ๋ถํฐ ์์๋ฉ๋๋ค. ๋์์, ๋น์ฆ๋์ค ์ด๋ฒคํธ ๋ฐ์ ์ฌ์ค์ ์๋ํํ๊ณ ์ฌ๊ฑด์ ๊ธฐ๋กํ๋ ๊ฐ๋ฅ์ฑ๊ณผ ๊ด๋ จ๋ ์ค์ํ ๊ธฐ์ ์ ํฌ์ธํธ๊ฐ ๋๋ฝ๋์์ต๋๋ค. WMS, TMS ๋ฑ๊ณผ ๊ฐ์ ๋๋ถ๋ถ์ ๋น์ฆ๋์ค ์์คํ
์๋ ์์ฒด ํ๋ก์ธ์ค๋ฅผ ๋ชจ๋ํฐ๋งํ๊ธฐ ์ํ ๋๊ตฌ๊ฐ ๋ด์ฅ๋์ด ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ด๊ฒ์ด ๋ค๋ฅธ ์ ์กฐ์
์ฒด์ ์์คํ
์ด๊ฑฐ๋ ๋ชจ๋ํฐ๋ง ๊ธฐ๋ฅ์ด ์ถฉ๋ถํ ๊ฐ๋ฐ๋์ง ์์ ๊ฒฝ์ฐ ๊ฐ๋น์ผ ์์ ์ ์ฃผ๋ฌธํ๊ฑฐ๋ ์ถ๊ฐ ์ค์ ์ ์ํด ์ ๋ฌธ ์ปจ์คํดํธ๋ฅผ ์ ์นํด์ผ ํฉ๋๋ค.
์์คํ ์์ ์งํ๋ฅผ ์ป๊ธฐ ์ํด ์์ค(ํ ์ด๋ธ) ์๋ณ๊ณผ ๊ด๋ จ๋ ์ปจ์คํ ์ ์ผ๋ถ๋ง ํ์ํ ์ ๊ทผ ๋ฐฉ์์ ๊ณ ๋ คํด ๋ณด๊ฒ ์ต๋๋ค.
์ฐ๋ฆฌ ์ฐฝ๊ณ ์ ํน์ง์ ์ฌ๋ฌ ์ฐฝ๊ณ ๊ด๋ฆฌ ์์คํ (WMS Exceed)์ด ํ๋์ ๋ฌผ๋ฅ ๋จ์ง์์ ์ด์๋๋ค๋ ๊ฒ์ ๋๋ค. ์ฐฝ๊ณ ๋ ๋ ผ๋ฆฌ์ ์ผ ๋ฟ๋ง ์๋๋ผ ๋ฌผํ ๋ณด๊ด ๋ฒ์ฃผ(๊ฑด์กฐํ, ์ฃผ๋ฅ, ๋๋ํ ๋ฑ)์ ๋ฐ๋ผ ๊ตฌ๋ถ๋ฉ๋๋ค. ํ๋์ ๋ฌผ๋ฅ ๋จ์ง ๋ด์๋ ์ฌ๋ฌ ๊ฐ์ ๋ณ๋ ์ฐฝ๊ณ ๊ฑด๋ฌผ์ด ์์ผ๋ฉฐ, ๊ฐ ๊ฑด๋ฌผ์ ์์ฒด WMS์ ์ํด ๊ด๋ฆฌ๋ฉ๋๋ค.
์ฐฝ๊ณ ์์ ๋ฐ์ํ๋ ํ๋ก์ธ์ค์ ๋ํ ์ ๋ฐ์ ์ธ ๊ทธ๋ฆผ์ ํ์ฑํ๊ธฐ ์ํด ๊ด๋ฆฌ์๋ ํ๋ฃจ์ ์ฌ๋ฌ ๋ฒ ๊ฐ WMS์ ๋ณด๊ณ ๋ฅผ ๋ถ์ํ๊ณ ์ฐฝ๊ณ ์ด์์(์์ทจ์ธ, ํผ์ปค, ์คํ์ปค)์ ๋ฉ์์ง๋ฅผ ์ฒ๋ฆฌํ๊ณ ์ค์ ์ด์ ์งํ๋ฅผ ์์ฝํ์ฌ ์ ๋ณด ๊ฒ์ํ์ ๋ฐ์ํฉ๋๋ค.
๊ด๋ฆฌ์์ ์๊ฐ์ ์ ์ฝํ๊ธฐ ์ํด ์ฐ๋ฆฌ๋ ์ฐฝ๊ณ ์ด๋ฒคํธ์ ์ด์ ์ ์ด๋ฅผ ์ํ ์ ๋ ดํ ์์คํ ์ ๊ฐ๋ฐํ๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค. ์๋ก์ด ์์คํ ์ ์ฐฝ๊ณ ํ๋ก์ธ์ค์ ์ด์ ์ฑ๊ณผ์ ๋ํ "ํซ" ์งํ๋ฅผ ํ์ํ๋ ๊ฒ ์ธ์๋ ๊ด๋ฆฌ์๊ฐ ์ฌ๊ณ ๋ฅผ ๊ธฐ๋กํ๊ณ ์์ ๊ตฌํ์ ๋ชจ๋ํฐ๋งํ์ฌ ํด๋น ์งํ์ ์ํฅ์ ๋ฏธ์น๋ ์์ธ์ ์ ๊ฑฐํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. ํ์ฌ์ IT ์ํคํ ์ฒ์ ๋ํ ์ผ๋ฐ ๊ฐ์ฌ๋ฅผ ์ค์ํ ํ, ์ฐ๋ฆฌ๋ ํ์ํ ์์คํ ์ ๊ฐ๋ณ ๋ถ๋ถ์ด ์ด๋ฏธ ์ฐ๋ฆฌ ํ๊ฒฝ์ ์ด๋ค ๋ฐฉ์์ผ๋ก๋ ์กด์ฌํ๋ฉฐ ํด๋น ๋ถ๋ถ์ ๋ํ ์ค์ ๊ฒ์ฌ์ ํ์ํ ์ง์ ์๋น์ค๊ฐ ๋ชจ๋ ์๋ค๋ ๊ฒ์ ๊นจ๋ฌ์์ต๋๋ค. ๋จ์ ๊ฒ์ ์ ์ฒด ๊ฐ๋ ์ ๋จ์ผ ์ํคํ ์ฒ ์๋ฃจ์ ์ผ๋ก ๊ฐ์ ธ์ค๊ณ ๊ฐ๋ฐ ๋ฒ์๋ฅผ ์ถ์ ํ๋ ๊ฒ์ ๋๋ค.
์๋ก์ด ์์คํ ์ ๊ตฌ์ถํ๋ ๋ฐ ํ์ํ ์์ ๋์ ํ๊ฐํ ํ ํ๋ก์ ํธ๋ฅผ ์ฌ๋ฌ ๋จ๊ณ๋ก ๋๋๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค.
- ์ฐฝ๊ณ ํ๋ก์ธ์ค์ ๋ํ ์งํ ์์ง, ์งํ ๋ฐ ํธ์ฐจ์ ์๊ฐํ ๋ฐ ์ ์ด
- ํธ์ฐจ์ ๋ํ ํ๋ก์ธ์ค ํ์ค ์๋ํ ๋ฐ ๋น์ฆ๋์ค ์๋น์ค ์๋น์ค์ ์ ํ๋ฆฌ์ผ์ด์ ๋ฑ๋ก
- ๋ถํ ์์ธก ๋ฐ ๊ด๋ฆฌ์๋ฅผ ์ํ ๊ถ์ฅ ์ฌํญ ์์ฑ์ ํตํ ์ฌ์ ๋ชจ๋ํฐ๋ง.
์ฒซ ๋ฒ์งธ ๋จ๊ณ์์ ์์คํ ์ ๋จ์ง์ ๋ชจ๋ WMS์์ ์ค๋น๋ ์ด์ ๋ฐ์ดํฐ ์กฐ๊ฐ์ ์์งํด์ผ ํฉ๋๋ค. ์ฝ๊ธฐ๋ ๊ฑฐ์ ์ค์๊ฐ(5๋ถ ๋ฏธ๋ง ๊ฐ๊ฒฉ)์ผ๋ก ์ด๋ฃจ์ด์ง๋๋ค. ๋ฌธ์ ๋ ์์คํ ์ ์ ์ฒด ๋คํธ์ํฌ์ ๊ตฌ์ถํ ๋ ์์ญ ๊ฐ์ ์ฐฝ๊ณ ์ ์๋ DBMS์์ ๋ฐ์ดํฐ๋ฅผ ์ป์ด์ผ ํ๋ค๋ ์ ์ด๋ค. ์์ ๋ ์ด์ ๋ฐ์ดํฐ๋ ์์คํ ์ฝ์ด์ ๋ ผ๋ฆฌ์ ์ํด ์ฒ๋ฆฌ๋์ด ๊ณํ๋ ์งํ์์ ํธ์ฐจ๋ฅผ ๊ณ์ฐํ๊ณ ํต๊ณ๋ฅผ ๊ณ์ฐํฉ๋๋ค. ์ด๋ ๊ฒ ์ฒ๋ฆฌ๋ ๋ฐ์ดํฐ๋ ๊ด๋ฆฌ์์ ํ๋ธ๋ฆฟ์ด๋ ์ฐฝ๊ณ ์๋ดํ์ ์ดํดํ๊ธฐ ์ฌ์ด ๊ทธ๋ํ์ ๋ํ ํํ๋ก ํ์๋์ด์ผ ํฉ๋๋ค.
์ฒซ ๋ฒ์งธ ๋จ๊ณ์ ํ์ผ๋ฟ ๊ตฌํ์ ์ ํฉํ ์์คํ
์ ์ ํํ ๋ ์ฐ๋ฆฌ๋ Zabbix๋ฅผ ์ ํํ์ต๋๋ค. ์ด ์์คํ
์ ์ด๋ฏธ ์ฐฝ๊ณ ์์คํ
์ IT ์ฑ๋ฅ์ ๋ชจ๋ํฐ๋งํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ์ฐฝ๊ณ ์ด์์ ๋น์ฆ๋์ค ์งํ๋ฅผ ์์งํ๊ธฐ ์ํ ๋ณ๋์ ์ค์น๋ฅผ ์ถ๊ฐํ๋ฉด ์ฐฝ๊ณ ์ํ์ ๋ํ ์ ๋ฐ์ ์ธ ๊ทธ๋ฆผ์ ์ป์ ์ ์์ต๋๋ค.
์์คํ ์ ์ผ๋ฐ์ ์ธ ์ํคํ ์ฒ๋ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ต๋๋ค.
๊ฐ WMS ์ธ์คํด์ค๋ ๋ชจ๋ํฐ๋ง ์์คํ
์ ํธ์คํธ๋ก ์ ์๋ฉ๋๋ค. ์งํ๋ ์ค๋น๋ SQL ์ฟผ๋ฆฌ๋ก ์คํฌ๋ฆฝํธ๋ฅผ ์คํํ์ฌ ๋ฐ์ดํฐ ์ผํฐ ๋คํธ์ํฌ์ ์ค์ ์๋ฒ์์ ์์ง๋ฉ๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ํ ์ง์ ์ก์ธ์ค๋ฅผ ๊ถ์ฅํ์ง ์๋ ์์คํ
(์: SAP EWM)์ ๋ชจ๋ํฐ๋งํด์ผ ํ๋ ๊ฒฝ์ฐ ๋ฌธ์ํ๋ API ํจ์์ ๋ํ ์คํฌ๋ฆฝํธ ํธ์ถ์ ์ฌ์ฉํ์ฌ ํ์๊ธฐ๋ฅผ ์ป๊ฑฐ๋ python/vbascript๋ก ๊ฐ๋จํ ํ๋ก๊ทธ๋จ์ ์์ฑํ ์ ์์ต๋๋ค.
๋ฉ์ธ ์๋ฒ์ ๋ถํ๋ฅผ ๋ถ์ฐ์ํค๊ธฐ ์ํด Zabbix ํ๋ก์ ์ธ์คํด์ค๊ฐ ์จ์ดํ์ฐ์ค ๋คํธ์ํฌ์ ๋ฐฐํฌ๋ฉ๋๋ค. ํ๋ก์๋ฅผ ํตํด ๋ชจ๋ ๋ก์ปฌ WMS ์ธ์คํด์ค์์ ์์ ์ด ๋ณด์ฅ๋ฉ๋๋ค. ๋ค์์ Zabbix ์๋ฒ๊ฐ ๋งค๊ฐ๋ณ์๋ฅผ ์์ฒญํ ๋ Zabbix ํ๋ก์๊ฐ ์๋ ํธ์คํธ์์ ์คํฌ๋ฆฝํธ๊ฐ ์คํ๋์ด WMS ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๋ฉํธ๋ฆญ์ ์์ฒญํฉ๋๋ค.
์ค์ Zabbix ์๋ฒ์ ๊ทธ๋ํ์ ์ฐฝ๊ณ ํ์๊ธฐ๋ฅผ ํ์ํ๊ธฐ ์ํด Grafana๋ฅผ ๋ฐฐํฌํฉ๋๋ค. Grafana๋ ์ฐฝ๊ณ ์ด์์ ๋ํ ์ธํฌ๊ทธ๋ํฝ์ด ํฌํจ๋ ์ค๋น๋ ๋์๋ณด๋๋ฅผ ํ์ํ๋ ๊ฒ ์ธ์๋ ์งํ์ ํธ์ฐจ๋ฅผ ๋ชจ๋ํฐ๋งํ๊ณ ๋น์ฆ๋์ค ์ฌ๊ณ ์ฒ๋ฆฌ๋ฅผ ์ํด ์ฐฝ๊ณ ์๋น์ค ์์คํ ์ ์๋ ๊ฒฝ๊ณ ๋ฅผ ๋ณด๋ด๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
์๋ฅผ ๋ค์ด, ์ฐฝ๊ณ ์ ๊ณ ๊ตฌ์ญ์ ๋ก๋ ์ ์ด ๊ตฌํ์ ๊ณ ๋ คํด ๋ณด๊ฒ ์ต๋๋ค. ์ฐฝ๊ณ ์ ์ด ์์ญ์์ ํ๋ก์ธ์ค ์ฑ๋ฅ์ ์ฃผ์ ์งํ๋ก ๋ค์์ด ์ ํ๋์์ต๋๋ค.
- ์ํ(๊ณํ, ๋์ฐฉ, ๋ฌธ์, ํ์ญ, ์ถ๋ฐ)๋ฅผ ๊ณ ๋ คํ ์ ์ ๊ตฌ์ญ์ ์ฐจ๋ ์;
- ๋ฐฐ์น ๋ฐ ๋ณด์ถฉ ์์ญ์ ์์ ๋(๋ณด๊ด ์กฐ๊ฑด์ ๋ฐ๋ผ).
์ค์
์์คํ ์ ์ฃผ์ ๊ตฌ์ฑ ์์(SQLcl, Zabbix, Grafana)์ ์ค์น ๋ฐ ๊ตฌ์ฑ์ ๋ค์ํ ์์ค์ ์ค๋ช ๋์ด ์์ผ๋ฉฐ ์ฌ๊ธฐ์๋ ๋ฐ๋ณตํ์ง ์์ต๋๋ค. SQLplus ๋์ SQLcl์ ์ฌ์ฉํ๋ ์ด์ ๋ SQLcl(Java๋ก ์์ฑ๋ Oracle DBMS์ ๋ช ๋ น์ค ์ธํฐํ์ด์ค)์ด Oracle ํด๋ผ์ด์ธํธ๋ฅผ ์ถ๊ฐ๋ก ์ค์นํ ํ์๊ฐ ์๊ณ ์ฆ์ ์ฌ์ฉ ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
Zabbix๋ฅผ ์ฌ์ฉํ์ฌ ์ฐฝ๊ณ ๋น์ฆ๋์ค ํ๋ก์ธ์ค ์งํ๋ฅผ ๋ชจ๋ํฐ๋งํ ๋ ์ฃผ์ํด์ผ ํ ์ฃผ์ ์ฌํญ๊ณผ ์ด๋ฅผ ๊ตฌํํ๋ ๋ฐฉ๋ฒ ์ค ํ๋๋ฅผ ์ค๋ช ํฉ๋๋ค. ๋ํ, ์ด ๊ธ์ ๋ณด์์ ๊ดํ ๊ธ์ด ์๋๋๋ค. ์ฐ๊ฒฐ ๋ณด์๊ณผ ์ ์๋ ๋ฐฉ๋ฒ์ ์ฌ์ฉ์๋ ํ์ผ๋ฟ ์๋ฃจ์ ์ ์์ฐ์ ์ธ ์ด์์ผ๋ก ์ ํํ๋ ๊ณผ์ ์์ ์ถ๊ฐ ์ฐ๊ตฌ๊ฐ ํ์ํฉ๋๋ค.
๊ฐ์ฅ ์ค์ํ ๊ฒ์ ์ด๋ฌํ ์์คํ ์ ๊ตฌํํ ๋ ์์คํ ์์ ์ ๊ณตํ๋ ์ค์ ์ ์ฌ์ฉํ์ฌ ํ๋ก๊ทธ๋๋ฐ ์์ด๋ ์ํํ ์ ์๋ค๋ ๊ฒ์ ๋๋ค.
Zabbix ๋ชจ๋ํฐ๋ง ์์คํ ์ ๋ชจ๋ํฐ๋ง๋๋ ์์คํ ์์ ๋ฉํธ๋ฆญ์ ์์งํ๊ธฐ ์ํ ์ฌ๋ฌ ์ต์ ์ ์ ๊ณตํฉ๋๋ค. ์ด๋ ๋ชจ๋ํฐ๋ง๋๋ ํธ์คํธ๋ฅผ ์ง์ ํด๋งํ๊ฑฐ๋ ํ์ ์์ค ๊ฒ์ ๋งค๊ฐ ๋ณ์๋ฅผ ๊ตฌ์ฑํ๋ ๋ฐฉ๋ฒ์ ํฌํจํ์ฌ ํธ์คํธ์ zabbix_sender๋ฅผ ํตํด ์๋ฒ์ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด๋ ๊ณ ๊ธ ๋ฐฉ๋ฒ์ ํตํด ์ํํ ์ ์์ต๋๋ค. ์ฐ๋ฆฌ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์๋ ์ค์ ์๋ฒ๊ฐ ํธ์คํธ๋ฅผ ์ง์ ํด๋งํ๋ ๋ฐฉ๋ฒ์ด ๋งค์ฐ ์ ํฉํฉ๋๋ค. ์ด๋ฅผ ํตํด ๋ฉํธ๋ฆญ ํ๋ ์์๋ฅผ ์์ ํ ์ ์ดํ ์ ์์ผ๋ฉฐ ๋ชจ๋ํฐ๋ง๋๋ ๊ฐ ํธ์คํธ์ ๋ฐฐํฌํ ํ์ ์์ด ํ๋์ ์ค์ /์คํฌ๋ฆฝํธ ์ธํธ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์์คํ ๋๋ฒ๊น ๋ฐ ์ค์ ์ ์ํ "ํ ์คํธ ๋์"์ผ๋ก ์น์ธ ๊ด๋ฆฌ๋ฅผ ์ํด WMS ์ํฌ์ํธ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
- ์ ์ ์ฐจ๋, ๋์ฐฉํ ๋ชจ๋ ์ฐจ๋: "ํ์ฌ ์๊ฐ์ผ๋ก๋ถํฐ - 72์๊ฐ" ๊ธฐ๊ฐ ๋์์ ์ํ๋ฅผ ๊ฐ์ง ๋ชจ๋ ์ฐจ๋ - SQL ์ฟผ๋ฆฌ ์๋ณ์: getCars.
- ๋ชจ๋ ์ฐจ๋ ์ํ ๋ด์ญ: 72์๊ฐ ์ด๋ด์ ๋์ฐฉํ๋ ๋ชจ๋ ์ฐจ๋์ ์ํ - SQL ์ฟผ๋ฆฌ ์๋ณ์: ์๋์ฐจ์ญ์ฌ.
- ์๋ฝ ์์ ์ฐจ๋: "์์ " ์ํ๋ก ๋์ฐฉํ๋ ๋ชจ๋ ์ฐจ๋์ ์ํ, ํ์ฌ ์๊ฐ์ผ๋ก๋ถํฐ ์๊ฐ ๊ฐ๊ฒฉ "-24์๊ฐ" ๋ฐ "+24์๊ฐ" - SQL ์ฟผ๋ฆฌ ์๋ณ์: ์๋์ฐจ์.
๋ฐ๋ผ์ ์ผ๋ จ์ ์จ์ดํ์ฐ์ค ์ฑ๋ฅ ์งํ๋ฅผ ๊ฒฐ์ ํ ํ WMS ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ํ SQL ์ฟผ๋ฆฌ๋ฅผ ์ค๋นํ ๊ฒ์ ๋๋ค. ์ฟผ๋ฆฌ๋ฅผ ์คํํ๋ ค๋ฉด ๊ธฐ๋ณธ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์๋ "ํซ" ๋ณต์ฌ๋ณธ(๋๊ธฐ)์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
๋ฐ์ดํฐ๋ฅผ ์์ ํ๊ธฐ ์ํด ๋๊ธฐ Oracle DBMS์ ์ฐ๊ฒฐํฉ๋๋ค. ํ ์คํธ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐ๊ฒฐํ๊ธฐ ์ํ IP ์ฃผ์ 192.168.1.106. SQLcl ์์ ํด๋์ TNSNames.ORA์ ์๋ Zabbix ์๋ฒ์ ์ฐ๊ฒฐ ๋งค๊ฐ๋ณ์๋ฅผ ์ ์ฅํฉ๋๋ค.
# cat /opt/sqlcl/bin/TNSNames.ORA
WH1_1=
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.106)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = WH1_1)
)
)
์ด๋ฅผ ํตํด ๋ก๊ทธ์ธ/๋น๋ฐ๋ฒํธ ๋ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ด๋ฆ๋ง ์ง์ ํ์ฌ EZconnect๋ฅผ ํตํด ๊ฐ ํธ์คํธ์ ๋ํด SQL ์ฟผ๋ฆฌ๋ฅผ ์คํํ ์ ์์ต๋๋ค.
# sql znew/Zabmon1@WH1_1
์ค๋น๋ SQL ์ฟผ๋ฆฌ๋ฅผ Zabbix ์๋ฒ์ ์์ ํด๋์ ์ ์ฅํฉ๋๋ค.
/etc/zabbix/sql
์ฐ๋ฆฌ ์๋ฒ์ zabbix ์ฌ์ฉ์์ ๋ํ ์ก์ธ์ค๋ฅผ ํ์ฉํฉ๋๋ค.
# chown zabbix:zabbix -R /etc/zabbix/sql
์์ฒญ์ด ์๋ ํ์ผ์ Zabbix ์๋ฒ์์ ์ก์ธ์คํ๊ธฐ ์ํ ๊ณ ์ ์๋ณ์ ์ด๋ฆ์ ๋ฐ์ต๋๋ค. SQLcl์ ํตํ ๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฟผ๋ฆฌ๋ ์ฌ๋ฌ ๋งค๊ฐ๋ณ์๋ฅผ ๋ฐํํฉ๋๋ค. ์์ฒญ๋น ํ๋์ ๋ฉํธ๋ฆญ๋ง ์ฒ๋ฆฌํ ์ ์๋ Zabbix์ ํน์ฑ์ ๊ณ ๋ คํ์ฌ ์ถ๊ฐ ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ์ฌ ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ๋ณ ๋ฉํธ๋ฆญ์ผ๋ก ๊ตฌ๋ฌธ ๋ถ์ํฉ๋๋ค.
wh_Metrics.sh๋ผ๋ ๊ธฐ๋ณธ ์คํฌ๋ฆฝํธ๋ฅผ ์ค๋นํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ํ SQL ์ฟผ๋ฆฌ๋ฅผ ํธ์ถํ๊ณ , ๊ฒฐ๊ณผ๋ฅผ ์ ์ฅํ๊ณ , ๋ฐ์ดํฐ ๊ฒ์ ์ฑ๊ณต ์งํ์ ํจ๊ป ๊ธฐ์ ์งํ๋ฅผ ๋ฐํํ๋๋ก ํ๊ฒ ์ต๋๋ค.
#!/bin/sh
## ะฝะฐัััะพะนะบะฐ ะพะบััะถะตะฝะธั</i>
export ORACLE_HOME=/usr/lib/oracle/11.2/client64
export PATH=$PATH:$ORACLE_HOME/bin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib64:/usr/lib:$ORACLE_HOME/bin
export TNS_ADMIN=$ORACLE_HOME/network/admin
export JAVA_HOME=/
alias sql="opt/sqlcl/bin/sql"
## ะทะฐะดะฐัะผ ะฟััั ะบ ัะฐะนะปั ั sql-ะทะฐะฟัะพัะพะผ ะธ ะฟะฐัะฐะผะตััะธะทะพะฒะฐะฝะฝะพะต ะธะผั ัะฐะนะปะฐ
scriptLocation=/etc/zabbix/sql
sqlFile=$scriptLocation/sqlScript_"$2".sql
## ะทะฐะดะฐัะผ ะฟััั ะบ ัะฐะนะปั ะดะปั ั
ัะฐะฝะตะฝะธั ัะตะทัะปััะฐัะพะฒ
resultFile=/etc/zabbix/sql/mon_"$1"_main.log
## ะฝะฐัััะฐะธะฒะฐะตะผ ัััะพะบั ะฟะพะดะบะปััะตะฝะธั ะบ ะะ
username="$3"
password="$4"
tnsname="$1"
## ะทะฐะฟัะฐัะธะฒะฐะตะผ ัะตะทัะปััะฐั ะธะท ะะ
var=$(sql -s $username/$password@$tnsname < $sqlFile)
## ัะพัะผะฐัะธััะตะผ ัะตะทัะปััะฐั ะทะฐะฟัะพัะฐ ะธ ะทะฐะฟะธััะฒะฐะตะผ ะฒ ัะฐะนะป
echo $var | cut -f5-18 -d " " > $resultFile
## ะฟัะพะฒะตััะตะผ ะฝะฐะปะธัะธะต ะพัะธะฑะพะบ
if grep -q ora "$resultFile"; then
echo null > $resultFile
echo 0
else
echo 1
fi
Zabbix-proxy ๊ตฌ์ฑ ์ค์ ์ ๋ฐ๋ผ ์ธ๋ถ ์คํฌ๋ฆฝํธ๋ฅผ ์ ์ฅํ๊ธฐ ์ํ ํด๋์ ์คํฌ๋ฆฝํธ์ ํจ๊ป ์์ฑ๋ ํ์ผ์ ๋ฐฐ์นํฉ๋๋ค(๊ธฐ๋ณธ์ ์ผ๋ก - /usr/local/share/zabbix/externalscripts).
์คํฌ๋ฆฝํธ๊ฐ ๊ฒฐ๊ณผ๋ฅผ ์์ ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์๋ณ์ ์คํฌ๋ฆฝํธ ๋งค๊ฐ๋ณ์๋ก ์ ๋ฌ๋ฉ๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค ID๋ TNSNames.ORA ํ์ผ์ ์ค์ ์ค๊ณผ ์ผ์นํด์ผ ํฉ๋๋ค.
SQL ์ฟผ๋ฆฌ ํธ์ถ์ ๊ฒฐ๊ณผ๋ ๋ค์๊ณผ ๊ฐ์ ํ์ผ์ ์ ์ฅ๋ฉ๋๋ค. mon_base_id_main.log ์ฌ๊ธฐ์ base_id = ์คํฌ๋ฆฝํธ ๋งค๊ฐ๋ณ์๋ก ๋ฐ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ณ์์ ๋๋ค. ์๋ฒ์์ ์ฌ๋ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋์์ ์์ฒญํ๋ ๊ฒฝ์ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ณ์๋ก ๊ฒฐ๊ณผ ํ์ผ์ ๋ถํ ํฉ๋๋ค. ์ฟผ๋ฆฌ๋ ์ ๋ ฌ๋ XNUMX์ฐจ์ ๊ฐ ๋ฐฐ์ด์ ๋ฐํํฉ๋๋ค.
์์ฒญ ๊ฒฐ๊ณผ๊ฐ ํฌํจ๋ ํ์ผ์์ ์ง์ ๋ ์งํ๋ฅผ ์ป์ผ๋ ค๋ฉด getMetrica.sh๋ผ๊ณ ํ๋ ๋ค์ ์คํฌ๋ฆฝํธ๊ฐ ํ์ํฉ๋๋ค.
#!/bin/sh
## ะพะฟัะตะดะตะปัะตะผ ะธะผั ัะฐะนะปะฐ ั ัะตะทัะปััะฐัะพะผ ะทะฐะฟัะพัะฐ
resultFile=/etc/zabbix/sql/mon_โ$1โ_main.log
## ัะฐะทะฑะธัะฐะตะผ ะผะฐััะธะฒ ะทะฝะฐัะตะฝะธะน ัะตะทัะปััะฐัะฐ ััะตะดััะฒะฐะผะธ ัะบัะธะฟัะฐ:
## ะฟัะธ ัะฐะฑะพัะต ัะพ ััะฐัััะฐะผะธ, ะทะฐะฟัะพั ะฒะพะทะฒัะฐัะฐะตั ะฝะฐะผ ะดะฒัะผะตัะฝัะน ะผะฐััะธะฒ (RSLT) ะฒ ะฒะธะดะต
## {ััะฐััั1 ะทะฝะฐัะตะฝะธะต1 ััะฐััั2 ะทะฝะฐัะตะฝะธะต2โฆ} ัะฐะทะดะตะปัะฝะฝัั
ะฟัะพะฑะตะปะฐะผะธ (ะทะฝะฐัะตะฝะธะต IFS)
## ะฟะฐัะฐะผะตััะพะผ ะทะฐะฟัะพัะฐ ะฟะตัะตะดะฐัะผ ะบะพะด ััะฐัััะฐ ะธ ัะบัะธะฟั ะฒะตัะฝัั ะทะฝะฐัะตะฝะธะต
IFS=โ โ
str=$(cat $resultFile)
status_id=null
read โra RSLT <<< โ$strโ
for i in โ${RSLT[@]}โ; do
if [[ โ$status_idโ == null ]]; then
status_id=โ$I"
elif [[ โ$status_idโ == โ$2โ ]]; then
echo โ$iโ
break
else
status_id=null
fi
done
์ด์ Zabbix๋ฅผ ๊ตฌ์ฑํ๊ณ ์ฐฝ๊ณ ์น์ธ ํ๋ก์ธ์ค ์งํ ๋ชจ๋ํฐ๋ง์ ์์ํ ์ค๋น๊ฐ ๋์์ต๋๋ค.
Zabbix ์์ด์ ํธ๋ ๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ ธ๋์ ์ค์น ๋ฐ ๊ตฌ์ฑ๋ฉ๋๋ค.
๊ธฐ๋ณธ ์๋ฒ์์๋ Zabbix ํ๋ก์๋ฅผ ์ฌ์ฉํ์ฌ ๋ชจ๋ ์๋ฒ๋ฅผ ์ ์ํฉ๋๋ค. ์ค์ ์ ์ํด์๋ ๋ค์ ๊ฒฝ๋ก๋ก ์ด๋ํ์ธ์.
๊ด๋ฆฌ โ ํ๋ก์ โ ํ๋ก์ ์์ฑ
์ ์ด๋๋ ํธ์คํธ๋ฅผ ์ ์ํฉ๋๋ค.
์ค์ โ ํธ์คํธ โ ํธ์คํธ ์์ฑ
ํธ์คํธ ์ด๋ฆ์ ์์ด์ ํธ ๊ตฌ์ฑ ํ์ผ์ ์ง์ ๋ ํธ์คํธ ์ด๋ฆ๊ณผ ์ผ์นํด์ผ ํฉ๋๋ค.
๋ ธ๋์ ๊ทธ๋ฃน๊ณผ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์๋ ๋ ธ๋์ IP ์ฃผ์ ๋๋ DNS ์ด๋ฆ์ ์ง์ ํฉ๋๋ค.
์ธก์ ํญ๋ชฉ์ ๋ง๋ค๊ณ ํด๋น ์์ฑ์ ์ง์ ํฉ๋๋ค.
์ค์ โ ๋ ธ๋ โ '๋ ธ๋ ์ด๋ฆ' โ ๋ฐ์ดํฐ ํญ๋ชฉ>๋ฐ์ดํฐ ํญ๋ชฉ ์์ฑ
1) ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ชจ๋ ๋งค๊ฐ๋ณ์๋ฅผ ์ฟผ๋ฆฌํ๋ ๊ธฐ๋ณธ ์ธก์ ํญ๋ชฉ์ ๋ง๋ญ๋๋ค.
๋ฐ์ดํฐ ์์์ ์ด๋ฆ์ ์ค์ ํ๊ณ "์ธ๋ถ ํ์ธ" ์ ํ์ ๋ํ๋
๋๋ค. "ํค" ํ๋์์๋ Oracle ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ด๋ฆ, SQL ์ฟผ๋ฆฌ ์ด๋ฆ, ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ์ ์ํ ๋ก๊ทธ์ธ ๋ฐ ๋น๋ฐ๋ฒํธ๋ฅผ ๋งค๊ฐ๋ณ์๋ก ์ ๋ฌํ๋ ์คํฌ๋ฆฝํธ๋ฅผ ์ ์ํฉ๋๋ค. ์ฟผ๋ฆฌ ์
๋ฐ์ดํธ ๊ฐ๊ฒฉ์ 5๋ถ(300์ด)์ผ๋ก ์ค์ ํฉ๋๋ค.
2) ๊ฐ ์ฐจ๋ ์ํ์ ๋ํ ๋๋จธ์ง ์ธก์ ํญ๋ชฉ์ ๋ง๋ญ๋๋ค. ์ด๋ฌํ ์งํ์ ๊ฐ์ ๊ธฐ๋ณธ ์งํ ํ์ธ ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์์ฑ๋ฉ๋๋ค.
๋ฐ์ดํฐ ์์์ ์ด๋ฆ์ ์ค์ ํ๊ณ "์ธ๋ถ ํ์ธ" ์ ํ์ ๋ํ๋
๋๋ค. "ํค" ํ๋์์๋ Oracle ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ด๋ฆ๊ณผ ์ถ์ ํ๋ ค๋ ๊ฐ์ ์ํ ์ฝ๋๋ฅผ ๋งค๊ฐ๋ณ์๋ก ์ ๋ฌํ๋ ์คํฌ๋ฆฝํธ๋ฅผ ์ ์ํฉ๋๋ค. ๊ฒฐ๊ณผ๊ฐ ํ์ผ์ ๊ธฐ๋ก๋ ์๊ฐ์ ํ๋ณดํ๊ธฐ ์ํด ์ฟผ๋ฆฌ ์
๋ฐ์ดํธ ๊ฐ๊ฒฉ์ ๊ธฐ๋ณธ ์งํ(10์ด)๋ณด๋ค 310์ด ๋ ๊ธธ๊ฒ ์ค์ ํ์ต๋๋ค.
์ธก์ ํญ๋ชฉ์ ์ฌ๋ฐ๋ฅด๊ฒ ์ป์ผ๋ ค๋ฉด ๊ฒ์ฌ๊ฐ ํ์ฑํ๋๋ ์์๊ฐ ์ค์ํฉ๋๋ค. ๋ฐ์ดํฐ ์์ ์ ์ถฉ๋์ ํผํ๊ธฐ ์ํด ๋จผ์ wh_Metrics.sh ์คํฌ๋ฆฝํธ๋ฅผ ํธ์ถํ์ฌ ๊ธฐ๋ณธ ๋ฉํธ๋ฆญ GetCarsByStatus๋ฅผ ํ์ฑํํฉ๋๋ค.
์ค์ โ ๋ ธ๋ โ '๋ ธ๋ ์ด๋ฆ' โ ๋ฐ์ดํฐ ์์ โ ํ์ ํํฐ "์ธ๋ถ ๊ฒ์ฌ". ํ์ํ ํ์ธ ์ฌํญ์ ํ์ํ๊ณ "ํ์ฑํ"๋ฅผ ํด๋ฆญํ์ญ์์ค.
๋ค์์ผ๋ก, ํ ๋ฒ์ ์์
์ผ๋ก ๋๋จธ์ง ์ธก์ ํญ๋ชฉ์ ํ์ฑํํ์ฌ ๋ชจ๋ ํจ๊ป ์ ํํฉ๋๋ค.
์ด์ Zabbix๋ ์ฐฝ๊ณ ๋น์ฆ๋์ค ์งํ๋ฅผ ์์งํ๊ธฐ ์์ํ์ต๋๋ค.
๋ค์ ๊ธฐ์ฌ์์๋ Grafana๋ฅผ ์ฐ๊ฒฐํ๊ณ ๋ค์ํ ๋ฒ์ฃผ์ ์ฌ์ฉ์๋ฅผ ์ํ ์ฐฝ๊ณ ์ด์ ์ ๋ณด ๋์๋ณด๋๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ์ ์์ธํ ์ดํด๋ณด๊ฒ ์ต๋๋ค. Grafana๋ ๋ํ ์ฐฝ๊ณ ์ด์์ ํธ์ฐจ๋ฅผ ๋ชจ๋ํฐ๋งํ๊ณ ํธ์ฐจ์ ๊ฒฝ๊ณ ๋ฐ ๋น๋์ ๋ฐ๋ผ API๋ฅผ ํตํด ์ฐฝ๊ณ ๊ด๋ฆฌ ์๋น์ค ์ผํฐ ์์คํ ์ ์ฌ๊ณ ๋ฅผ ๋ฑ๋กํ๊ฑฐ๋ ์ด๋ฉ์ผ๋ก ๊ด๋ฆฌ์์๊ฒ ์๋ฆผ์ ๋ณด๋ด๋ ๋ฐ์๋ ์ฌ์ฉ๋ฉ๋๋ค.
์ถ์ฒ : habr.com