问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

zabbix 自动发现是啥意思

发布网友 发布时间:2022-04-09 17:51

我来回答

2个回答

懂视网 时间:2022-04-09 22:12

  Oracle表空间使用率实时监控,当表空间使用率达到95%时触发告警机制。Oracle表空间分为系统默认表空间和用户创建的表空间,而表空间又有自动扩展和非自动扩展两种类型,用户(DBA)在创建表空间时可以根据应用需求指定是否开启表空间自动扩展。那么在这里我们需要分析一个监控策略,就是当zabbix监控到某个表空间使用率达到95%,那么就让触发器触发警告(Warning)信息,并发送邮件给DBA或管理者。当检测到表空间没有开启自动扩展时,则触发Information信息。说明一下:oracle表空间是否开启自动扩展以及最大能扩展到多少在最初应该规划好的,有时在创建表空间时指定初始容量和最大能扩展的容量一致的话,那么就会让这个表空间立即拥有最大能扩展的容量,而不是随着表空间的消耗而慢慢增加。所以即使我们检测到该表空间开启了自动扩展功能,实际上也不会继续扩展了。当然在大多数业务场景下一般是不建议开启表空间自动扩展功能的,除非你的业务是非关键的。回到监控这里,当我们同时收到这两个告警信息时,那么就要及时处理oracle表空间使用率大于95%的问题了。


监控方式

  有了zabbix监控系统,我们可以定制任何需要的监控项目,首先通过自动发现脚本发现oracle表空间,然后再制定额外的属于oracle表空间的监控项目,配置告警触发器,最后在zabbix的Web页面端展示oracle表空间的使用率和剩余量。

 

获取oracle数据库表空间信息的原始脚本和自动发现脚本

  Oracle表空间的信息需要SQL语句查询得到,因此,我们首先创建一个获取表空间信息的原始脚本/home/oracle/bin/check_tablespace.sh,这个脚本由oracle用户去执行,脚本编写如下:

oracle@hmracdb1:~/bin> cat check_tablespace.sh 
#!/bin/bash
# tablespace usagep check
source ~/.bash_profile
function check {
sqlplus -S "/ as sysdba" <<  EOF
set linesize 200
set pagesize 200
spool /tmp/ora_tablespace.txt
select a.tablespace_name, total, free,(total-free) as usage from 
(select tablespace_name, sum(bytes)/1024/1024 as total from dba_data_files group by tablespace_name) a, 
(select tablespace_name, sum(bytes)/1024/1024 as free from dba_free_space group by tablespace_name) b
where a.tablespace_name = b.tablespace_name;
spool off
set linesize 100
set pagesize 100
spool /tmp/ora_autex.txt
select tablespace_name,autoextensible from dba_data_files;
spool off
quit
EOF
};check &>/dev/null

执行这个脚本,并生成两个保存有oracle表空间名称信息的文件:/tmp/ora_tablespace.txt和/tmp/ora_autex.txt

oracle@hmracdb1:~/bin> ls -l /tmp/ora_*
-rw-r--r-- 1 oracle oinstall 1030 Mar 23 20:50 /tmp/ora_autex.txt
-rw-r--r-- 1 oracle oinstall  929 Mar 23 20:50 /tmp/ora_tablespace.txt
 
oracle@hmracdb1:~/bin> cat /tmp/ora_tablespace.txt
TABLESPACE_NAME                                                   TOTAL       FREE      USAGE    
------------------------------------------------------------ ---------- ---------- ----------    
TEST11                                                               50         49          1    
SYSAUX                                                             2048       1197        851    
UNDOTBS1                                                           2048  2036.3125    11.6875    
USERS                                                              1024       1023          1    
SYSTEM                                                             2048   1358.375    689.625    
UDB_SPACE                                                         40960  31673.875   9286.125    
UNDOTBS2                                                           2048  2035.1875    12.8125    
 
7 rows selected.
 
 
oracle@hmracdb1:~/bin> cat /tmp/ora_autex.txt
TABLESPACE_NAME                                              AUTOEX                              
------------------------------------------------------------ ------                              
SYSTEM                                                       YES                                 
SYSAUX                                                       YES                                 
UNDOTBS1                                                     YES                                 
UNDOTBS2                                                     YES                                 
USERS                                                        YES                                 
UDB_SPACE                                                    YES                                 
UDB_SPACE                                                    YES                                 
TEST11                                                       YES                                 
8 rows selected.


  我们需要把脚本放到oracle用户的crontab计划任务表中,让脚本在后台每5分钟执行一次,一定要保证计划任务能正常按计划执行,否则这可能会被监控欺骗(监控端获取到的数据一直保持不变)。

hmracdb1:~ # crontab -u oracle -l
# DO NOT EDIT THIS FILE - edit the master and reinstall.
# (/tmp/crontab.XXXXj0XHiH installed on Thu Mar 23 11:38:37 2017)
# (Cron version V5.0 -- $Id: crontab.c,v 1.12 2004/01/23 18:56:42 vixie Exp $)
*/5 * * * * /home/oracle/bin/check_tablespace.sh

