zoukankan      html  css  js  c++  java
  • 监控磁盘使用率解决方案

    描述:有 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 centos_server -m copy -a "src=/root .ssh/id_rsa.pub dest=/root.ssh"
    
    
    mkdir  /etc/ansible/palybook
    
    #编写yml文件
    vim df.yml
    - hosts: centos_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
  • 相关阅读:
    波段是金牢记六大诀窍
    zk kafka mariadb scala flink integration
    Oracle 体系结构详解
    图解 Database Buffer Cache 内部原理(二)
    SQL Server 字符集介绍及修改方法演示
    SQL Server 2012 备份与还原详解
    SQL Server 2012 查询数据库中所有表的名称和行数
    SQL Server 2012 查询数据库中表格主键信息
    SQL Server 2012 查询数据库中所有表的索引信息
    图解 Database Buffer Cache 内部原理(一)
  • 原文地址:https://www.cnblogs.com/Mercury-linux/p/12695005.html
Copyright © 2011-2022 走看看