Zabbix3.4配置监控Oracle的存活状态和表空间使用率
1.安装zabbix3.4 agent:
# rpm -ivh http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm
# yum install zabbix-agent
# service zabbix-agent start
2.配置zabbix_agentd.conf
[root@centos zabbix]# cat zabbix_agentd.conf
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=server_ip or proxy_ip
Hostname=agent_IP
Include=/etc/zabbix/zabbix_agentd.d/*.conf
UnsafeUserParameters=1
AllowRoot=1
3.添加建立oracle的配置文件:
[root@centos scripts]# cat ../zabbix_agentd.d/zabbix_oracle.conf
UserParameter=oracle.active,/etc/zabbix/scripts/oracle_status active
UserParameter=ora.tab.discovery,/etc/zabbix/scripts/oracle_discovery.sh
UserParameter=tablespace[*],/etc/zabbix/scripts/oracle_checktablespace.sh $1 $2
[root@centos scripts]#service zabbix-agent restart
4.创建zabbix监控oracle的用户和密码并授权:
CREATE USER ZABBIX IDENTIFIED BY xxx DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE TEMP;
GRANT CONNECT TO ZABBIX;
GRANT RESOURCE TO ZABBIX;
ALTER USER ZABBIX DEFAULT ROLE ALL;
GRANT SELECT ANY TABLE TO ZABBIX;
GRANT CREATE SESSION TO ZABBIX;
GRANT SELECT ANY DICTIONARY TO ZABBIX;
GRANT UNLIMITED TABLESPACE TO ZABBIX;
GRANT SELECT ANY DICTIONARY TO ZABBIX;
5.编写监控oracle存活状态的脚本:
[root@centos scripts]# cat oracle_status
#!/bin/bash function active() {
ps -ef | grep pmon | grep -v grep | awk '{print $NF}' > /dev/null
if [ $? -eq 0 ]; then
echo 1
else
echo 0
fi
} if [ $# -ne 1 ]; then
echo "the args is error."
else
$1
fi
6.编写监控oracle表空间的脚本(三个脚本):
1)获取表空间状态输出到/tmp/oracle_tablespace.log文件。这是一个定时脚本。
*/1 * * * * oracle /bin/bash /etc/zabbix/scripts/oracle_tablespace.sh >> /tmp/oracle_tablespace_cron.log 2>&1
[root@centos scripts]# cat oracle_tablespace.sh
#!/bin/bash #function:
#获取到oracle数据库中的tablespace列表,并输出到/tmp/oracle_tablespace.log日志中去,在crontab中设置每一分钟执行一次. source /home/oracle/.bash_profile sqlplus -s zabbix/xxx> /tmp/oracle_tablespace.log<<EOF
set linesize 140 pagesize 10000
col "Status" for a10
col "Name" for a25
col "Type" for a10
col "Extent" for a15
SELECT d.status "Status", d.tablespace_name "Name", d.contents "Type", d.extent_management "Extent",
NVL(a.bytes, 0) "Size (M)",
NVL(a.bytes - NVL(f.bytes, 0), 0) "Used (M)",
round(NVL((a.bytes - NVL(f.bytes, 0)) / a.bytes * 100, 0),2) "Used %"
FROM sys.dba_tablespaces d,
(select tablespace_name, sum(bytes) bytes from dba_data_files
group by tablespace_name) a, (select tablespace_name, sum(bytes) bytes from dba_free_space group by tablespace_name) f WHERE
d.tablespace_name = a.tablespace_name(+) AND d.tablespace_name = f.tablespace_name(+) AND d.tablespace_name not in ('SYSAUX','SYSTEM') AND NOT
(d.extent_management like 'LOCAL' AND d.contents like 'TEMPORARY')
UNION ALL
SELECT d.status "Status", d.tablespace_name "Name", d.contents "Type", d.extent_management "Extent",
NVL(a.bytes, 0) "Size (M)",
NVL(t.bytes,0) "Used (M)",
round(NVL(t.bytes / a.bytes * 100, 0),2) "Used %" FROM sys.dba_tablespaces d,
(select tablespace_name, sum(bytes) bytes from dba_temp_files group by tablespace_name) a, (select
tablespace_name, sum(bytes_cached) bytes from v\$temp_extent_pool group by tablespace_name) t WHERE
d.tablespace_name = a.tablespace_name(+) AND d.tablespace_name = t.tablespace_name(+) AND
d.extent_management like 'LOCAL' AND d.contents like 'TEMPORARY'
ORDER BY 7;
EOF sed -i '$d' /tmp/oracle_tablespace.log
sed -i '$d' /tmp/oracle_tablespace.log
sed -i 's/,//g' /tmp/oracle_tablespace.log
2)从/tmp/oracle_tablespace.log文件中取出Name那一列,并进行JSON格式化输出。
[root@centos scripts]# cat oracle_discovery.sh
#!/bin/bash #function:
#这个脚本的功能是从/tmp/oracle_tablespace.log文件中取出Name那一列,并进行JSON格式化输出(因为zabbix的自动发现功能获取的数据类型是JSON格式的) TABLESPACE=`cat /tmp/oracle_tablespace.log |awk '{print$2}'|awk 'NR>3{print}'`
COUNT=`echo "$TABLESPACE" |wc -l`
INDEX=0
echo '{"data":['
echo "$TABLESPACE" | while read LINE; do
echo -n '{"{#TABLENAME}":"'$LINE'"}'
INDEX=`expr $INDEX + 1`
if [ $INDEX -lt $COUNT ]; then
echo ','
fi
done
echo ']}'
3)这是zabbix调用获取值的脚本:
[root@centos scripts]# cat oracle_checktablespace.sh
#!/bin/bash #function:
#获取/tmp/oracle_tablespace.log中的最后三列数据,其中maxmb和used取出的值是M,根据需要转换单位,方便zabbix取值. EQ_DATA="$2"
ZBX_REQ_DATA_TAB="$1"
SOURCE_DATA=/tmp/oracle_tablespace.log
case $2 in
maxmb)
grep -wE "$ZBX_REQ_DATA_TAB" $SOURCE_DATA | awk '{print $5}';;
used)
grep -wE "$ZBX_REQ_DATA_TAB" $SOURCE_DATA | awk '{print $6}';;
autopercent)
grep -wE "$ZBX_REQ_DATA_TAB" $SOURCE_DATA | awk '{print $7}';;
*)
echo $ERROR_WRONG_PARAM
exit 1;;
esac
exit 0

