์ด ๊ธฐ์ฌ์์๋ IBM Storwize ์คํ ๋ฆฌ์ง ์์คํ ๋ฐ CIM/WBEM ํ๋กํ ์ฝ์ ์ง์ํ๋ ๊ธฐํ ์คํ ๋ฆฌ์ง ์์คํ ์ ๋ชจ๋ํฐ๋งํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์กฐ๊ธ ์ค๋ช ํฉ๋๋ค. ์ด๋ฌํ ๋ชจ๋ํฐ๋ง์ ํ์์ฑ์ ๋๊ดํธ์์ ์ ์ธ๋๋ฉฐ ์ด๋ฅผ ๊ณต๋ฆฌ๋ก ๊ฐ์ฃผํฉ๋๋ค. Zabbix๋ฅผ ๋ชจ๋ํฐ๋ง ์์คํ ์ผ๋ก ์ฌ์ฉํฉ๋๋ค.
Zabbix์ ์ต์ ๋ฒ์ ์์ ํ์ฌ๋ ํ
ํ๋ฆฟ์ ํจ์ฌ ๋ ๋ง์ ๊ด์ฌ์ ๊ธฐ์ธ์ด๊ธฐ ์์ํ์ต๋๋ค. ํ
ํ๋ฆฟ์ IPMI๋ฅผ ํตํด ๋ชจ๋ํฐ๋ง ์๋น์ค, DBMS, ์๋ฒ ํ๋์จ์ด(IMM / iBMC)์ ๋ํ๋๊ธฐ ์์ํ์ต๋๋ค. ์คํ ๋ฆฌ์ง ๋ชจ๋ํฐ๋ง์ ์์ง ๊ธฐ๋ณธ ์ ๊ณต๋๋ฏ๋ก ์คํ ๋ฆฌ์ง ๊ตฌ์ฑ ์์์ ์ํ ๋ฐ ์ฑ๋ฅ์ ๋ํ ์ ๋ณด๋ฅผ Zabbix์ ํตํฉํ๋ ค๋ฉด ์ฌ์ฉ์ ์ ์ ํ
ํ๋ฆฟ์ ์ฌ์ฉํด์ผ ํฉ๋๋ค. ์ด ํ
ํ๋ฆฟ ์ค ํ๋๋ฅผ ์๋ ค๋๋ฆฝ๋๋ค.
์ฒซ์งธ, ์ฝ๊ฐ์ ์ด๋ก .
IBM Storwize ์คํ ๋ฆฌ์ง์ ์ํ ๋ฐ ํต๊ณ์ ์ก์ธ์คํ๋ ค๋ฉด ๋ค์์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- CIM/WBEM ํ๋กํ ์ฝ;
RESTful API (์ํํธ์จ์ด ๋ฒ์ 8.1.3๋ถํฐ โโIBM Storwize์์ ์ง์๋จ)- SNMP ํธ๋ฉ(์ ํ๋ ํธ๋ฉ ์ธํธ, ํต๊ณ ์์)
- SSH ์ฐ๊ฒฐ ํ ์๊ฒฉ
์ฌ์ ๋ก์ด bash ์คํฌ๋ฆฝํ ์ ์ ํฉ .
๊ด์ฌ ์๋ ์ฌ์ฉ์๋ ๊ณต๊ธ์
์ฒด ์ค๋ช
์์ ๊ด๋ จ ์น์
๊ณผ ๋ฌธ์์์ ๋ค์ํ ๋ชจ๋ํฐ๋ง ๋ฐฉ๋ฒ์ ๋ํด ์์ธํ ์์๋ณผ ์ ์์ต๋๋ค.
๋ค์ํ ์คํ ๋ฆฌ์ง ์์คํ
์ฉ ์ํํธ์จ์ด๋ฅผ ํฌ๊ฒ ๋ณ๊ฒฝํ์ง ์๊ณ ๋ ์คํ ๋ฆฌ์ง ์์คํ
์ ๋งค๊ฐ๋ณ์๋ฅผ ์ป์ ์ ์๋ CIM/WBEM ํ๋กํ ์ฝ์ ์ฌ์ฉํ ๊ฒ์
๋๋ค. CIM/WBEM ํ๋กํ ์ฝ์ ๋ค์์ ๋ฐ๋ผ ์๋ํฉ๋๋ค.
WBEM์ HTTP ํ๋กํ ์ฝ ์์์ ์๋ํฉ๋๋ค. WBEM์ ํตํด ์คํ ๋ฆฌ์ง ์์คํ ๋ฟ๋ง ์๋๋ผ HBA, ์ค์์น ๋ฐ ํ ์ดํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์๋ ์์ ํ ์ ์์ต๋๋ค.
์ ๋ฐ๋ฅด๋ฉด
CIM์ UML(Unified Modeling Language)์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ๊ฐ์ฒด ์งํฅ ๋ชจ๋ธ์
๋๋ค.
๊ด๋ฆฌ ํญ๋ชฉ์ ๊ด๋ฆฌ ๋ฐ์ดํฐ ๋ฐ ๊ธฐ๋ฅ์ ๋ํ๋ด๋ ์์ฑ ๋ฐ ๋ฉ์๋๊ฐ ์๋ CIM ํด๋์ค๋ก ์ ์๋ฉ๋๋ค.
์ ๋ฐ๋ฅด๋ฉด
WBEM ์๋ฒ์ ์ฐ๊ฒฐํ๋ ค๋ฉด ํด๋์ค ์์ฑ์๋ฅผ ์ฌ์ฉํ์ญ์์ค.
conn = pywbem.WBEMConnection(server_uri, (self.login, self.password),
namespace, no_verification=True)
์ด๊ฒ์ ๊ฐ์ ์ฐ๊ฒฐ์ ๋๋ค. CIM-XML/WBEM์ HTTP๋ฅผ ํตํด ์คํ๋๊ธฐ ๋๋ฌธ์ ์ค์ ์ฐ๊ฒฐ์ WBEMConnection ํด๋์ค์ ์ธ์คํด์ค์์ ๋ฉ์๋๊ฐ ํธ์ถ๋ ๋ ๋ฐ์ํฉ๋๋ค. IBM System Storage SAN Volume Controller ๋ฐ Storwize V7000 ๋ชจ๋ฒ ์ฌ๋ก ๋ฐ ์ฑ๋ฅ ์ง์นจ(์์ C-8, 412ํ์ด์ง)์ ๋ฐ๋ผ "root/ibm"์ IBM Storwize ์คํ ๋ฆฌ์ง์ฉ CIM ๋ค์์คํ์ด์ค๋ก ์ฌ์ฉํฉ๋๋ค.
CIM-XML/WBEM ํ๋กํ ์ฝ์ ๋ํ ํต๊ณ๋ฅผ ์์งํ๋ ค๋ฉด ์ฌ์ฉ์๋ฅผ ์ ์ ํ ๋ณด์ ๊ทธ๋ฃน์ ํฌํจ์์ผ์ผ ํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด WBEM ์ฟผ๋ฆฌ๋ฅผ ์คํํ ๋ ํด๋์ค ์ธ์คํด์ค ์์ฑ์ ์ถ๋ ฅ์ด ๋น์ด ์๊ฒ ๋ฉ๋๋ค..
์คํ ๋ฆฌ์ง ํต๊ณ์ ์ก์ธ์คํ๋ ค๋ฉด ์์ฑ์๊ฐ ํธ์ถ๋๋ ์ฌ์ฉ์
SSH๋ฅผ ํตํด ์คํ ๋ฆฌ์ง ์์คํ ์ ์ฐ๊ฒฐํ๊ณ ๊ทธ๋ฃน ๋ฒํธ๋ฅผ ํ์ธํฉ๋๋ค.
> lsusergrp
id name role remote
0 SecurityAdmin SecurityAdmin no
1 Administrator Administrator no
2 CopyOperator CopyOperator no
3 Service Service no
4 Monitor Monitor no
5 RestrictedAdmin RestrictedAdmin no
์ํ๋ ๊ทธ๋ฃน์ zabbix ์ฌ์ฉ์๋ฅผ ์ถ๊ฐํฉ๋๋ค.
> chuser -usergrp 5 zabbix
๋ํ IBM System Storage SAN Volume Controller ๋ฐ Storwize V7000 ๋ชจ๋ฒ ์ฌ๋ก ๋ฐ ์ฑ๋ฅ ์ง์นจ(415ํ์ด์ง)์ ๋ฐ๋ผ ์คํ ๋ฆฌ์ง ์์คํ ์์ ํต๊ณ ์์ง์ ํ์ฑํํด์ผ ํฉ๋๋ค. ๋ฐ๋ผ์ ๋งค๋ถ ํต๊ณ๋ฅผ ์์งํ๋ ค๋ฉด ๋ค์์ ์ํํ์ญ์์ค.
> startstats -interval 1
์ฐ๋ฆฌ๋ ๋ค์์ ํ์ธํฉ๋๋ค.
> lssystem | grep statistics
statistics_status on
statistics_frequency 1
๊ธฐ์กด ์คํ ๋ฆฌ์ง ํด๋์ค๋ฅผ ๋ชจ๋ ๊ฐ์ ธ์ค๋ ค๋ฉด EnumerateClassNames() ๋ฉ์๋๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
์ :
classnames = conn.EnumerateClassNames(namespace='root/ibm', DeepInheritance=True)
for classname in classnames:
print (classname)
์คํ ๋ฆฌ์ง ์์คํ
๋งค๊ฐ ๋ณ์์ ๊ฐ์ ์ป์ผ๋ ค๋ฉด ๋ฐฉ๋ฒ
์ :
instances = conn.EnumerateInstances(classname,
namespace=nd_parameters['name_space'])
for instance in instances:
for prop_name, prop_value in instance.items():
print(' %s: %r' % (prop_name, prop_value))
IBMTSSVC_StorageVolume๊ณผ ๊ฐ์ด ๋ง์ ์์ ์ธ์คํด์ค๋ฅผ ํฌํจํ๋ ์ผ๋ถ ํด๋์ค์ ๊ฒฝ์ฐ ๋ชจ๋ ์ธ์คํด์ค์ ์ ์ฒด ์ฟผ๋ฆฌ๊ฐ ๋งค์ฐ ๋๋ฆด ์ ์์ต๋๋ค. ์คํ ๋ฆฌ์ง ์์คํ
์์ ์ค๋นํ๊ณ ๋คํธ์ํฌ๋ฅผ ํตํด ์ ์กํ๊ณ ์คํฌ๋ฆฝํธ๋ก ์ฒ๋ฆฌํด์ผ ํ๋ ๋๋์ ๋ฐ์ดํฐ๋ฅผ ์์ฑํ ์ ์์ต๋๋ค. ๊ทธ๋ฐ ๊ฒฝ์ฐ์๋ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.
request = 'SELECT Name FROM IBMTSSVC_StorageVolumeStatistics'
objects_perfs_cim = wbem_connection.ExecQuery('DMTF:CQL', request)
์ ์ฅ์ ๊ฐ์ฒด์ ๋งค๊ฐ ๋ณ์๋ฅผ ๊ฐ์ ธ์ค๋ ๋ฐ ํ์ํ ํด๋์ค๋ฅผ ๊ฒฐ์ ํ๊ธฐ ์ํด ์๋ฅผ ๋ค์ด ์ค๋ช
์๋ฅผ ์ฝ์ต๋๋ค.
๋ฐ๋ผ์ ์ค์ ๋์คํฌ(๋์คํฌ ๋๋ผ์ด๋ธ)์ ๋งค๊ฐ๋ณ์(์ฑ๋ฅ ์นด์ดํฐ๊ฐ ์๋)๋ฅผ ๊ฐ์ ธ์ค๋ ค๋ฉด ํด๋์ค IBMTSSVC_DiskDrive๋ฅผ ์ฟผ๋ฆฌํ์ฌ ๋ณผ๋ฅจ ๋งค๊ฐ๋ณ์๋ฅผ ๊ฐ์ ธ์ต๋๋ค.
์ฑ๋ฅ์ ๋ํด ์ฝ์ ์ ์์ต๋๋ค.
๋ณผ๋ฅจ์ ๋ํ ์คํ ๋ฆฌ์ง ํต๊ณ๋ฅผ ์ป์ผ๋ ค๋ฉด IBMTSSVC_StorageVolumeStatistics๋ฅผ ClassName ๋งค๊ฐ๋ณ์์ ๊ฐ์ผ๋ก ์ง์ ํด์ผ ํฉ๋๋ค. ํต๊ณ ์์ง์ ํ์ํ IBMTSSVC_StorageVolumeStatistics ํด๋์ค์ ํน์ฑ์ ๋ค์์์ ์ฐพ์ ์ ์์ต๋๋ค.
๋ํ ์ฑ๋ฅ ๋ถ์์ ์ํด IBMTSSVC_BackendVolumeStatistics, IBMTSSVC_DiskDriveStatistics, IBMTSSVC_NodeStatistics ํด๋์ค๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋ชจ๋ํฐ๋ง ์์คํ
์ ๋ฐ์ดํฐ๋ฅผ ์ฐ๊ธฐ ์ํด ๋ฉ์ปค๋์ฆ์ ์ฌ์ฉํฉ๋๋ค.
ํ ํ๋ฆฟ์ Zabbix ์๋ฒ์ ์ ๋ก๋ํ๊ณ ๋ชจ๋ํฐ๋ง ์๋ฒ๊ฐ WEB ํ๋กํ ์ฝ(TCP/5989)์ ํตํด ์ ์ฅ์์ ์ก์ธ์คํ ์ ์๋์ง ํ์ธํ๊ณ ๋ชจ๋ํฐ๋ง ์๋ฒ์ ๊ตฌ์ฑ ํ์ผ, ํ์ง ๋ฐ ๋ชจ๋ํฐ๋ง ์คํฌ๋ฆฝํธ๋ฅผ ๋ฐฐ์นํฉ๋๋ค. ๋ค์์ผ๋ก ์ค์ผ์ค๋ฌ์ ์คํฌ๋ฆฝํธ๋ฅผ ์ถ๊ฐํฉ๋๋ค. ๊ทธ ๊ฒฐ๊ณผ ์คํ ๋ฆฌ์ง ๊ฐ์ฒด(์ด๋ ์ด, ๋ฌผ๋ฆฌ์ ๋์คํฌ ๋ฐ ๊ฐ์ ๋์คํฌ, ์ธํด๋ก์ ๋ฑ)๋ฅผ ๊ฒ์ํ๊ณ ์ด๋ฅผ Zabbix ๊ฒ์์ผ๋ก ์ ๋ฌํ๊ณ ํ๋ผ๋ฏธํฐ ์ํ๋ฅผ ์ฝ๊ณ ์ฑ๋ฅ ํต๊ณ(์ฑ๋ฅ ์นด์ดํฐ)๋ฅผ ์ฝ๊ณ ์ด ๋ชจ๋ ๊ฒ์ ํด๋นํ๋ ์ฐ๋ฆฌ ํ ํ๋ฆฟ์ Zabbix ํญ๋ชฉ.
Zabbix ํ
ํ๋ฆฟ, Python ์คํฌ๋ฆฝํธ, ์คํ ๋ฆฌ์ง ํด๋์ค์ ๊ตฌ์กฐ ๋ฐ ํด๋น ์์ฑ, ๊ตฌ์ฑ ํ์ผ์ ์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ถ์ฒ : habr.com