• 监控磁盘使用率解决方案


    描述:有 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
  • 相关阅读:
    http协议及http协议和tcp协议的区别
    Fastcgi协议定义解释与说明
    web请求响应
    Linux网络编程:一个简单的正向代理服务器的实现
    Nginx-请求处理与响应
    Nginx事件管理机制-epoll
    负载均衡
    Nginx-进程模型
    [转载]NGINX原理分析 之 SLAB分配机制
    Nginx惊群处理
  • 原文地址:https://www.cnblogs.com/Mercury-linux/p/12695005.html
Copyright © 2020-2023  润新知