龙空技术网

Zabbix监控Oracle帐号的状态_自动发现

橙子粑粑哦 94

前言:

当前看官们对“oracle days”都比较着重,姐妹们都想要知道一些“oracle days”的相关资讯。那么小编在网摘上搜集了一些关于“oracle days””的相关文章,希望你们能喜欢,姐妹们快快来学习一下吧!

前言

最新zabbix5.0监控oracle,可以用odbc的方式,也可以用agent2方式,官网也详细介绍。我这里就用odbc方式。

如果通过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了

五、最新数据展示。

我们再去看看最新数据

标签: #oracle days