手动执行SQL语句获取表空间使用率

SQL> set linesize 200
select ff.s tablespace_name,
ff.b total,
              (ff.b - fr.b)usage,
fr.b free,
              round((ff.b - fr.b) / ff.b * 100) || ‘% ‘ usagep
from (select tablespace_name s, sum(bytes) / 1024 / 1024 b
                    from dba_data_files
                  group by tablespace_name) ff,
              (select tablespace_name s, sum(bytes) / 1024 / 1024 b
                    from dba_free_space
                  group by tablespace_name) fr
 12  where ff.s = fr.s;
 
TABLESPACE_NAME                                                   TOTAL      USAGE       FREE USAGEP
------------------------------------------------------------ ---------- ---------- ---------- ------------------------------------------------------------------------------------
TEST11                                                               50          1         49 2%
SYSAUX                                                             2048    851.375   1196.625 42%
UNDOTBS1                                                           2048    12.6875  2035.3125 1%
USERS                                                              1024          1       1023 0%
SYSTEM                                                             2048    689.625   1358.375 34%
UDB_SPACE                                                         40960   9286.125  31673.875 23%
UNDOTBS2                                                           2048    12.8125  2035.1875 1%
 
7 rows selected.


下面编写一个zabbix自动发现oracle表空间的脚本discovery_oracle_tablespace.sh

hmracdb1:~ # cat discovery_oracle_tablespace.sh
#!/bin/bash
#zabbix discovery oracle tablespace
table_spaces=(`cat /tmp/ora_tablespace.txt | sed -e "1,3d" -e "/^$/d" -e "/selected/d" | awk ‘{print $1}‘`)
length=${#table_spaces[@]}
 
printf "{
"
printf ‘	‘""data":["
for ((i=0;i<$length;i++))
do
    printf "
		{"
    printf ""{#TABLESPACE_NAME}":"${table_spaces[$i]}"}"
    if [ $i -lt $[$length-1] ];then
        printf ","
    fi
done
    printf "
	]
"
printf "}
"


赋予脚本执行权限,并放到$ZABBIX_HOME/scripts/目录下,下面是执行该脚本输出为json格式的oracle表空间的信息

hmracdb1:/opt/zabbix/scripts # ./discovery_oracle_tablespace.sh 
{
    "data":[
        {"{#PROCESS_NAME}":"TEST11"},
        {"{#PROCESS_NAME}":"SYSAUX"},
        {"{#PROCESS_NAME}":"UNDOTBS1"},
        {"{#PROCESS_NAME}":"USERS"},
        {"{#PROCESS_NAME}":"SYSTEM"},
        {"{#PROCESS_NAME}":"UDB_SPACE"},
        {"{#PROCESS_NAME}":"UNDOTBS2"}
    ]
}


监控项目检测脚本tablespace_check.sh用于zabbix获取oracle表空间使用率、剩余量和检查是否开启自动扩展。

hmracdb1:~ # cat tablespace_check.sh 
#!/bin/bash
# oracle tablespace check
CEHCK_TYPE=$1
TABLESPACE_NAME=$2
 
function usagepre {
    grep "$TABLESPACE_NAME" /tmp/ora_tablespace.txt | awk ‘{printf "%.f
",($2-$3)/$2*100}‘
}
 
function available {
    grep "$TABLESPACE_NAME" /tmp/ora_tablespace.txt | awk ‘{printf $3*1024*1024}‘
}
 
function check {
    if grep "$TABLESPACE_NAME" /tmp/ora_autex.txt | awk ‘{print $2}‘ | uniq | grep "YES" &>/dev/null;then
        echo 1
    else
        echo 0
    fi
}
 
case $CEHCK_TYPE in
    pre)
        usagepre ;;
    fre)
        available ;;
    check)
        check ;;
    *)
        echo -e "Usage: $0 [pre|fre|check] [TABLESPACE_NAME]"
esac


确认脚本输出的值为zabbix监控所取的数值

hmracdb1:~ # ./tablespace_check.sh pre SYSTEM
34
hmracdb1:~ # ./tablespace_check.sh fre SYSTEM
1424359424hmracdb1:~ # ./tablespace_check.sh check SYSTEM
1

将脚本都保存到$ZABBIX_HOME/scpirts目录下,然后配置UserParameter参数,增加监控key,key名称分别为discovery.oracle.tablespace、tablespace.check,在以下配置文件末尾增加两行

hmracdb1:/opt/zabbix/scripts # vim ../etc/zabbix_agentd.conf.d/userparameter_script.conf
UserParameter=discovery.oracle.tablespace[*],/opt/zabbix/scripts/discovery_oracle_tablespace.sh
UserParameter=tablespace.check[*],/opt/zabbix/scripts/tablespace_check.sh $1 $2

重启zabbix_ahgentd

在zabbix服务端获取oracle表空间和监控数值

