将Linux下df的磁盘信息搜集到数据库中
转载请注明文章转载自:Dbabc.Net [http://dbabc.net]
本文链接:http://dbabc.net/archives/2011/10/19/linux-df-into-oracleb-table.shtml
创建存放df信息的表 disk_used
CREATE TABLE ORAM.DISK_USED ( MACHINE VARCHAR2(32 BYTE), COLLECTDATE DATE DEFAULT sysdate, TOTAL NUMBER, USED NUMBER, AVAILABLE NUMBER, RATIO NUMBER, MOUNT VARCHAR2(32 BYTE) )
shell脚本disk_info.sh
参照http://www.sqlany.net/News/20111516450.html
#!/bin/bash
# Monitor Linux disk info scripts
# by Liups 2011/10/18
# User specific environment and startup programs
if [ -f ~/.bash_profile ]; then
. ~/.bash_profile
fi
file_dir=/home/oracle/monitor
v_hostip=`/sbin/ifconfig |grep "inet addr"| cut -f 2 -d ":"|cut -f 1 -d " " | grep 100.200.`
#v_arch=`du -m /data/$ORACLE_SID/arch |awk '{print $1}'`
#v_flash=`du -sm /data/$ORACLE_SID/flash_recovery_area|awk '{print $1}'`
echo "insert into disk_info(hostname,arch_info,flash_info ) values ( '${v_hostip}', ${v_arch}, ${v_flash});" >disk_info.sql
df | rev | awk {'print $1" "$2" "$3" "$4" "$5'} | rev |awk {'print "insert into dbabc.disk_used (machine,total,used,available,ratio,mount)values (#ip#,"$1","$2","$3","$4",#"$5"#);"'} |grep -v '##' | grep -v '#on#' | sed "s/#/'/g" |sed "s/%//g"| sed "s/ip/"${v_hostip}"/g" >disk_info.sql
$ORACLE_HOME/bin/sqlplus /nolog <<EOF
connect dbabc/dbabc.et@100.200.100.40:1521/dbabc
@disk_info.sql
commit;
exit;
EOF
exit
此脚本在centos5.6下通过,通过sqlany.net的脚本在centos5.6下报错,将\(和\,前的\去掉搞定,很是佩服sqlany使用#来巧妙的用来替换单引号,这里我将使用率设置为number类型的了.
然后通过contal来每天运行一次,再写个job当使用率超过95%或者剩余的磁盘空间不到2G就进行发mail预警。
crontal -e
0 10,15 * * * sh ~/monitor/disk_info.sh 1>>~/monitor/disk_info.log 2>>~/monitor/disk_info.err
Copyright © Dbabc.Net All Rights Reserved.
本站内容仅代表个人观点, 与其他任何组织或公司无关
-The End-