爬取 dfs.namenode.http-address 页面 dfshealth 数据脚本模板

#${cluster_dir}/dfs_health.sh.template
#爬取 dfs.namenode.http-address 页面 dfshealth 数据脚本模板
#版权声明:不定期更新维护地址,看这里→_→	https://blog.csdn.net/qq_16592497/article/details/81333227

#脚本模板中涉及需要被替换的变量
#URL=${URL}
#operation_dir=${operation_dir}
#logstash_input_file=${logstash_input_file}

#爬取页面信息存储到以下文件中
file_name=dfs_health.jmx

#将页面网址转化为便于爬取的格式
URL=${URL%%/dfshealth*}/jmx

################################################################################
#curl爬取网址的异常处理,若连接超时则意味着需要替换网址或者移除监控,可从页面无数据发现
#curl爬取网页信息并存储到指定位置,-s 静默模式 --connect-timeout 设置连接超时时间(秒)
curl -s --connect-timeout 10 ${URL} > ${operation_dir}/${file_name}
#if判断上一条语句是否执行成功,若失败则退出脚本
if [[ $? -ne 0 ]]; then
	#exit退出shell脚本,返回状态值 1 表示失败
	exit 1
fi
################################################################################

#sed获取对应行内容,grep过滤出其值赋值给对应变量
configured_capacity_b=`sed -n '/"Total"/p' ${operation_dir}/${file_name} | grep -oE [0-9]+`
dfs_used_b=`sed -n '/"Used"/p' ${operation_dir}/${file_name} | grep -oE [0-9]+`
non_dfs_used_b=`sed -n '/"NonDfsUsedSpace"/p' ${operation_dir}/${file_name} | grep -oE [0-9]+`
capacity_free_b=`sed -n '/"Free"/p' ${operation_dir}/${file_name} | grep -oE [0-9]+`
num_live_datenodes=`sed -n '/NumLiveDataNodes/p' ${operation_dir}/${file_name} | grep -oE [0-9]+`
num_dead_datenodes=`sed -n '/NumDeadDataNodes/p' ${operation_dir}/${file_name} | grep -oE [0-9]+`
#总节点数等于活节点数加死节点数,若变量值为空则赋予默认值0
num_total_datenodes=$[ ${num_live_datenodes:=0} + ${num_dead_datenodes:=0} ]
#使用容量等于dfs使用容量加非dfs使用容量
capacity_used_b=$[ ${dfs_used_b} + ${non_dfs_used_b} ]
#bc将其值换算为以 TB 为单位并保留两位小数,awk将空缺的地方用0填充赋值给对应变量
configured_capacity_tb=`echo "scale=2;${configured_capacity_b} / $[ 1024**4 ]" | bc | awk '{printf "%.2f", $0}'`
dfs_used_tb=`echo "scale=2;${dfs_used_b} / $[ 1024**4 ]" | bc | awk '{printf "%.2f", $0}'`
non_dfs_used_tb=`echo "scale=2;${non_dfs_used_b} / $[ 1024**4 ]" | bc | awk '{printf "%.2f", $0}'`
capacity_free_tb=`echo "scale=2;${capacity_free_b} / $[ 1024**4 ]" | bc | awk '{printf "%.2f", $0}'`
capacity_used_tb=`echo "scale=2;${capacity_used_b} / $[ 1024**4 ]" | bc | awk '{printf "%.2f", $0}'`
#sed获取对应行内容,grep过滤出其值, awk保留两位小数赋值给对应变量
dfs_used_percent=`sed -n '/PercentUsed/p' ${operation_dir}/${file_name} | grep -oE [0-9]+.[0-9]+ | awk '{ printf("%.2f",$1) }'`
dfs_remaining_percent=`sed -n '/PercentRemaining/p' ${operation_dir}/${file_name} | grep -oE [0-9]+.[0-9]+ | awk '{ printf("%.2f",$1) }'`
#第一个sed获取对应行内容,第二个sed再过滤出 max 值赋值给对应变量,这里使用反引号结果错误替换为$()
#node_usage_max=$(sed -n '/NodeUsage/p' ${operation_dir}/${file_name} | sed -r 's/.*max\\":\\"(.+)%\\",.*/\1/')
#sed获取对应行信息,awk获取以 % 分隔的第三列信息即包含max的内容,grep过滤出单节点最大使用百分比
node_usage_max=`sed -n '/NodeUsage/p' ${operation_dir}/${file_name} | awk -F % '{ print $3 }' | grep -oE [0-9]+.[0-9]+`
#bc计算使用容量百分比保留两位小数,awk将空缺的地方用0填充赋值给对应变量,有的集群非dfs使用较高,需要添加容量使用百分比来监控发现不正常集群
capacity_used_percent=`echo "scale=2;${capacity_used_b} * 100 / ${configured_capacity_b}" | bc | awk '{printf "%.2f", $0}'`
#echo拼接变量为一条记录,追加输到指定文件中等待 Logstash 采集
echo "${configured_capacity_tb} ${dfs_used_tb} ${non_dfs_used_tb} ${capacity_free_tb} ${capacity_used_tb} \
${capacity_used_percent} ${dfs_used_percent} ${dfs_remaining_percent} ${node_usage_max} \
${num_live_datenodes} ${num_dead_datenodes} ${num_total_datenodes}" >> ${logstash_input_file}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值