首頁>技術>

前言

最新zabbix5.0監控oracle,可以用odbc的方式,也可以用agent2方式,官網也詳細介紹。我這裡就用odbc方式。

https://www.zabbix.com/cn/integrations/oracle#tab:official2

如果透過odbc方式來監控oracle,等有空再來寫吧。

模版Template DB Oracle by ODBC沒有自動發現oracle使用者這個,實際在生產環境中,oracle 11g啟用了180天的密碼策略,定期必須修改密碼的策略,user也可能被鎖定之類的。這個模版沒有體現這個,僅僅只檢查了zabbix這個新建使用者的密碼有效天數。

下面我們就自己來建立oracle的使用者自動發現。

一、建立自動發現規則,獲得所有帳號名稱。

在模版自動發現規則裡邊,建立發現規則。

型別:資料庫監控

鍵值:db.odbc.discovery[dbuserlist,"{$ORACLE.DSN}"] #{$ORACLE.DSN}呼叫宏裡邊的設定,dbuserlist這個隨便寫的,似乎沒作用。

使用者名稱稱:{$ORACLE.USER}

密碼:{$ORACLE.PASSWORD}

SQL查詢:SELECT username as dbuser FROM dba_users where username in ('SAPSR3','SYSTEM','SYS','ZABBIX'); #這裡是把資料庫中的使用者列出來,我這裡限制了下,只顯示這麼四個,如果想要所有的使用者,就不要加where。 dbuser這個後邊會用到吧。

點下測試

輸入宏具體的值,點Get value and test

這裡會顯示結果,格式如下:

[{"{#DBUSER}":"SAPSR3"},{"{#DBUSER}":"ZABBIX"},{"{#DBUSER}":"SYS"},{"{#DBUSER}":"SYSTEM"}]

二、建立監控項,獲得Oracle所有帳號資訊。

我們再到模版的監控項裡邊建立item

鍵值:db.odbc.get[dbuser_status,"{$ORACLE.DSN}"]

使用者:{$ORACLE.USER}

密碼:{$ORACLE.PASSWORD}

SQL查詢:SELECT username as dbuser, ACCOUNTSTATUS as status, ROUND(DECODE(SIGN(NVL(u.expirydate, SYSDATE + 999) - SYSDATE),-1, 0, NVL(u.expirydate, SYSDATE + 999) - SYSDATE)) exppasswddaysbefore

FROM dba_users u;

點下測試

****

返回結果:

[{"DBUSER":"SAPSR3","STATUS":"OPEN","EXPPASSWDDAYSBEFORE":"999"},{"DBUSER":"APPQOSSYS","STATUS":"EXPIRED & LOCKED","EXPPASSWDDAYSBEFORE":"0"},{"DBUSER":"DBSNMP","STATUS":"EXPIRED & LOCKED","EXPPASSWDDAYSBEFORE":"0"},{"DBUSER":"OPS$SAPSERVICEPRD","STATUS":"OPEN","EXPPASSWDDAYSBEFORE":"999"},{"DBUSER":"OPS$ORAQAS","STATUS":"OPEN","EXPPASSWDDAYSBEFORE":"999"},{"DBUSER":"OPS$PRDADM","STATUS":"OPEN","EXPPASSWDDAYSBEFORE":"999"},{"DBUSER":"ZABBIX","STATUS":"OPEN","EXPPASSWDDAYSBEFORE":"999"},{"DBUSER":"OPS$ORAPRD","STATUS":"OPEN","EXPPASSWDDAYSBEFORE":"999"},{"DBUSER":"OPS$QASADM","STATUS":"OPEN","EXPPASSWDDAYSBEFORE":"999"},{"DBUSER":"SYS","STATUS":"OPEN","EXPPASSWDDAYSBEFORE":"999"},{"DBUSER":"SYSTEM","STATUS":"OPEN","EXPPASSWDDAYSBEFORE":"999"},{"DBUSER":"OUTLN","STATUS":"LOCKED","EXPPASSWDDAYSBEFORE":"999"},{"DBUSER":"ORACLEOCM","STATUS":"EXPIRED & LOCKED","EXPPASSWDDAYSBEFORE":"0"},{"DBUSER":"DIP","STATUS":"EXPIRED & LOCKED","EXPPASSWDDAYS_BEFORE":"0"}]

三、自動發現規則中建立監控項原型。

我們再去自動發現規則裡邊,新增監控項原型。

名稱:Oracle User '{#DBUSER}': Open status

鍵值:oracle.user_status["{#DBUSER}"]

主要項:一定要選模版建立的那個item

應用集原型:是為了分類,好看。

程序

選JSONPatch

引數:$[?(@.DBUSER=='{#DBUSER}')].STATUS.first() #這裡的DBUSER就是前面sql的設定,STATUS也是SQL裡邊的

把前面的sql結果貼上進來,輸入user名稱

顯示結果

另外一個就是監控密碼有效天數

名稱:Oracle User '{#DBUSER}': Expired Password Days Before

型別:相關專案

鍵值:oracle.exppassworddays_before["{#DBUSER}"]

資訊型別:浮點數 #這裡要選對哦

單位:days

引數:$[?(@.DBUSER=='{#DBUSER}')].EXPPASSWDDAYS_BEFORE.first()

測試結果:

四、自動發現清單裡邊建立觸發器。

在自動發現裡邊建立觸發器

檢查使用者狀態,如果不是OPEN 則報警

名稱:Oracle User :{#DBUSER} stutas is not OPEN

表示式:{Template DB Oracle by ODBC:oracle.user_status["{#DBUSER}"].last()}<>"OPEN"

檢查密碼有效天數

名稱:Oracle User :{#DBUSER} password will be expired after 15 days

表示式:{Template DB Oracle by ODBC:oracle.exppassworddaysbefore["{#DBUSER}"].last()}<15 and {Template DB Oracle by ODBC:oracle.exppassworddaysbefore["{#DBUSER}"].last()}>0 #小於15天,大於0天。大於0是因為有些已經是0了

五、最新資料展示。

我們再去看看最新資料

20
最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • C#之堆與棧