[root@Zabbix_19F ~]# zabbix_get -p10050 -k ‘tablespace.check[pre,SYSTEM]‘ -s 10.xxx.xxx.xxx
34
[root@Zabbix_19F ~]# zabbix_get -p10050 -k ‘tablespace.check[fre,SYSTEM]‘ -s 10.xxx.xxx.xxx
1424359424
[root@Zabbix_19F ~]# zabbix_get -p10050 -k ‘tablespace.check[check,SYSTEM]‘ -s 10.xxx.xxx.xxx
1



Zabbix Web端配置

  新建oracle表空间模版My_Templates_Linux_Discovery_oracle_tablespace,添加自动发现规则,10分钟更新一次

技术分享


添加Item prototypes监控项目,第一个表空间使用率

技术分享


第二个表空间剩余容量

技术分享


第三个检查表空间是否开启自动扩展

技术分享



创建告警触发器

首先创建检测表空间使用率是否大于95%的触发器

技术分享



创建检测是否开启自动扩展的触发器

技术分享



查看监控数据

技术分享


到这里,zabbix监控oracle表空间使用率就完成了


本文出自 “7414593” 博客,请务必保留此出处http://7424593.blog.51cto.com/7414593/1910111

zabbix自动发现oracle表空间并监控其使用率

标签:oracle表空间 监控 zabbix自动发现

热心网友 时间:2022-04-09 19:20

zabbix怎么使用自动发现添加新监控项1.Serverzabbix系统核心进程,轮询并捕获数据、发送通知等。是zabbixagent和zabbixproxy汇报数据的对象。server自身可远程检测网络服务。所有的前后端配置、统计信息、可操作数据存储于此。包含server、前段界面和后端DB几部分。2.Agent部署在被监控主机上用于监控本地资源和应用并向zabbixserver汇报结果。使用本地系统调用故非常高效。有主动和被动两种检测模式。被动模式下agent根据server或proxy的具体请求来返回数据。主动模式下先主动由server获取监控项列表在检测并返回新的数据。采用主动或被动检测取决于相应监控项的配置。3.Proxy可以自由选择部署或者不部署,主要用于分担server的负载。在集中化监控远程位置、分支、网络的场景中是很好的解决方案。可从被监控设备收集数据缓存在proxy本地后传递给其所属的zabbixserver。proxy需要单独的数据库。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
win10电脑hdmiwin10笔记本hdmi连接电视没反应 平板电脑与电视机联接华为平板怎么投屏到电视上 长虹chiq电脑无线投影如何无线把电脑屏幕投影到电视屏幕上 模拟电视电脑系统智能电视怎么变成电脑系统 ops电脑加装固态硬盘ops电脑是什么意思 我想问一下立宇泰电子的ARMSYS6410开发板可以外接什么模块? 小心那些处理过的2元绿幽灵,教你这几招就能识别! 如何辨别人民币是否水洗过,刚有兴趣做收藏可去买第四套人民币还有是否水... oppor7splus手机怎么样现在?照相好不好。是多会儿出来的机子呢。目前... ps怎么改像素大小且不模糊 安徽特岗教师怎么报名 、特岗教师服务期满内请婚假、产假影响入编转正吗? 淘宝店可以让线下的客气下单,然后自己送货吗 淘宝网什么叫同城自提 淘宝上怎么设置同城自提啊 我是卖家淘宝自提 淘宝购物收货地址没有服务站自提如何解决? 淘宝到地级市,买家自提怎么设置 我自己有一家小公司,想走澳洲投资移民去澳洲,不知道什么要求? 淘宝自提怎么弄? 小米有售后吗?小米只有北京有售后服务点吗?在哪儿?在襄阳有售后点吗?才买半年坏了! 淘宝店卖东西怎么设为自提,就是不物流 淘宝店铺宝贝怎么设置门店自提卷方式下单 澳洲188a投资移民评分标准 申请澳洲投资移民188A需要有什么资格? 淘宝自提怎么设置 188a投资移民可以吗 怎样在淘宝里设置&quot;宝贝自提&quot;?,我是淘宝卖家,客户不需要快递。会解决的请附上图片 淘宝买家自提怎么操作 小米手机在北京的售后点有哪些? 安徽的特岗教师考试一年有几次呀??能告诉我具体报名时间吗?? 安徽特岗教师在哪个网站报名 安徽特岗教师考试时间 教师特岗什么时候考试 2014安徽特岗教师考试报名什么时间开始? 安徽特岗教师笔试时间是什么时候 安徽特岗教师招聘报名到今天下午6点就结束了,可我的报名信息还一直是待审核状态(我是今天晚上报名的) 2010安徽特岗教师和三支一扶报名时间 感人200字段子 vivo手机如何设置指纹解锁?怎样解锁? 马桶的密封胶干了以后成了碎块怎么回事? 橡皮树太高怎么修剪? 橡皮树长太高了,已经2米多了,只有一个枝干,怎么办? 橡皮树太高怎么修剪 跪求女主追求男主的古代小说 java中如何调用enableSharding() 橡皮树怎么修剪 橡皮树怎样裁剪? ShardingEngine自定义 橡皮树应该如何修剪?修剪时需要注意哪些细节?