zabora监控脚本使用解析

zabora源码

#!/usr/bin/env bash
rcode=0
PATH=/usr/local/bin:${PATH}

#################################################################################

#################################################################################
#
#  Variable Definition
# ---------------------
#
APP_NAME=$(basename $0)
APP_DIR=$(dirname $0)
APP_VER="1.5.4"
APP_WEB="https://sergiotocalini.github.io"
#
#################################################################################

#################################################################################
#
#  Load Oracle Environment
# -------------------------
#
[ -r ${APP_DIR}/${APP_NAME%.*}.conf ] && . ${APP_DIR}/${APP_NAME%.*}.conf
#
#################################################################################

#################################################################################
#
#  Function Definition
# ---------------------
#
usage() {
    echo "Usage: ${APP_NAME%.*} [Options]"
    echo ""
    echo "Options:"
    echo "  -h            Displays this help message."
    echo "  -a            Query arguments."
    echo "  -s ARG(str)   Query to Oracle."
    echo "  -o ARG(str)   Set SID to make the query."
    echo "  -j            Jsonify output."
    echo "  -v            Show the script version."
    echo ""
    echo "Please send any bug reports to https://github.com/sergiotocalini/zabora/issues"
    exit 1
}

version() {
    echo "${APP_NAME%.*} ${APP_VER}"
    exit 1
}

zabbix_not_support() {
    echo "ZBX_NOTSUPPORTED"
    exit 1
}
#
#################################################################################

#################################################################################
while getopts ":a:j:o:s:Hv" OPTION; do
    case ${OPTION} in
    H)
        usage
        ;;
    a)
        SQL_ARGS=${OPTARG}
        ;;
        j)
            JSON=1
        JSON_ATTR=${OPTARG}
            ;;
    o)
        ORACLE_SID=${OPTARG}
        ;;
    s)
        SQL="${APP_DIR}/sql/${OPTARG}"
        ;;
    v)
        version
        ;;
         \?)
            exit 1
            ;;
    esac
done

if [[ -f ${APP_DIR}/zabora.oraenv ]]; then
    . ${APP_DIR}/zabora.oraenv
else
    ORAENV_ASK=NO
    . /usr/local/bin/oraenv > /dev/null
fi
if [[ -f "${SQL%.sql}.sql" ]]; then
    
    rval=`sqlplus -s ${ORACLE_USER}/${ORACLE_PASS} @${SQL} "${SQL_ARGS}"`
    rcode="${?}"
    if [[ ${JSON} -eq 1 ]]; then
       #set -A rval ${rval}
       declare -a rval ${rval}
       echo '{'
       echo '   "data":['
       count=1
       for i in ${rval[@]};do
          output='{ "'{#${JSON_ATTR}}'":"'${i}'" }'
          if (( ${count} < ${#rval[*]} )); then
             output="${output},"
          fi
          echo "      ${output}"
          let "count=count+1"
       done
       echo '   ]'
       echo '}'
    else
       echo ${rval:-0}
    fi
else
    zabbix_not_support
fi

exit ${rcode}

 zabora源码关键点

sqlplus -s ${ORACLE_USER}/${ORACLE_PASS} @${SQL} "${SQL_ARGS}"

sqlplus是zabora根据oracle数据库调用指定sql文件并且赋值sql传参的关键

sqlplus -s 表示静默输出

{ORACLE_USER}、${ORACLE_PASS}的值来自配置文件zabora.oraenv。

${SQL}由SQL="${APP_DIR}/sql/${OPTARG}"获取。APP_DIR=$(dirname $0),${OPTARG}的值sql_key是zabbix监控项的键值,来自zabora -s sql_key。

通常情况下,如果${APP_DIR}/sql/sql_key.sql存在,便会执行sqlplus的命令,获取监控值。

zabora脚本参数

-h                   显示帮助信息
-a                   sql文件的传参
-s ARG(str)    sql文件路径
-o ARG(str)    oracle的SID
-j                    是否以json作为输出文件,1为是。
-v                   显示脚本版本

常见使用命令

zabora.sh -o $1 -s $2 -a $3

zabora.sh -o orcl -s /u01/scripts/zabora/sql/data_size.sql -a "1"

zabora.sh -o $1 -s $2 -a $3 -j $4

zabora.sh -o orcl -s /u01/scripts/zabora/sql/data_size.sql -a "1" -j "1"

 

zabbix键值形式

 zabora[{$ORACLE_SID},sql_key,sql_arg,json_out]

例如: zabora[{$ORACLE_SID},db_size,100,1]

  • 10
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值