将Linux下df的磁盘信息搜集到数据库中

At 2011-10-19

转载请注明文章转载自: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-
  • 暂无相关日志

发表评论


*

为你保密









Copyright © Dbabc.Net All Rights Reserved. 本站内容仅代表个人观点, 与其他任何组织或公司无关

Powered by Wordpress and Theme by WPYOU