服务器监控客户端进程

服务器程序:

运行系统:ubuntu

环境:tornado

   mongodb 

#! /usr/bin/env python
#coding=utf-8

from tornado.tcpserver import TCPServer
from tornado.ioloop  import IOLoop
import pymongo
import json

class Connection(object):
    clients = set()
    def __init__(self, stream, address):
        Connection.clients.add(self)
        self._stream = stream
        self._address = address
        self._stream.set_close_callback(self.on_close)
        self.read_message()
        # print "new client ", address 

    def read_message(self):
        self._stream.read_until(‘\n‘, self.broadcast_messages)  

    def broadcast_messages(self, data):
        # print "client said:", data[:-1], self._address
        print ‘client said‘,data[:-1]
        # print ‘data[-2]‘,data[-2]
        for conn in Connection.clients:
            conn.send_message(data)
        self.read_message()
        #data base
        if data[0]==‘[‘:
            conn = pymongo.Connection("localhost", 27017)
            db = conn[‘networkSecurity‘]
            processInfo=db[‘processInfo‘]
            decodeinfos=json.loads(data[:-1])
            # print ‘after:‘,type(decodeinfos)
            for info in decodeinfos:
                processInfo.insert({‘name‘:info[u‘name‘],‘memeory‘:info[u‘memeory‘]})
            print ‘success to store the data!‘

    def send_message(self, data):
        self._stream.write(data)
        # self._stream.write(‘yessssssssssssss‘) 

    def on_close(self):
        print "A user has left the chat room.", self._address
        Connection.clients.remove(self)  

class ChatServer(TCPServer):
    def handle_stream(self, stream, address):
        print "New connection :", address, stream
        Connection(stream, address)
        print "connection num is:", len(Connection.clients)

if __name__ == ‘__main__‘:
    print "Server start ......"
    server = ChatServer()
    server.listen(8000)
    IOLoop.instance().start() 

客户端程序:

运行系统:win7 64位

环境: python 2.7

    psutil库

#! /usr/bin/env python
#coding=utf-8
import socket
import time
import psutil
import json

HOST = ‘192.168.111.130‘    # The remote host
PORT = 8000           # The same port as used by the server
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST, PORT))

#the info of process
plist=[]
for pnum in psutil.pids():
    p = psutil.Process(pnum)
    pinfo={‘name‘:p.name(),‘memeory‘:p.memory_percent()}
    plist.append(pinfo)
    # print u"进程名 %-20s  内存利用率 %-18s 进程状态 %-10s 创建时间 %-10s "%(p.name(),p.memory_percent(),p.status(),p.create_time())
# print ‘plist : ‘,plist

s.sendall(json.dumps(plist))
# time.sleep(5)
s.sendall(‘\n‘)

data = s.recv(1024)

print ‘Received‘, repr(data)

time.sleep(6000)
s.close()
时间: 2024-10-25 20:14:02

服务器监控客户端进程的相关文章

jprofiler_监控远程linux服务器的JVM进程(转 非常棒)