7.zabbix3.4-server面板添加agent主机并配置对应的监控项,图表和触发器。如下图:

1)添加主机:

链接模板:

2)添加oracle存活状态的监控:

添加图表:

图表数据展示:

添加触发器:

3)添加oracle表空间使用率的监控:

添加过滤关联item项:

添加图表:

数据展示:

添加触发器:

报警示例:

完。

[记录]Zabbix3.4配置监控Oracle12c的存活状态和表空间使用率的更多相关文章

  1. zabbix3.2.4监控MySQL5.7.16状态

    一.添加监控用户mysql> grant all privileges on *.* to 'zabbix'@'localhost' identified by 'zabbix';mysql&g ...

  2. Oracle管理监控之监控表空间使用率脚本

    SELECT D.TABLESPACE_NAME,       SPACE "SUM_SPACE(M)",       BLOCKS SUM_BLOCKS,       SPACE ...

  3. zabbix4.2配置监控nginx服务

    1.监控原理 通过status模块监控(--with-http_stub_status_module)  2.修改nginx配置(/etc/nginx/conf.d/default.conf) 在被监 ...

  4. 监控和管理Oracle UNDO表空间的使用

    对Oracle数据库UNDO表空间的监控和管理是我们日常最重要的工作之一,UNDO表空间通常都是Oracle自动化管理(通过undo_management初始化参数确定):UNDO表空间是用于存储DM ...

  5. nagios监控oracle 表空间

    oracle表空间满的危害以及处理方式见我的博客链接https://www.cnblogs.com/-abm/p/9764803.html 除此之外我们还需要对表空间实时监控,这样就可以及时了解表空间 ...

  6. 安装12C小问题及pdb表空间配置

    安装12C小问题及pdb表空间配置 一.安装 1.RPM包 #安装12C需要安装的rpm包,官网搜索,做个记录 bc binutils-2.23.52.0.1-12.el7(x86_64) compa ...

  7. 使用zabbix监控oracle表空间

    0.概述 zabbix是一款极其强大的开源监控工具,下面我分享下zabbix如何监控表空间,跟着这个思路,监控其他项都是类似操作. 前提条件是你已经有了zabbix server和zabbix age ...

  8. 7. 配置undo表空间

    7. 配置undo表空间 undo日志可以存储在一个或多个undo表空间中,无需存储在系统表空间中. 要为MySQL实例配置单独的undo表空间,请执行以下步骤 [重要]: 只能在初始化新MySQL实 ...

  9. 分布式监控系统Zabbix-3.0.3-完整安装记录(3)-监控nginx,php,memcache,Low-level discovery磁盘IO

    前段时间在公司IDC服务器上部署了zabbix3.0.3监控系统,除了自带的内存/带宽/CPU负载等系统资源监控模板以及mysql监控模板外,接下来对诸如nginx.php.memcache.磁盘IO ...

