Python实现linux下服务器的监控

Python实现linux下服务器的监控

因为课题写的就是服务器架构相关的东西,最后实验需要监控整个服务器持续运行状态下的各项性能指标。最近得空,就把之前用过的简单方法分享出来。如何用Python脚本实现对服务器的自动监控,具体步骤如下(代码可直接使用):

建立 test.py文件,具体代码如下:

------------------------------------------

#!/usr/bin/python

import subprocess

 

w_return =subprocess.check_output(['/usr/bin/w'])

w_12 =w_return.split(" ")[12]

w_13 =w_return.split(" ")[13]

w_14 =w_return.split(" ")[14]

 

cpuload_1 =w_12.split(",")[0]

cpuload_5 =w_13.split(",")[0]

cpuload_15 =w_14.split("\n")[0]

 

iostat_return =subprocess.check_output(['/usr/bin/iostat'])

iostat_list =(filter(lambda x: x, iostat_return.split(' ')))

iostat =iostat_list[12:17]

iostat.append(iostat_list[17].split("\n")[0])

 

mem_return =subprocess.check_output(['/usr/bin/free'])

mem_list = (filter(lambdax: x, mem_return.split(' ')))

mem = mem_list[6:11]

mem.append(mem_list[11].split("\n")[0])

 

tcp_stats =subprocess.check_output(['./test.sh'])

tcp_ESTABLISHED =tcp_stats.split("\n")[0]

tcp_TIME_WAIT =tcp_stats.split("\n")[1]

 

sum_list =[tcp_ESTABLISHED, tcp_TIME_WAIT, cpuload_1, cpuload_5, cpuload_15]

for i in iostat:

    sum_list.append(i)

for v in mem:

    sum_list.append(int(v)/1024)

 

testfile =open('/tmp/test.txt', 'a')

for value in sum_list:

    testfile.write(str(value))

    testfile.write("\t")

testfile.write("\n")

testfile.close()

------------------------------------------

 

 

2. 建立 test.sh文件,在里面填入:

------------------------------------------

#!/bin/bash

netstat -tanl | grepESTABLISHED | wc -l

netstat -tanl | grepTIME_WAIT | wc -l

------------------------------------------

    并给予 test.sh 文件以执行权限:

    $sudo chmod +x test.sh

 

 

3. 建立输出文件:

 

# touch /tmp/test.txt

 

4. 建立 start.sh文件,在里面填入

------------------------------------------

#!/bin/bash

while true ;do

    pythontest.py

    sleep1

done

------------------------------------------

 

 

5. 启动

$ bash start.sh &

需要保证除 test.txt 之外,其他文件都在一个文件夹下面

 

6. 停止:

    a. 查找到后台进程的PID

        $ps aux | grep start.sh

    b.kill 掉进程

        $kill -9 PID

 

7. 去重定向输出的txt文本中将TIME_WAITtcp_ESTABLISHED等这些服务器的指标参数粘贴到excel中,再通过excel的制图,可以很直观的分析这些数据。

因为以上的实验是在别的机器上做的,所以这儿没有以前的实验结果图了。

这是简单的脚本实现监控。再推荐一个很强大很好用的监控软件,Zabbix。我的课题前期测试是用第一个方法,最后正式实验是用zabbix的,在web中可以很直观的看到各项数据。zabbix的我是用别人写好的方法,直接访问web的,所以zabbix具体的使用就不写了。但可以说个大概的流程,如下:

被监控服务器: 上面写一个脚本。每次执行脚本就能获取当前内存的使用值。监控服务器: 上面跑一个程序,每分钟自动去 被监控服务器执行“查看内存使用脚本”,并且将值存储到数据库中,然后通过java 或者 php 将 mysql 里面的数据取出来进行展示。

zabbix 的大致实现就这样,zabbix agent 内部内置了很多监控项,还可以自定义监控项。然后监控的结果,zabbixserver 会根据规定的时候去获取。获取到了之后,zabbix server会将值存储到设置好的数据库里面去,zabbix 支持多种数据库,比较常用的就是 MySQL 。

粘几张我的zabbix监控来的实验图。可以看出来,非常清晰的。额,这些图用在我的论文中了,就不多粘了。






评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值