linux系统监控系统

根据公司需求需要一个web程序展示一个分布式服务器系统的各个主机状态,方便随时查看系统状态,同时还需要在系统出现问题时进行预警。这个系统纯粹是让我自由发挥,所以整个流程都是由我自己定的,有不合理的地方大家看到了请指出,谢谢。

现在进入正题,首先说下这个项目的开发思路,我自己主要是做java开发的,所以看到这个项目的第一反应就是如何使用java去实现,java查询硬件信息的jar是sigar.jar包,代码不算复杂,网上教程也很多,但是因为这个在每台主机上都去再装一个软件服务器(tomcat),感觉太麻烦了。后来想起可以用python写,我们的服务器系统自带有python解释器,python代码也比较简单,不需要安装什么东西就可以直接使用,于是就开始着手用python写了。

首先我们现在的服务器虚拟主机一共有9个,除了一个专门配置路由的不需要这套系统,别的主机都是需要的。现在说下项目结构,8个主机每个主机都备一套后台运行的系统,使用定时器定时查看系统状态,出现问题就发送邮件预警。下面是代码:

!/bin/bash
# 监控系统后台程序


my_ip=$(ifconfig eth0 | grep "inet addr" | awk '{print $2}' | cut -d ":" -f 2)
now_date=$(date)
# 空闲cpu
cpu_id=$(vmstat | head -n 3 | tail -n 1 | awk '{print $15}')
declare -i cpu=${cpu_id%.*}


if [ $cpu -le 30 ]
        then
        echo "IP:'$my_ip',时间:'$now_date',空闲CPU剩余小于30%,请及时处理!" | mail -s "警告" xxxxxx@qq.com
fi


# 内存
# 交换分区总量
swap_total=$(free -m | grep Swap | awk '{print $2}')
swap_used=$(free -m | grep Swap | awk '{print $2}')
declare -i total=${swap_total%.*}
declare -i used=${swap_used%.*}
var=$(awk 'BEGIN{printf "%.2f\n",'$used'/'$total'}')
if [ $(awk -v num1=$var -v num2=0.30 'BEGIN{print (num1<num2)?"1":"0"}') == 1 ]
        then
        echo "IP:'$my_ip',时间:'$now_date',交换分区的剩余内存小于30%,请及时处理! " | mail -s "警告" xxxxxx@qq.com
fi


# 磁盘空间
for d in $(df -P | grep /dev | awk '{print $5}' | sed 's/%//g')
        do
                if [ $d -gt 80 ]
                        then
                        echo "IP:'$my_ip',时间:'$now_date',有磁盘空间使用大于80%,请及时处理! " | mail -s "警告" xxxxxx@qq.com
                fi
        done

这些是基本的检查项,还需要的可以自行添加。使用定时任务的时候出现个问题,crontab -e和/etc/crontab还有命令行手动执行脚本的时候有些不一样,手动执行代码的时候没问题,但是放在定时器里面会出现命令无法识别问题,比如ifconfig eth0 | grep "inet addr" | awk '{print $2}' | cut -d ":" -f 2,在crontab -e里是无法识别的,而且不报错,再比如top -n 1在这两个定时器设置里都是无法识别的,同样不报错。这个问题的原因现在还没有搞清楚,不过现在写的方式在/etc/crontab都是可以支持的。

好了继续说结构,除了这个后台预警系统,还需要在其中的7台主机提供接口,接口返回本机的硬件信息,用来给第8台主机做内网调用,第8台主机对所有主机的硬件信息做一个汇总,也就是服务器的入口,然后给java web程序提供一个访问入口,最后web程序拿到数据怎么处理就看每个人需求了,这里就不多说了,暂时写到这里,之后项目完成后再添加。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值