监控磁盘使用率解决方案

描述:有 100 台centos服务器, 相互之间内网 ssh 互通, 用户名密码已知,服务器ip 列表已知, 请设计一个技术方案,输出磁盘使用率超过 90%的服务器。要求写出详细的技术方案,涉及到的命令和脚本请写好代码,第三方库请介绍安装使用说明。

方案

方案思路:

  • 测试邮箱是否可用
  • 设置定时任务每五分钟执行以下脚本查看占用情况
  • 当发现占用比超过90%发送告警邮件
  • 安装ansible服务,编译yml文件批量执行任务

测试邮件

#这里我们使用qq邮箱作为收件方
vim /etc/mail.rc
set bsdcompat
set from=[email protected] #收件名字
set smtp=smtp.qq.com  #smtp地址
set smtp-auth-user=[email protected]  #收件地址
set smtp-auth-password=xxxxxxx  #smtp验证码,在qq邮箱操作,通过手机发送信息获取验证码
set smtp-auth=login

#测试
echo "邮件测试(测试内容)" | mail -s "测试结果(主题)" x[email protected]

脚本内容

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

原文地址:https://www.cnblogs.com/Mercury-linux/p/12695005.html

时间: 2024-08-11 05:43:55

监控磁盘使用率解决方案的相关文章

shell 监控磁盘使用率【转】

方案一: disks=(`df |sed 1d | awk '{print $1,$5}'|tr -d %`) len=${#disks[@]} for ((i=1;i<=$len;i=i+2));do if [ ${disks[i]} -gt 80 ];then echo "${disks[$i-1]} ${disks[$i]}" fi done 方案二: df -Th|awk -F '[ |%]+' 'NR>1 {if($6>80) print $1}' 方案三:

Windows 8.1 100% 磁盘使用率解决方案

前段时间我的win8电脑爆卡!动不动就卡死,一点都动不了. 好不容易打开了任务管理器,发现disk usage: 100%,实在是不理解,磁盘使用率100%怎么会影响流畅度?如果是CPU或内存还好理解些. 更难理解的是,I/O的实际吞吐量并不高,但就是disk使用率100%……对win8的印象分再降!差评!! 在网上搜了一下解决方案: 1.打开控制面板->Administrative Tools(管理工具)->Services(服务) 找到Superfetch,关掉这个服务. 这个服务据说是提

zabbix监控磁盘分区空间

Zabbix之监控磁盘容量 两种监控方式: 一种:监控磁盘使用率. zabbix添加对磁盘分区的监控 首先服务器上的数据主要在/www上 /dev/sda8     ext4    299G  139G  146G  49% /www GUI--配置--主机--选择一台主机--项目--创建项目 类型zabbix代理(被动式) 键值vfs.fs.size[/www,pfree] 数据类型:数字的(浮点) 单位% 存档 这里需要说明一下 我想要监控的是某个分区的空闲(free)空间百分比 vfs.f

记录一次根分区磁盘使用率超过80%

问题描述: 收到监控报警,某台服务器根分区磁盘使用率达到 80% 故障排查: 上线查看,根分区只安装软件,一般生成的数据都在别的分区中,挂载到单独的磁盘 经过排查 du -sh,锁定占据磁盘空间的目录为 /var/spool/postfix/maildrop/,占用空间 27G 查资料显示,该文件夹有大量数据是因为任务计划 cron 会将执行脚本中的输出.警告.错误等发送给 root 用户, 而本机正是一台专门执行任务计划的服务器,且没有运行 Sendmail .Postfix 等邮件服务器,所

python笔记--磁盘使用率

方法一: 使用commands.getoutput调用shell命令df获取磁盘使用率: import commands >>> import commands >>> disk_use=commands.getoutput('df -h') >>> disk_use 'Filesystem      Size  Used Avail Use% Mounted on\n/dev/sda2        18G  5.7G   12G  34% /\nt

Linux/Unix shell 脚本监控磁盘可用空间

Linux下监控磁盘的空闲空间的shell脚本,对于系统管理员或DBA来说,必不可少.下面是给出的一个监控磁盘空间空间shell脚本的样本,供大家参考. 1.监控磁盘的空闲空间shell脚本 [python] view plain copy print? [email protected]:~/dba_scripts/custom/bin> more ck_fs_space.sh #!/bin/bash # --------------------------------------------

Linux下监控磁盘使用量并在超过阀值后自动发送报警邮件

最近Linux服务器磁盘使用量经常到100%,直到影响到正常服务出现故障才会去注意,做不到防患于未然,今天在网上搜集了资料,加上自己修改,写了一个shell脚本用于实时监控磁盘使用量并在超过阀值后自动发送报警邮件. 脚本简单说明:用df命令查看磁盘使用量信息,超过脚本设置的阀值(critical=90)90%,就会自动用sendEmail命令发送报警邮件(邮件smtp.email等需自行修改成真实存在的). 1.首先下载监测脚本(点击下载)或直接复制下面脚本代码存为disk_check.sh文件

Cacti监控磁盘IO(rhel)

1.检查net-snmp是否支持IO监控 snmpwalk -v 1 -c public 监控机的IP UCD | more 执行如上命令,如果返回类似如下数据,则表示支持disk io的监控,否则需要重新编译增加diskio-module模块. 1. UCD-DISKIO-MIB::diskIOIndex.1 = INTEGER: 1 2. UCD-DISKIO-MIB::diskIOIndex.2 = INTEGER: 2 3. UCD-DISKIO-MIB::diskIOIndex.3 =

[Linux监控]磁盘空间大小

echo 192.168.10.69>>ip.list ------------------------------------------- #!/bin/bash #注意if和[]之间的空格 rm -f ~/fanr/shell/DiskUsageAlert/out.print out=$(cat ~/fanr/shell/DiskUsageAlert/ip.list) echo $out for _IP in $out do ssh [email protected]$_IP df |