发送邮件Python程序

#!/usr/bin/python
# -*- coding: UTF-8 -*-
import sys
import smtplib
import email.mime.multipart
import email.mime.textserver = 'smtp.163.com'
port = '25'def sendmail(server,port,user,pwd,msg):smtp = smtplib.SMTP()smtp.connect(server,port)smtp.login(user, pwd)smtp.sendmail(msg['from'], msg['to'], msg.as_string())smtp.quit()print('Email has send out !')if __name__ == '__main__':msg = email.mime.multipart.MIMEMultipart()msg['Subject'] = 'WARNNING'msg['From'] = 'python4_mail@163.com'msg['To'] = 'xxxxxx@xxx.xxx'user = 'python4_mail'pwd = 'sbalex3714'content='%s\n%s' %('\n'.join(sys.argv[1:4]),' '.join(sys.argv[4:]))txt = email.mime.text.MIMEText(content, _charset='utf-8')msg.attach(txt)sendmail(server,port,user,pwd,msg)

  编辑为/usr/bin/mail,添加可执行权限

监控脚本

#!/bin/bashcpu_limit=90
mem_limit=90
disk_inode_limit=90
disk_space_limit=90
disk='/dev/sda1'function bc_install(){rpm -qa |grep '^bc.*$' >> /dev/nullif [[ $? -ne 0 ]]; thenyum install bc -yfi
}function nettools_install(){rpm -qa |grep net-tools >> /dev/nullif [[ $? -ne 0 ]]; thenyum install net-tools -yfi
}function monitor_cpu(){cpu_free=`vmstat 1 5 |awk 'NR>=3{x = x + $15} END {print x/5}' |awk -F. '{print $1}'`cpu_use=$((100-cpu_free))if [[ $cpu_use -gt $cpu_limit ]]; thenmsg="TIME:$(date +%F_%T)HOSTNAME:$(hostname)IPADDR:$(ifconfig |awk 'NR==2{print $2}')MSG:CPU usage exceeds the limit,current value is ${cpu_use}%"echo $msg/usr/bin/mail $msgfi
}function monitor_mem(){mem_total=`free |awk 'NR==2{print $2}'`mem_use=`free |awk 'NR==2{print $3}'`mem_per=`echo "scale=2;$mem_use/$mem_total" |bc -l|cut -d. -f2`if [[ $mem_per -gt $mem_limit ]]; thenmsg="TIME:$(date +%F_%T)HOSTNAME:$(hostname)IPADDR:$(ifconfig |awk 'NR==2{print $2}')MSG:Memory usage exceeds the limit,current value is ${mem_per}%"echo $msg/usr/bin/mail $msgfi
}function monitor_disk_inode(){inode_use=`df -i $disk |awk 'NR==2{print $5}' |cut -d% -f1`if [[ $inode_use -gt $disk_inode_limit ]]; thenmsg="TIME:$(date +%F_%T)HOSTNAME:$(hostname)IPADDR:$(ifconfig |awk 'NR==2{print $2}')MSG:Disk inode usage exceeds the limit,current value is ${inode_use}%"echo $msg/usr/bin/mail $msgfi
}function monitor_disk_space(){space_use=`df $disk |awk 'NR==2{print $5}'|cut -d% -f1`if [[ $space_use -gt $disk_space_limit ]]; thenmsg="TIME:$(date +%F_%T)HOSTNAME:$(hostname)IPADDR:$(ifconfig |awk 'NR==2{print $2}')MSG:Disk space usage exceeds the limit,current value is ${space_use}%"echo $msg/usr/bin/mail $msgfi
}bc_install
nettools_install
monitor_cpu &>> /tmp/monitor.log
monitor_mem &>> /tmp/monitor.log
monitor_disk_inode &>> /tmp/monitor.log
monitor_disk_space &>> /tmp/monitor.log

  

转载于:https://www.cnblogs.com/freelandun/p/6754814.html

