Bash
1 前言
一个问题,一篇文章,一出故事。
笔者生产环境的Zabbix有设置监控GlusterFS,但笔者想稳妥点同时也通过脚本实现监视,于是创建 以下脚本。
关于GlusterFS环境,你可以参阅如下链接,
2 最佳实践
2.1 配置监控节点的公钥认证
请参阅有以上配置公钥人认证,以允许监视节点SSH到GlusterFS的节点时无需输入密码,本章可使用如下命令验证,
ssh docker01 ssh docker02 ssh docker03
2.2 配置邮件空客户端
注:空客户端允许服务器使用“mail”命令发送邮件
2.3 创建监视脚本
vim ~/scripts/monitorGluster.sh
加入如下配置,
#!/bin/bash glusterServers="docker01 docker02 docker03" mailFrom="admin@cmdschool.org" mailTo="will@cmdschool.org" mailMessage="/tmp/glusterMailMessage" infoFile="/tmp/glusterInfo" for i in $glusterServers; do glusterServer="$i" ping -c 1 "$glusterServer" > /dev/null 2>&1 if [ $? -ne 0 ]; then continue fi ssh "$glusterServer" gluster volume status all detail > "$infoFile" if [ $? -eq 0 ]; then break fi done echo "GlusterFS brick failure below, please notify admin to fix," > "$mailMessage" glusterBrick="" glusterStatus="" IFS=$'\n' j=0 for i in `cat "$infoFile" | egrep "^Brick|^Online"`; do let j=j+1 let k=$j%2 if [ $k -ne 0 ]; then glusterBrick=`echo $i | cut -d':' -f2-3 | sed 's/^ //g'` else glusterStatus=`echo $i | cut -d':' -f2 | sed 's/^ //g'` if [[ "$glusterStatus" == Y* ]]; then continue fi echo "$glusterBrick" >> "$mailMessage" fi done if [ `cat "$mailMessage" | wc -l` -gt 1 ]; then mailSubject='GlusterFS brick failure!' mail -s "$mailSubject" -r "$mailFrom" "$mailTo" < "$mailMessage" fi
以上主要参数定义如下,
– 核心命令“gluster volume status all detail”获取存储节点状态后其他代码根据返回判断及邮件通知
– 参数“glusterServers”定义GlusterFS的数据节点,程序逐个确定节点是否可用并取存储信息后退出
– 参数“mailFrom”定义警告邮件的发件人
– 参数“mailTo”定义警告邮件的接收人
2.4 创建脚本触发
crontab -e
加入如下配置,
*/5 * * * * sh ~/scripts/monitorGluster.sh
没有评论