随机推荐

  1. Qt出现堆溢出(Error Code -1073741823)

    症状 在使用Debug模式时,程序可以正常启动,但是切换到Release模式,程序报错,错误码-1073741823 原因 程序中使用了过多的new.比如: QActionGroup *mProtoc ...

  2. char,varchar,nvarchar,text区别与联系

    CHAR,NCHAR 定长,速度快,占空间大,需处理VARCHAR,NVARCHAR,TEXT 不定长,空间小,速度慢,无需处理NCHAR.NVARCHAR.NTEXT处理Unicode码

  3. junit源码解析总结

    前面的博客我们也已经整理到了,我们使用junit38,在写测试类的时候我们的测试类必须继承TestCase.这个所有测试类的父类在junit.framework包下面. 前面我们的整理都是说直接在ID ...

  4. git 安装使用

    系统ubuntu14.04 1.安装:sudo  apt-get install git 2.设置name and Email: git config --global user.name " ...

  5. TP手册学习第二天

    默认情况下,URL是不区分大小写的,访问规则:--模块/控制器/操作/参数/值,如果要访问驼峰法的控制器类BlogTest,则需要使用:blog_test MVC是一个设计模式,它强制性的使应用程序的 ...

  6. JS学习--DOM

    1.概念 文档对象模型DOM,定义访问和处理HTML文档的标准方法.DOM将HTML呈现为带有元素.属性和文本的树结构(节点树). 2.document.getElementById("id ...

  7. 解决C#编译中"csc不是内部或外部命令"的问题

    安装完 VisualStudio 编译环境后,是不能用命令行直接编译写好的csc文件的,如果不配置环境变量,在命令提示符(cmd)中编译扩展名为cs的文件,会出现错误提示"csc不是内部或外 ...

  8. 各模拟器adb连接端口

    如果执行自动化测试,在没有真机的情况下,我们唯一的选择便是模拟器.目前市面上有很多模拟器,他们使用adb连接时都会有不同的默认接口,当adb无法自动连接模拟器时,手动使用ip+端口连接是很好的选择.下 ...

  9. django的rest_framework框架源码剖析

    在看源码之前先了解一下什么是rest,restful api. 什么是rest 可以总结为一句话:REST是所有Web应用都应该遵守的架构设计指导原则. REST是Representational S ...

  10. JavaScript转unix时间戳

    由于 unix 的时间戳是10位不带毫秒的,所以前端获取到时间戳之后需要做一下处理,才能获取正确的时间. // 假设这里是从服务端获取到的时间戳 var unixTime = data.time; / ...