编写监控脚本,监控集群内所有服务存活状态,内存、磁盘剩余率检测,异常则发送报警邮件...相关推荐

  1. shell脚本编写监控本机内存和硬盘剩余空间,剩余内存小于 500M、根分区剩余空间小于 1000M时,发送报警邮件给 root 管理员

    监控本机内存和硬盘剩余空间,剩余内存小于 500M.根分区剩余空间小于 1000M时,发送报警邮件给 root 管理员 # 创建shell脚本文件 vim free.sh #!/bin/bash di ...

  2. k8s篇-集群内的DNS原理与配置

    背景:最近公司有个需求,要在POD应用容器里面能够访问到一些外部域名,这些域名都在一台自建的DNS服务器上做了解析绑定.如果直接在Pod容器里的/etc/hosts文件中设置域名解析,或修改/etc/ ...

  3. k8s篇-集群内的DNS原理与配置和K8s hosts 解析 HostAliases

    背景:最近公司有个需求,要在POD应用容器里面能够访问到一些外部域名,这些域名都在一台自建的DNS服务器上做了解析绑定.如果直接在Pod容器里的/etc/hosts文件中设置域名解析,或修改/etc/ ...

  4. kind kubernetes 集群内如何通过 helm 部署定制化 Prometheus-Operator?

    文章目录 1. Prometheus 简介 2. Prometheus 优势 3. Prometheus 架构图 4. Prometheus-Operator 简介 5. Prometheus-Ope ...

  5. 内网集群 无法通信_记一次集群内无可用http服务问题排查

    记一次集群内无可用http服务问题排查 1.摘要 前一阵子发现服务会有偶发的服务不可用的情况,记录一下这个问题的排查过程. 现象是这样的:每天到了某个时间点,就会出现服务不稳定的情况,偶发接口调不通. ...

  6. kubernetes集群内调度与负载均衡

    kubernetes负载均衡包括集群外负载均衡和集群内负载均衡,专业术语叫南北流量和东西流量,本文主要讲述集群内负载均衡(东西流量).本文第一部分会讲述kubernetes组件总览,第二部分会讲述ku ...

  7. Hive环境的安装部署(完美安装)(集群内或集群外都适用)(含卸载自带mysql安装指定版本)...

    Hive环境的安装部署(完美安装)(集群内或集群外都适用)(含卸载自带mysql安装指定版本) Hive 安装依赖 Hadoop 的集群,它是运行在 Hadoop 的基础上. 所以在安装 Hive 之 ...

  8. 【Elasticsearch】我在 Elasticsearch 集群内应该设置多少个分片?

    1.概述 转载:https://www.elastic.co/cn/blog/how-many-shards-should-i-have-in-my-elasticsearch-cluster Ela ...

  9. 一次解决Kubernetes集群内无法访问服务的问题过程

    文章目录 一次解决Kubernetes集群内无法访问服务的问题过程 前言 解决过程 先检查要访问的服务是否正常 在busybox中测试 检查kube-dns 检查Calico 参考文档 一次解决Kub ...

最新文章

  1. 《windows核心编程系列》二谈谈ANSI和Unicode字符集
  2. 设计模式之观察者模式(Observer)摘录
  3. Spring事务传播特性实例解析
  4. Servlet 全局验证是否登录
  5. 剑指offer:在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。
  6. 网络工程计算机文科可以报考么,文科生可报考自考本科网络工程吗?
  7. 腾讯计费:助力游戏千亿级营收,覆盖180多个国家
  8. spring-在配置文件中配置DAO时直接引用DataSource
  9. Asp.Net递归遍历页面控件实例
  10. BZOJ 3329 Xorequ 数字DP+矩阵乘法
  11. PAIP.img ROM文件提取APK
  12. pyqtgraph中文文档
  13. postman安装html插件安装,Postman 安装与更新
  14. php amr时长,amr是什么文件
  15. Ubuntu18.04+TITAN XP+anaconda+cuda10+cudnn+pytorch
  16. Cesium 关于Bently模型的处理(dgn格式)
  17. 【AWS云从业者基础知识笔记】——模块10:云计算之旅
  18. [Unity 学习] Unity 入门学习及第一个游戏
  19. http协议中get和post的区别
  20. DOS命令之COPY

热门文章

  1. 第5章 MySQL高可用架构设计
  2. python从包中导入模块_Python中包,模块导入的方法
  3. Linux 初始化之 Systemd机制简介
  4. OSSemPost()--发出一个信号量
  5. 浅析AES和RSA加密算法的区别和适用场景
  6. 详解Redis的架构演化之路(附16张图解)
  7. Interceptor拦截器 -- gRPC生态里的中间件
  8. 在scrapy上使用cookie模拟登录
  9. Python入门3_之使用字符串
  10. 不常用却很有妙用的事件及方法