前言:
当前看官们对“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