监控磁盘使用率解决方案
Posted mercury-linux
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了监控磁盘使用率解决方案相关的知识,希望对你有一定的参考价值。
描述:有 100 台centos服务器, 相互之间内网 ssh 互通, 用户名密码已知,服务器ip 列表已知, 请设计一个技术方案,输出磁盘使用率超过 90%的服务器。要求写出详细的技术方案,涉及到的命令和脚本请写好代码,第三方库请介绍安装使用说明。
方案思路:
-
测试邮箱是否可用
-
设置定时任务每五分钟执行以下脚本查看占用情况
-
当发现占用比超过90%发送告警邮件
-
安装ansible服务,编译yml文件批量执行任务
测试邮件
#这里我们使用qq邮箱作为收件方 vim /etc/mail.rc set bsdcompat set from=xx@qq.com #收件名字 set smtp=smtp.qq.com #smtp地址 set smtp-auth-user=xx@qq.com #收件地址 set smtp-auth-password=xxxxxxx #smtp验证码,在qq邮箱操作,通过手机发送信息获取验证码 set smtp-auth=login #测试 echo "邮件测试(测试内容)" | mail -s "测试结果(主题)" xx@qq.com
脚本内容
vim /server/scripts/df.sh #!/bin/bash >/tmp/disk.log #这里是测试的阈值 D_Value=90 #取出磁盘占比百分比 D_Use=`df -h|grep ‘^/dev‘|awk ‘{print $5}‘|sed ‘s#%##‘` #取出主机私网ip地址 IP_Addr=`/sbin/ifconfig eth1|grep inet|grep -v 127.0.0.1|grep -v inet6|awk ‘{print $2}‘|tr -d "addr:"` for i in $D_Use do if [ $i -ge $D_Value ];then D_Name=`df -h|sed -n ‘/‘"$i"‘/p‘|awk ‘{print $1}‘` D_Part=`df -h|sed -n ‘/‘"$i"‘/p‘|awk ‘{print $6}‘` date>>/tmp/disk.log echo "$IP_Addr服务器的$D_Name(分区$D_Part)使用率超过$D_Value%,当前使用率为$i%。">>/tmp/disk.log fi done if [ -s /tmp/disk.log ];then cat /tmp/disk.log|mail -s "Warning - Used DISK" 1354586675@qq.com fi
定时任务
crontab -e #每五分钟执行一次脚本 */5 * * * * /server/scripts/df.sh
部署ansible
yum install epel-release -y yum install ansible -y ansible --version #设置主机清单,用序列匹配方法 vim /etc/ansible/hosts [ubantu_server] 172.16.1.[41:100] #分发密钥给100台主机 ssh-keygen ansible ubantu_server -m copy -a "src=/root .ssh/id_rsa.pub dest=/root.ssh" mkdir /etc/ansible/palybook #编写yml文件 vim df.yml - hosts: ubantu_server remote_user: root tasks: - name: 创建脚本目录 file: path: /server/scripts state: directory mode: 0755 - name: 推送脚本 copy: src: /server/scripts/df.sh dest: /server/scripts/ - name: 推送mail配置文件 copy: src: /etc/mail.rc dest: /etc/ force: yes - name: 创建定时任务 cron: name: "Disk percentage check" minute: "*/5" job: "sh /server/scripts/df.sh" #执行剧本 ansible-playbook ubantu.yml
以上是关于监控磁盘使用率解决方案的主要内容,如果未能解决你的问题,请参考以下文章