Ð ÑÑаÑÑе бÑÐ´ÐµÑ ÑаÑÑмоÑÑена возможноÑÑÑ Ð¼Ð¾Ð½Ð¸ÑоÑинга база даннÑÑ Ð¿Ð¾ ÑÑедÑÑвам вÑÑÑоенной в Zabbix поддеÑжке ODBC, c иÑполÑзованием авÑообнаÑÑÐ¶ÐµÐ½Ð¸Ñ Ð¾Ð±ÑекÑов.
ÐÐ»Ñ Ð½Ð°Ñала ÑаÑÑмоÑÑим доÑÑÑпнÑе Ð´Ð»Ñ Zabbix меÑÐ¾Ð´Ñ Ð¼Ð¾Ð½Ð¸ÑоÑинга ÐÐ, коÑоÑÑе иÑполÑзовалиÑÑ Ð´Ð¾ поддеÑжки ODBC.
Так как ÑÑаÑÑÑ Ð¿Ñо мониÑоÑинг Oracle, Ñо и бÑдем ÑмоÑÑеÑÑ Ð² ÑÑом ÑазÑезе.
1. ÐÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ ÑкÑипÑа zabora
РпÑинÑипе ÑпкÑÐ¸Ð¿Ñ Ð²Ñем Ñ Ð¾ÑоÑ, но главное, ÑÑо Ð¼ÐµÐ½Ñ Ð½Ðµ ÑÑÑÑаивало: ÑкÑÐ¸Ð¿Ñ Ð»ÐµÐ¶Ð¸Ñ Ð½Ð° каждой маÑине Ñ ÐÐ, и пÑи добавление запÑоÑа пÑÐ¸Ñ Ð¾Ð´Ð¸Ð»Ð¾ÑÑ Ð¸Ð´Ñи на ÑÑÑ Ð¼Ð°ÑÐ¸Ð½Ñ Ð¸ ÑедакÑиÑоваÑÑ ÐºÐ¾Ð½Ñиг.
ÐоддеÑÐ¶Ð¸Ð²Ð°ÐµÑ Ð¿Ð°ÑамеÑÑÑ Ð·Ð°Ð¿ÑоÑов, Ñо еÑÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ пеÑедаваÑÑ Ð¿Ð°ÑамеÑÑ Ð² клÑÑ Ð¸ на оÑнове его делаÑÑ Ð·Ð°Ð¿ÑÐ¾Ñ Ðº ÐÐ.
То еÑÑÑ Ð¾Ð´Ð¸Ð½ и Ñо же запÑÐ¾Ñ Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¸ÑполÑзован Ð´Ð»Ñ ÑбоÑа меÑÑик ÑазнÑÑ Ð¾Ð±ÑекÑов.
2. Orabbix или DBforBIX
Тоже Ñ Ð¾ÑоÑий пÑодÑкÑ, ÑвлÑеÑÑÑ Ð´ÐµÐ¼Ð¾Ð½Ð¾Ð¼ на java, ÑÐ¾Ð·Ð´Ð°ÐµÑ Ð½ÐµÑколÑко Ñоединений и поддеÑÐ¶Ð¸Ð²Ð°ÐµÑ Ð°Ð²ÑомаÑиÑеÑкое добавление новÑÑ Ð·Ð°Ð¿ÑоÑов в конÑиг без пеÑезагÑÑзки. РабоÑÐ°ÐµÑ ÐºÐ°Ðº Zabbix trapper, Ñо еÑÑÑ Ñам Ñ Ð¾Ð¿Ñеделенной пеÑиодиÑноÑÑÑÑ Ð¿Ð¾ÑÑÐ»Ð°ÐµÑ Ð´Ð°Ð½Ð½Ñе в Zabbix ÑеÑвеÑ.
ÐедоÑÑаÑки:
â не поддеÑÐ¶Ð¸Ð²Ð°ÐµÑ Ð¿Ð°ÑамеÑÑÑ, Ñо еÑÑÑ Ð½Ð° каждÑÑ Ð¼ÐµÑÑÐ¸ÐºÑ ÑоздаеÑÑÑ Ð¾ÑделÑнÑй запÑоÑ.
ÐÑедÑÑавÑÑе Ñ Ð²Ð°Ñ 10 tablespace'ов и вам нÑжно ÑнимаÑÑ Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ 4 паÑамеÑÑа â полÑÑаеÑÑÑ 40 запÑоÑов в Ñайле. ÐнÑеÑвал запÑоÑа полÑÑение меÑÑики, Ñак же вÑÑÑавлÑеÑÑÑ Ð² конÑиге, ÑÑо не оÑÐµÐ½Ñ Ñдобно.
ÐопÑобовав вÑе ÑÑи ÑеÑÐµÐ½Ð¸Ñ ÑеÑил иÑполÑзоваÑÑ Ð¿Ð¾Ð´Ð´ÐµÑÐ¶ÐºÑ ODBC в Zabbix, и Ð²Ð¾Ñ Ð¿Ð¾ÑемÑ:
- запÑÐ¾Ñ Ðº ÐÐ â ÑÑандаÑÑнÑй клÑÑ Zabbix, из ÑÑого ÑледÑеÑ, ÑÑо Ð¼Ñ Ð½Ð°ÑÑÑаиваем Ñакие паÑамеÑÑÑ ÐºÐ°Ðº ÑаÑÑоÑа опÑоÑа в Ñамом инÑеÑÑейÑе
- ÑедакÑиÑование запÑоÑов в инÑеÑÑейÑе Zabbix
- позволÑÐµÑ Ð¸ÑполÑзоваÑÑ Ð¼Ð°ÐºÑоÑÑ
- Ñамое главное позволÑÐµÑ Ð°Ð²ÑомаÑизиÑоваÑÑ Ð¿ÑоÑеÑÑ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð½Ð¾Ð²ÑÑ Ð¾Ð±ÑекÑов на мониÑоÑинг
СнаÑала опиÑÑ, ÑÑо имееÑÑÑ Ð² Ñ Ð¾Ð·ÑйÑÑве:
1. 6 баз даннÑÑ Oracle â 1 ÐÐ â 1 ÑеÑÐ²ÐµÑ + 1 ÑезеÑвнÑй ÑеÑÐ²ÐµÑ Ð¿Ð¾Ð´ ÐРиÑого: полÑÑаеÑÑÑ 12 ÑеÑвеÑов.
2. СеÑвеÑа Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ ÐРобÑÐµÐ´Ð¸Ð½ÐµÐ½Ñ Ð² клаÑÑÐµÑ â иÑого 6 клаÑÑеÑов
3. Ðа каждом ÑеÑвеÑа ÑÑÑановлен Zabbix agent Ð´Ð»Ñ AIX
4. Ðа каждом ÑеÑвеÑе по ÑкÑипÑÑ zabora
ÐонÑигÑÑаÑÐ¸Ñ Zabbix мониÑоÑинга:
- Zabbix ÑеÑÐ²ÐµÑ Ð½Ð° CentOS 6.5 + TokuDB â 20 000 ÑлеменÑов â 380 nps (новÑÑ Ð·Ð½Ð°Ñений в ÑекÑндÑ)
- СпеÑиалÑно Ð´Ð»Ñ Ð¼Ð¾Ð½Ð¸ÑоÑинга ÐÐ, бÑл поднÑÑ Zabbix Proxy, Ñак как запÑоÑÑ Ð¼Ð¾Ð³ÑÑ Ð²ÑполнÑÑÑÑ Ð´Ð¾ÑÑаÑоÑно долго, Ñо не Ñ Ð¾ÑелоÑÑ Ð±Ñ Ð¸Ð·-Ð½Ð¸Ñ Ð¿Ð¾Ð´Ð²ÐµÑиваÑÑ Ð¿ÑоÑеÑÑÑ ÑбоÑа даннÑÑ Ð¾Ñновного Zabbix'a â Ñоже CentOS 6.5 + TokuDB
Ð ÑÑой ÑÑаÑÑе Ñ Ð½Ðµ бÑÐ´Ñ ÐºÐ°ÑаÑÑÑÑ Ð½Ð°ÑÑÑойки TokuDB, Ñак как планиÑÑÑ ÐµÑе Ð¾Ð´Ð½Ñ ÑÑаÑÑÑ Ð¿Ð¾ÑÐµÐ¼Ñ Ð¼Ñ Ð¿ÐµÑеÑли Ñ InnoDB на TokuDB, и ÑÑо нам ÑÑо дало.
УÑÑановка Oracle Instant Client
СнаÑала Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ ÑÑÑановиÑÑ Oracle Instant Client на маÑÐ¸Ð½Ñ Ñ Zabbix Proxy:
У Ð½Ð°Ñ Ð¸ÑполÑзÑеÑÑÑ Oracle 11g, поÑÑÐ¾Ð¼Ñ ÑкаÑиваем RMP пакеÑÑ ÑооÑвеÑÑÑвÑÑÑей веÑÑии Ñ ÑайÑа Oracle.
Ðам Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ñ:
- oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm â оÑновнÑе библиоÑеки
- oracle-instantclient11.2-jdbc-11.2.0.4.0-1.x86_64.rpm â дÑайвеÑа Ð´Ð»Ñ java, Ð´Ð»Ñ Ð½Ð°Ñей задаÑи не нÑжнÑ, но в Ñ Ð¾Ð·ÑйÑÑве пÑигодиÑÑÑÑ :)
- oracle-instantclient11.2-sqlplus-11.2.0.4.0-1.x86_64.rpm â ÐºÐ»Ð¸ÐµÐ½Ñ SQLplus
- oracle-instantclient11.2-odbc-11.2.0.4.0-1.x86_64.rpm â библиоÑека Ð´Ð»Ñ ÑабоÑÑ ÑеÑез ODBC
- можно еÑе до кÑÑи: oracle-instantclient11.2-devel-11.2.0.4.0-1.x86_64.rpm :)
в Ñой папке в коÑоÑÑÑ ÑкаÑали вÑе ÑÑи ÑÐ°Ð¹Ð»Ñ Ð´ÐµÐ»Ð°ÐµÐ¼:
# rpm -i oracle-*.rpm
ÐаÑÑÑойка SQLplus Ð´Ð»Ñ Ð´Ð¾ÑÑÑпа к ÐÐ Oracle.
ÐÐ»Ñ Ñого ÑÑÐ¾Ð±Ñ ÐºÐ»Ð¸ÐµÐ½Ñ ÑабоÑал, Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ в паÑамеÑÑÑ Ð¾ÐºÑÑжение вÑÑÑавиÑÑ Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ñе пеÑеменнÑе, Ð´Ð»Ñ Ð½Ð°Ñала вÑÑÑавим Ð¸Ñ Ð² Ñвоем пÑоÑиле, пÑопиÑав в Ñайл
$HOME/.bash_profile
:ORACLE_HOME=/usr/lib/oracle/11.2/client64
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib64:$LD_LIBRARY_PATH
TNS_ADMIN=$ORACLE_HOME/network/admin>
PATH=$PATH:$ORACLE_HOME/bin:$HOME/bin
export ORACLE_HOME
export LD_LIBRARY_PATH
export TNS_ADMIN
export PATH
ÐеÑелогиниваемÑÑ Ð¸ ÑмоÑÑим еÑÑÑ Ð»Ð¸ наÑи пеÑеменнÑе в
# env
ÐбÑаÑим внимание на пеÑеменнÑÑ
TNS_ADMIN=$ORACLE_HOME/network/admin
ÐÑÐ¾Ñ Ð¿ÑÑÑ Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ ÑоздаÑÑ, ÑÑда Ð¼Ñ Ð¿Ð¾Ð»Ð¾Ð¶Ð¸Ð¼ Ñайл tnsnames.ora коÑоÑÑй иÑполÑзÑеÑÑÑ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñеками клиенÑа Ð´Ð»Ñ Ð¿Ð¾Ð´ÐºÐ»ÑÑÐµÐ½Ð¸Ñ Ðº ÐÐ.
Создадим подклÑÑение к ÐÐ Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ TESTDB напÑимеÑ.
#cat $ORACLE_HOME/network/admin/tnsnames.ora
TESTDB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = oratestdb)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = testdb)
)
)
ÐÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ подÑÑавиÑÑ Ð½ÑжнÑе знаÑÐµÐ½Ð¸Ñ Ð² HOST и SERVICE_NAME.
HOST â можно пÑопиÑÑваÑÑ IP адÑÐµÑ Ð¸Ð»Ð¸ DNS Ð¸Ð¼Ñ (пÑовеÑÑÑе ÑолÑко, ÑÑо оно ÑеÑолвиÑÑÑ Ð² IP)
ÐÑовеÑим наÑÑÑÐ¾Ð¹ÐºÑ ÐºÐ»Ð¸ÐµÐ½Ñа, ÑолÑко пÑедваÑиÑелÑно ÑоздайÑе ÑÑеÑнÑÑ Ð·Ð°Ð¿Ð¸ÑÑ zabbix в Oracle.
# sqlplus zabbix/zabbix@TESTDB
SQL*Plus: Release 11.2.0.4.0 Production on Sat May 24 10:47:09 2014
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Connected to:</code>
Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL>
Ðидим, ÑÑо ÐºÐ»Ð¸ÐµÐ½Ñ Ð²Ñдал пÑиглаÑение, знаÑÐ¸Ñ Ñоединение пÑоÑло ÑÑпеÑно, и ÑовÑем ÑÑÐ¾Ð±Ñ Ð±ÑÑÑ ÑвеÑеннÑми Ñделаем пÑоÑÑенÑкий запÑоÑ:
SQL> select banner from v$version where rownum=1;
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production
SQL>
ÐонÑигÑÑаÑÐ¸Ñ ODBC.
ÐÑиÑиалÑнÑе пакеÑÑ Zabbix Server и Zabbix Proxy в СentoOS ÑкомпилиÑÐ¾Ð²Ð°Ð½Ñ Ñ Ð¿Ð¾Ð´Ð´ÐµÑжкой unixODBC, поÑÑÐ¾Ð¼Ñ Ð¿Ð¾Ñле Ð¸Ñ ÑÑÑановки Ñ Ð²Ð°Ñ Ð´Ð¾Ð»Ð¶ÐµÐ½ бÑÑÑ ÑÑÑановленнÑй Ð¿Ð°ÐºÐµÑ unixODBC, пÑовеÑÑем:
# yum info *ODBC
ÐÑвод должен ÑодеÑжаÑÑ ÑледÑÑÑие пакеÑÑ:
unixODBC
и oracle-instantclient11.2-odbc
.ÐÑавим ÑайлÑ:
# cat /etc/odbcinst.ini
[OracleDriver]
Description=Oracle ODBC driver for Oracle 11g
Driver=/usr/lib/oracle/11.2/client64/lib/libsqora.so.11.1
Ð ÑÑÐ°Ð·Ñ Ð´ÐµÐ»Ð°ÐµÐ¼ ÑакÑÑ Ð¿ÑовеÑкÑ:
# ldd /usr/lib/oracle/11.2/client64/lib/libsqora.so.11.1
ldd: warning: you do not have execution permission for `/usr/lib/oracle/11.2/client64/lib/libsqora.so.11.1`
linux-vdso.so.1 => (0x00007fff1a58f000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f89d6d4d000)
libm.so.6 => /lib64/libm.so.6 (0x00007f89d6ac8000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f89d68ab000)
libnsl.so.1 => /lib64/libnsl.so.1 (0x00007f89d6692000)
libclntsh.so.11.1 => /usr/lib/oracle/11.2/client64/lib/libclntsh.so.11.1 (0x00007f89d3d22000)
libodbcinst.so.1 => /lib64/libodbcinst.so.1 (0x00007f89d3b11000)
libc.so.6 => /lib64/libc.so.6 (0x00007f89d377d000)
/lib64/ld-linux-x86-64.so.2 (0x00007f89d711c000)
libnnz11.so => /usr/lib/oracle/11.2/client64/lib/libnnz11.so (0x00007f89d33af000)
libaio.so.1 => /lib64/libaio.so.1 (0x00007f89d31ae000)
libltdl.so.7 => /usr/lib64/libltdl.so.7 (0x00007f89d2fa5000)
C болÑÑой долей веÑоÑÑноÑÑÑÑ, Ð²Ñ Ð¿Ð¾Ð»ÑÑиÑе
libodbcinst.so.1 => not found
, поÑÑÐ¾Ð¼Ñ Ð½Ñжно ÑделаÑÑ Ñим-линк:# ls -lah /lib64 | grep odbc
lrwxrwxrwx. 1 root root 31 May 18 00:45 libodbcinst.so.1 -> /usr/lib64/libodbcinst.so.2.0.0
lrwxrwxrwx. 1 root root 16 May 20 11:41 libodbcinst.so.2 -> libodbcinst.so.1
ÐалÑÑе ÑедакÑиÑÑем Ñайл:
# cat /etc/odbc.ini
[ORA_TESTDB]
Driver= OracleDriver
DSN= TESTDB
ServerName= TESTDB
UserID= zabbix
Password= zabbix
ÐоÑле ÑÑого Ñ Ð½Ð°Ñ Ð´Ð¾Ð»Ð¶Ð½Ð¾ полÑÑиÑÑÑ Ð¿Ð¾Ð´ÐºÐ»ÑÑиÑÑÑ Ðº ÐÐ Oracle ÑеÑез ÐºÐ»Ð¸ÐµÐ½Ñ ODBC (вÑегда иÑполÑзÑйÑе паÑамеÑÑ -v, еÑли бÑÐ´ÐµÑ Ð¾Ñибка подклÑÑениÑ, ÑÐºÐ°Ð¶ÐµÑ Ð´ÐµÑалÑно в Ñем пÑоблема):
# isql -v ORA_TESTDB
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit
| |
+---------------------------------------+
SQL>
Так же Ð´Ð»Ñ Ð¾ÑиÑÑки ÑовеÑÑи, ÑÑо Ñ Ð½Ð°Ñ Ð²Ñе ÑабоÑаеÑ, делаем запÑоÑ:
SQL> select banner from v$version where rownum=1;
+---------------------------------------------------------------------------------+
| BANNER |
+---------------------------------------------------------------------------------+
| Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production |
+---------------------------------------------------------------------------------+
SQLRowCount returns -1
1 rows fetched
SQL>
ÐоздÑавлÑÑ, ÐÑ Ð½Ð°ÑÑÑоили ODBC.
ТепеÑÑ Ð½Ð°Ð¼ Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ добиÑÑÑÑ, ÑÑÐ¾Ð±Ñ Zabbix Proxy Ñак же мог делаÑÑ Ð·Ð°Ð¿ÑоÑÑ ÑеÑез ODBC.
ÐÐ»Ñ ÑÑого Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾, ÑÑÐ¾Ð±Ñ Ð² окÑÑжение пÑоÑеÑÑа zabbix_proxy бÑли доÑÑÑÐ¿Ð½Ñ Ð¿ÐµÑеменнÑе, ÑказаннÑе вÑÑе, Ð´Ð»Ñ ÑÑо добавим в Ñайл:
# cat /etc/init.d/functions
# Set up a default search path.
PATH="/sbin:/usr/sbin:/bin:/usr/bin"
ORACLE_HOME=/usr/lib/oracle/11.2/client64
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib64:$LD_LIBRARY_PATH
TNS_ADMIN=$ORACLE_HOME/network/admin</code>
PATH=$PATH:$ORACLE_HOME/bin:$HOME/bin</code>
export ORACLE_HOME
export LD_LIBRARY_PATH
export TNS_ADMIN
export PATH
ÐоÑле ÑÑого обÑзаÑелÑно пеÑезапÑÑкаем zabbix_proxy:
# service zabbix-proxy restart
ТепеÑÑ Ð¼Ñ ÑÑÐ°Ð·Ñ Ð¿ÐµÑейдем к наÑÑÑойке пÑавил авÑообнаÑÑÐ¶ÐµÐ½Ð¸Ñ Ð² ÑеÑминологии Zabbix â ÑÑо low level discovery rule.
ЧÑо Ñакое LLD?
РпÑинÑипе ÑÑо лÑбой ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð² Zabbix коÑоÑÑй Ð¼Ð¾Ð¶ÐµÑ Ð²ÐµÑнÑÑÑ Ð´Ð°Ð½Ð½Ñе в JSON ÑоÑмаÑе.
Так вÑÑÑоеннÑй мониÑоÑинг баз даннÑÑ Ð² Zabbix вÑегда возвÑаÑÐ°ÐµÑ ÑолÑко 1 ÐºÐ¾Ð»Ð¾Ð½ÐºÑ Ð¸ 1 ÑÑÑокÑ. ÐоÑемÑ-Ñо в команде Zabbix до Ñиз Ð¿Ð¾Ñ Ð½Ðµ напиÑÑÑ Ð´Ð»Ñ ÐРгенеÑаÑÐ¾Ñ LLD.
ÐÐ¾Ð¼Ñ Ð½Ñжна ÑÑа ÑиÑа, пÑоÑÑба пÑоголоÑоваÑÑ.
ÐÑидеÑÑÑ Ð½Ð°Ð¿Ð¸ÑаÑÑ ÑкÑÐ¸Ð¿Ñ ÐºÐ¾ÑоÑÑй бÑÐ´ÐµÑ Ð²ÑдаваÑÑ Ð½Ð°Ð¼ ÑпиÑок обÑекÑов в JSON ÑоÑмаÑе.
Шаблон и ÑкÑÐ¸Ð¿Ñ Ð¼Ð¾Ð¶Ð½Ð¾ взÑÑÑ Ð½Ð° GitHub
СкÑÐ¸Ð¿Ñ Ð½Ð°Ð¿Ð¸Ñан на php, поÑÑÐ¾Ð¼Ñ Ð»ÑбиÑелÑм bash пÑоÑÑ Ð¾ÑвеÑнÑÑÑÑÑ Ð² ÑÑоÑÐ¾Ð½Ñ :)
ÐомменÑиÑоваÑÑ Ñам ÑкÑÐ¸Ð¿Ñ Ð½Ðµ бÑдÑ, дÑÐ¼Ð°Ñ Ð¿Ð¾ ÐºÐ¾Ð´Ñ Ð²Ñе понÑÑно, ÑÐºÐ°Ð¶Ñ ÑолÑко, ÑÑо его нÑжно положиÑÑ Ð² Ð¿Ð°Ð¿ÐºÑ ÐºÐ¾ÑоÑÐ°Ñ Ð·Ð°Ð´Ð°Ð½Ð° в конÑиге zabbix_proxy.conf (или zabbix_server.conf):
ExternalScripts=/usr/lib/zabbix/externalscripts
СкÑÐ¸Ð¿Ñ oracle.odbc.discovery
#!/usr/bin/php
<?php
if(!isset($argv[1]) && !isset($argv[2])) exit("ZBX_NOTSUPPORTED");
$connected_dsn = odbc_connect($argv[1],"","");
if(!$connected_dsn) exit('SQL connection erorr | ZBX_NOTSUPPORTED');
switch ($argv[2]) {
case "tablespaces":
$result=odbc_exec($connected_dsn,"SELECT tablespace_name FROM dba_tablespaces;");
$tablespaces = array("data"=>array());
while(odbc_fetch_row($result)){
$tablespaces['data'][]=array('{#TBSNAME}'=>odbc_result($result,1));
}
echo json_encode($tablespaces);
break;
case "jobs":
$result=odbc_exec($connected_dsn,"SELECT job_name, owner FROM dba_scheduler_jobs WHERE state != 'DISABLED';");
$jobs = array("data"=>array());
while(odbc_fetch_row($result)){
$jobs['data'][]=array(
'{#JOBNAME}'=>odbc_result($result,1),
'{#JOBOWNER}'=>odbc_result($result,2));
}
echo json_encode($jobs);
break;
}
exit();
?>
СкÑипÑÑ Ð¿ÐµÑедаÑÑÑÑ Ð´Ð²Ð° паÑамеÑÑа:
1. DSN â коÑоÑÑй Ð²Ñ Ñказали в Ñайле /etc/odbc.ini в квадÑаÑнÑÑ ÑÐºÐ¾Ð±ÐºÐ°Ñ , в ÑлÑÑае пÑимеÑа ÑÑо ORA_TESTDB
2. Ñип обÑекÑов, ÑпиÑок коÑоÑÑÑ Ð½Ñжно веÑнÑÑÑ: tablespaces или jobs
Ð ÑлÑÑае jobs, ÑкÑÐ¸Ð¿Ñ Ð²ÐµÑÐ½ÐµÑ Ñак же и {#JOBOWNER}, Ñо еÑÑÑ Ð²Ð»Ð°Ð´ÐµÐ»ÑÑа job'a.
ÐобавÑÑе пÑава на вÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð½Ð° ÑкÑÐ¸Ð¿Ñ Ð¸ попÑобÑйÑе его запÑÑÑиÑÑ:
# /usr/lib/zabbix/externalscripts/oracle.odbc.discovery ORA_TESTDB tablespaces
, ÑкÑÐ¸Ð¿Ñ Ð²ÐµÑÐ½ÐµÑ Ð¿ÑимеÑно Ð²Ð¾Ñ Ñакой маÑÑив:{
"data": [
{
"{#TBSNAME}": "SYSTEM"
},
{
"{#TBSNAME}": "SYSAUX"
},
{
"{#TBSNAME}": "UNDOTBS1"
},
{
"{#TBSNAME}": "TEMP"
},
{
"{#TBSNAME}": "USERS"
}
]
}
# /usr/lib/zabbix/externalscripts/oracle.odbc.discovery ORA_TESTDB jobs
{
"data": [
{
"{#JOBNAME}": "PURGE_LOG",
"{#JOBOWNER}": "SYS"
},
{
"{#JOBNAME}": "ORA$AUTOTASK_CLEAN",
"{#JOBOWNER}": "SYS"
},
{
"{#JOBNAME}": "DRA_REEVALUATE_OPEN_FAILURES",
"{#JOBOWNER}": "SYS"
},
{
"{#JOBNAME}": "BSLN_MAINTAIN_STATS_JOB",
"{#JOBOWNER}": "SYS"
},
{
"{#JOBNAME}": "RSE$CLEAN_RECOVERABLE_SCRIPT",
"{#JOBOWNER}": "SYS"
},
{
"{#JOBNAME}": "SM$CLEAN_AUTO_SPLIT_MERGE",
"{#JOBOWNER}": "SYS"
},
{
"{#JOBNAME}": "RLM$EVTCLEANUP",
"{#JOBOWNER}": "EXFSYS"
},
{
"{#JOBNAME}": "RLM$SCHDNEGACTION",
"{#JOBOWNER}": "EXFSYS"
}
]
}
ÐаконеÑ-Ñо пеÑÐµÑ Ð¾Ð´Ð¸Ð¼ к Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¼Ð¾Ð½Ð¸ÑоÑинга ÐÐ Oracle в Zabbix.
ÐÐ»Ñ Ð½Ð°Ñала паÑÑ Ñлов о Ñаблоне:
1. обÑие клÑÑи мониÑоÑинга Oracle взÑÑÑ Ð¸Ð· ÑкÑипÑа zabora
2. ÑÑÐ¾Ð±Ñ Ñаблона заÑабоÑал Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ во вкладе ÐакÑоÑÑ Ñамого Ñ Ð¾ÑÑа, добавиÑÑ 3 полÑзоваÑелÑÑÐºÐ¸Ñ Ð¼Ð°ÐºÑоÑа:
â {$DSN1} â DSN коÑоÑÑй пÑопиÑан в квадÑаÑнÑÑ ÑÐºÐ¾Ð±ÐºÐ°Ñ Ñайла /etc/odbc.ini (в пÑимеÑе ORA_TESTDB)
â {$ORA_USER} â полÑзоваÑÐµÐ»Ñ Ñ Ð¿Ñавами коÑоÑого бÑÐ´ÐµÑ Ð¿Ð¾Ð´ÐºÐ»ÑÑение к ÐÐ Oracle
â {$ORA_PASSWORD } â паÑÐ¾Ð»Ñ Ð´Ð»Ñ Ð¿Ð¾Ð´ÐºÐ»ÑÑÐµÐ½Ð¸Ñ Ðº ÐÐ Oracle
ÐÑак ÑпиÑок пÑавил LLD:
ЧÑÐ¾Ð±Ñ Ð¿Ñавила оÑÑабоÑали в пеÑвÑй Ñаз, вÑÑÑавиÑе в ÑÐ°Ð¼Ð¸Ñ Ð¿Ñавила инÑеÑвал, пÑедположим 300 ÑекÑнд, и ÑеÑез 5 минÑÑ Ñ Ð²Ð°Ñ Ð² ÑлеменÑÐ°Ñ Ð´Ð°Ð½Ð½ÑÑ Ð´Ð¾Ð»Ð¶Ð½Ñ ÑоздаÑÑÑÑ Ð½Ð¾Ð²Ñе.
РаÑÑмоÑÑи Ñами пÑавила и наÑнем Ñ Tablespaces.
РпÑинÑипе здеÑÑ Ð²Ñе понÑÑно, Ñ Ð¾ÑÑ Ð¾Ð±ÑаÑиÑÑ Ð²Ð½Ð¸Ð¼Ð°Ð½Ð¸Ðµ на поле «ФилÑÑÑ».
С помоÑÑÑ ÑÑого Ð¿Ð¾Ð»Ñ Ð¼Ð¾Ð¶Ð½Ð¾ пÑоизводиÑÑ ÑилÑÑÑаÑÐ¸Ñ ÑпиÑка коÑоÑÑй возвÑаÑÐ°ÐµÑ Ð½Ð°Ð¼ Ñам ÑлеменÑ, в наÑем пÑимеÑе нам не нÑжно добавлÑÑÑ Ð½Ð° мониÑоÑинг ÑиÑÑемнÑе tablespaces. ФилÑÑÑаÑÐ¸Ñ Ð¿ÑоиÑÑ Ð¾Ð´Ð¸Ñ Ð½Ð° оÑнове пÑавила regexp. Ðак видно на каÑÑинки поле {#TBSNAME} должно ÑооÑвеÑÑÑвоваÑÑ Ð¿ÑÐ°Ð²Ð¸Ð»Ñ regexp Oracle System Excluded Tablespaces. ÐбÑие пÑавила regexp опиÑÑваÑÑÑÑ Ð²
ÐдминиÑÑÑиÑование > ÐбÑие > РегÑлÑÑнÑе вÑÑажениÑ
и вÑзÑваÑÑÑÑ Ð² ÑилÑÑÑе ÑеÑез Ñимвол @.ÐналогиÑно вÑе и Ð´Ð»Ñ job'ов:
ÐеÑÐµÑ Ð¾Ð´Ð¸Ð¼ к пÑоÑоÑипам даннÑÑ
Сам пÑоÑоÑип
ÐаÑÑинка говоÑÐ¸Ñ Ñама за ÑебÑ, но Ñ Ð¾ÑÑ Ð¾Ð±ÑаÑиÑÑ Ð½Ð° один нÑанÑ, а именно на поле «ÐдиниÑа измеÑениÑ», по ÑмолÑÐ°Ð½Ð¸Ñ Ð² Zabbix иÑполÑзÑеÑÑÑ 10-ÑиÑÐ½Ð°Ñ ÑиÑÑема иÑÑиÑлениÑ, ÑÑо и Ñледовало ожидаÑÑ, поÑÑÐ¾Ð¼Ñ Ð²Ñе пÑиÑÑавки Ðило, Ðега, Ðига и Ñ.д. ÑÑо деление на 1000, ÑÑо Ñ ÑоÑки зÑÐµÐ½Ð¸Ñ Ð¸ÑÑиÑÐ»ÐµÐ½Ð¸Ñ Ð¾Ð±Ñема даннÑÑ Ð½Ðµ ÑовÑем коÑÑекÑно, поÑÑÐ¾Ð¼Ñ ÑÑÐ¾Ð±Ñ Ð²Ñ Ð¿Ð¾Ð»ÑÑали во вкладке «ÐоÑледние даннÑе» адекваÑнÑе знаÑÐµÐ½Ð¸Ñ Ð² Zabbix иÑполÑзÑеÑÑÑ Â«ÑпеÑиалÑнÑе» единиÑÑ Ð¸Ð·Ð¼ÐµÑениÑ: B и Bps â Ð±Ð°Ð¹Ñ Ð¸ Ð±Ð°Ð¹Ñ Ð² ÑекÑÐ½Ð´Ñ (подÑобнее).
Ðо еÑÑÑ Ð·Ð°Ð±Ð°Ð²Ð½Ñй Ð¼Ð¾Ð¼ÐµÐ½Ñ (баг), в поÑÐ»ÐµÐ´Ð½Ð¸Ñ Ð´Ð°Ð½Ð½ÑÑ Ð¿ÑиÑÑавки K(ilo), M(ega), G(iga) пеÑеводÑÑÑÑ Ð² K, Ð, Ð, а Ð²Ð¾Ñ Ñама единиÑа неÑ, поÑÑÐ¾Ð¼Ñ Ð² ÑлÑÑае Ñ Ð³Ð¸Ð³Ð°Ð±Ð°Ð¹Ñами Ñ Ðаc бÑÐ´ÐµÑ ÐB.
ÐÑоÑоÑÐ¸Ð¿Ñ ÑÑиггеÑов Ð´Ð»Ñ tablespaces:
ÐÐ¸Ð°Ð¿Ð°Ð·Ð¾Ð½Ñ ÑледÑÑÑие:
- пÑи ÑазмеÑе менÑÑе 3ТРогÑаниÑение в пÑоÑенÑаÑ
- Ð¾Ñ 3ТРдо 10ТРв гигабайÑаÑ
- Ð¾Ñ 10ТРв гигабайÑаÑ
ÐбÑаÑиÑÑ Ð²Ð½Ð¸Ð¼Ð°Ð½Ð¸Ðµ, ÑÑо знаÑÐµÐ½Ð¸Ñ Ð² ÑÑловиÑÑ Ð¸ÑполÑзÑеÑÑÑ Ð² байÑÐ°Ñ , а Ñакже обÑаÑиÑÑ Ð½Ð° поÑÑдок и иÑполÑзÑемÑÑ Ð·Ð½Ð°Ñений.
Ðа пеÑвÑй взглÑд Ð¼Ð¾Ð¶ÐµÑ Ð¿Ð¾ÐºÐ°Ð·Ð°ÑÑÑÑ Ð»Ð¸Ñним ÑÑловие «ÐакÑималÑнÑй ÑÐ°Ð·Ð¼ÐµÑ > 0»
Ðо ÑÑо Ñделано Ð´Ð»Ñ Ñого ÑÑÐ¾Ð±Ñ Ð¿ÑÐ¸Ñ Ð¾Ð´Ð¸Ð»Ð¾ более инÑоÑмаÑивное пиÑÑмо Ð´Ð»Ñ DBA.
РдейÑÑвиÑÑ Ð²Ñ ÑказÑваеÑе:
1. {ITEM.NAME1} ({HOSTNAME1}:{TRIGGER.KEY1}): {ITEM.VALUE1}
2. {ITEM.NAME2} ({HOSTNAME1}:{TRIGGER.KEY2}): {ITEM.VALUE2}
3. {ITEM.NAME3} ({HOSTNAME1}:{TRIGGER.KEY3}): {ITEM.VALUE3}
РдейÑÑвие Ð¼Ñ Ð½Ðµ можем полÑÑиÑÑ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ ÐºÐ»ÑÑа коÑоÑÑй бÑл Ñоздан авÑомаÑиÑеÑки, не Ñо ÑÑÐ¾Ð±Ñ Ð¼Ñ Ð½Ðµ можем его полÑÑиÑÑ Ð¿ÑоÑÑо Ð¼Ñ Ð½Ðµ знаем его название, Ð´Ð»Ñ ÑÑо Ñам нÑжно вÑÑлениÑÑ Ð¸Ð· клÑÑа название tablespace, но ÑÐ°ÐºÐ¸Ñ ÑÑнкÑий Zabbix неÑ.
ÐÑи ÑÐ°ÐºÐ¸Ñ Ð½Ð°ÑÑÑÐ¾Ð¹ÐºÐ°Ñ Ð´ÐµÐ¹ÑÑвиÑ, Ðам бÑÐ´ÐµÑ Ð¿ÑÐ¸Ñ Ð¾Ð´Ð¸ÑÑ Ð½ÐµÑÑо подобное:
1. ТекÑÑий ÑÐ°Ð·Ð¼ÐµÑ tablespace BG_Z_LOB_TBS (ODB.odbc.select[tbs_size_BG_Z_LOB_TBS,ORA_ODB]): 2 GB
2. ÐÑÑалоÑÑ Ñвободного меÑÑа в пÑоÑенÑаÑ
в tablespace BG_Z_LOB_TBS (ODB.odbc.select[tbs_used_percent_BG_Z_LOB_TBS,ORA_ODB]): 99 %
3. ÐакÑималÑно возможнÑй ÑÐ°Ð·Ð¼ÐµÑ tablespace BG_Z_LOB_TBS (ODB.odbc.select[tbs_maxsize_BG_Z_LOB_TBS,ORA_ODB]): 32 GB
ÐÑоÑоÑÐ¸Ð¿Ñ Ð´Ð°Ð½Ð½ÑÑ Ð´Ð»Ñ job'ов:
ÐÑоÑоÑÐ¸Ð¿Ñ ÑÑиггеÑов Ð´Ð»Ñ job'ов:
ТÑиггеÑÑ ÑÑабаÑÑваÑÑ ÐµÑли:
- вÑÐµÐ¼Ñ Ð²ÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ job'a более 720 минÑÑ
- еÑли job завеÑÑилÑÑ Ñо ÑÑаÑÑÑом не ÑавнÑм «SUCCEEDED»
ÐÑиÑÑнÑÑ Ðам обнаÑÑжений в ÐÐ Oracle :)