Bash监控Logstash写入HDFS性能脚本

来源:互联网 发布:好看的h动画 知乎 编辑:程序博客网 时间:2024/06/13 13:55

我们通过这五个方面来进行监控:写入HDFS文件的大小、CPU使用率、内存使用率、NameNode进程的CPU、内存使用率和DataNode进程的CPU、内存使用率。

(1)HDFS文件大小:

#!/bin/bash##获取写入文件的大小(单位为B)path='XXXXXX'size=`hadoop fs -count ${path} | awk '{print $3}'`
(2)CPU使用率:

使用top得到cpu的使用情况,再截取出CPU的相关使用率字符串(由于使用top -n 1得到的结果是一样的)

#!/bin/bash##获取CPU的使用率cpu_user_used=`top -b -n 2 | grep Cpu | tail -1 | awk '{print $2}'`
(3)内存使用率:

使用量除以总量便可得到使用率

#!/bin/bash##获取内存的使用率mem_used=`free | grep Mem | awk '{print $3/$2}'`
(4)NameNode进程的CPU、内存使用率:

NameNode和DataNode的进程我们使用JPS得到进程的PID;由于grep会截取出SecondaryNameNode和NameNode,这里用grep -w进行全匹配

#!/bin/bash##获取NameNode的CPU、内存使用率namenode_pid=`jps | grep -w NameNode | awk '{print $1}'`##echo $namenode_pidnamenode_use=`top -b -n 2 -d 3| grep ${namenode_pid} | grep hdfs | tail -1 | awk '{print "%CPU="$9 ",%MEM=" $10}'`
(5)DataNode进程的CPU、内存使用率:

#!/bin/bash##获取DataNode的CPU、内存使用率datanode_pid=`jps | grep DataNode | awk '{print $1}'`##echo $datanode_piddatanode_use=`top -b -n 2 -d 1| grep ${datanode_pid} | grep hdfs | tail -1 | awk '{print "%CPU="$9 ",%MEM=" $10}'`
之后,我们便用一个脚本引用上面几个脚本文件,并将结果输出到文件:
result="${size}B,    ${cpu_user_used}   ${mem_used},    ${namenode_use},        ${datanode_use}"echo $resultecho $result >> result.txt
运行脚本,我们可以得到以下结果:






原创粉丝点击