几天前写了一篇文章,jprofiler_监控远程linux服务器的tomcat进程(实践),介绍了使用jprofiler怎样监控远程linux的tomcat进程,这两天想了想,除了可以监控tomcat进程,是不是也可以监控其它的Java进程,可是找了一圈都是监控tomcat,于是就打算亲手实验一下 本文打算把一个简单的java程序打包成jar包,并部署到linux服务器运行,然后使用jprofiler监控该jar包 java程序可参考文章:Java部署_IntelliJ创建一个可运行的jar包(

服务器监控cacti

第九章:服务器监控系统cacti 防伪码:海阔天空 前言:在企业网络运维过程中,管理员必须时刻关注服务器的运行状态,如CPU.内存.磁盘空间使用情况等.为了能够及时的发现问题,尽量减少故障的发生.当网络中的设备,服务器等数量较多时,可以部署一套监控系统来实时跟踪服务器,我们通常会借助一些软件来实现.今天就以Cacti套件为例,介绍服务器集中监测体系的构建和使用. 今天所讲的cacti服务器监控系统与windows操作系统中的"性能监视器"属于同一类,都是为了监控cpu占用,内存使用,运

服务器监控系统cacti

前言:在企业网络运维过程中,管理员必须时刻关注服务器的运行状态,如CPU.内存.磁盘空间使用情况等.为了能够及时的发现问题,尽量减少故障的发生.当网络中的设备,服务器等数量较多时,可以部署一套监控系统来实时跟踪服务器,我们通常会借助一些软件来实现.今天就以Cacti套件为例,介绍服务器集中监测体系的构建和使用. 今天所讲的cacti服务器监控系统与windows操作系统中的"性能监视器"属于同一类,都是为了监控cpu占用,内存使用,运行进程数,磁盘空间,网卡流量等各种数据.但不同的是,

Ubuntu ssh服务器和客户端的安装和使用

1. 安装服务器端 sudo apt-get install openssh-server 确认是否开启ssh ps -e| grep ssh 如果有sshd进程表示启动了. 配置文件 /etc/ssh/sshd_config 2. 启动.停止.重启 启动 sudo /etc/init.d/ssh start 停止 sudo /etc/init.d/ssh stop 重启 sudo /etc/init.d/ssh restart 退出ssh exit 3. 客户端登录 SecureCRT 5.1

nagios监控客户端的几个注意

1.nagios要添加一个监控服务,监控客户端上扫描引擎的的数量,引擎运行在kvm虚拟机上,如下: [[email protected] libexec]# virsh list Id Name                 State---------------------------------- 31 avpscan_000          running 32 avpscan_001          running 33 avpscan_002          running 

Windows zabbix监控远程进程实现机制

最近负责zabbix监控部署方面的工作,需要完成本地服务端监控远程虚拟机的运行状态(CPU.打开的进程等),与大家分享下我的实现方法. (1) 首先,需要实现记录zabbix客户端的进程的批处理:zabbix_task.bat; zabbix_task.bat内容如下: @echo off chcp 65001 tasklist /v |findstr "%username%" > c:/zabbix_temp.txt  #进程路径根据个人习惯设置 pause (2) 其次,实现

Muduo网络库实战(二):实现服务器与客户端的连接

1. 方案的确定 1)基本需求 用户1000+, IO压力不大: 多个客户端打开网站,输入查询字符串strclient,发送给服务器=>服务器接收客户端发过来的数据并处理,将结果返回给客户端: 2)并发网络服务程序设计方案 详见:<Muduo_网络库使用手册>的1.6节-<详解Muduo多线程模型> @ muduo中TcpServer模式的选择:多线程模式 模式一:单线程,accept与TcpConnection用同一个线程做IO; 模式二:多线程,accept与EventL

【Linux--中级篇】服务器监控Cacti

服务器监控Cacti 1.实验环境: 主机 操作系统 IP地址 主要软件 主控端 CentOS6.5x86_64 192.168.10.15 Rrdtool-1.4.8.tar.gz Cacti-0.8.8b.tar.gz 被控端 CentOS6.5x86_64 192.168.10.18 Win7客户机 192.168.10.5 2.实验步骤: 1.主控端配置 1)配置LAMP环境 安装mysql数据库 配置apache与php 2> 安装rrdtool和net-snmp 通过yum确认并安装

zabbix 监控特定进程

由于一些服务器上跑着一些重要程序,需要对它们进行监控,公司用的是zabbix监控,之前都是在zabbix中添加自定义脚本对特定程序进行监控,最近看了zabbix的官方文档,发现原来强大的zabbix居然能监控程序是否运行,并能监控其使用的内存大小,以下是我的实践记录: 1. 在特定机器或模板上创建新的监控项,点击Key 后面的Select 按钮,选择如下两项,一项是用来监控特定进程的数量,另一项是用来监控进程使用内存的大小. 2.以下是对squid进程的监控配置,key中的参数说明,第一个参数是