为了实现对win服务器的内存、cpu、进程、网络的使用量的监控,需要定时执行一些命令行工具,把监测结果重定向到一个日志文件 
然后做个工具读入此日志文件,以便回看 
——相当于一个能记录长期的历史数据、支持重播的任务管理器(它的网络还缺少:进程-连接-数据量的信息(每个进程有哪些网络连接,每个连接的双方ip、端口、已经收发的数据量、即时的带宽占用))。如果有这个工具,就没有必要自己做了 日志阅读工具可以显示每次的监控结果,在grid里显示时,与上一次的结果比较,数据变大就用红色背景,变小就用绿色背景,以便快速发现数据的变化——最好是能以曲线显示每一项监控指标的变化情况(指标太多了:每个时刻都有n个进程,每个进程都有固定的m个指标,不确定的k个连接) 当然如果有现成的,也可以。我搜了一下是没搜到,所以才考虑自己做。

解决方案 »

  1.   

    曲线恐怕就有点不好办了,用GDI画?感觉也不怎么好
    至于那个网络,可以用cmd命令netstat完成,但如果要求精确的话,还是找个防火墙的代码慢慢研究封包吧
      

  2.   

    曲线恐怕就有点不好办了,用GDI画?感觉也不怎么好 
      

  3.   

    画曲线不是问题吧:
    双击每个指标(单元格),就把它的前、后n分钟之间的数据画出来
    对于最关注的几个指标,可以始终显示几条曲线关键是进程-连接(对方ip、端口、带宽、已收发量)的信息不好取
    netstat只有对方ip、端口,不知道是哪个进程的,也不知道带宽、已收发量这个增强改造工作如果是微软或SYSINTERNALS来做,应该不是什么难题
      

  4.   

    带宽收发量应该也只有通过数据包统计了,sysinternals倒是弄了个process monitor,但是那东东也没有检测网络数据的功能啊
      

  5.   

    现在的进程信息,就是通过pslist得到的进程的网络带宽,天网防火墙是做的很不错:
    可惜不知道怎么可以简单实现但是这个功能的确很重要,有一天看到
    但是不知道是什么应用、对方ip是多少——查看http/ftp日志都没有对应的记录
      

  6.   

    查看进程对应端口有直接api操作的,不过不知道win7有没变化
      

  7.   

    以前看过一点点win32sdk,楼主搞的实在比较高深一点,不懂
     学习
      

  8.   


    netstat 可以知道是那个进程
      

  9.   

    读取整个网卡(端口)的网络数据流量是有API能做到的,但想要知道具体每个进程的流量,就只能参考防火墙的开发原理,从驱动层去实现。
      

  10.   

    不错,看了挺有用的读取整个网卡(端口)的网络数据流量是有API能做到的,但想要知道具体每个进程的流量,就只能参考防火墙的开发原理,从驱动层去实现。
      

  11.   

    其实监控有很好的样板:业界有Big4和Little4的8个监控软件,而且重我玩过Python写的Zenoss,它是用RRDTOOL来存储、绘制数据曲线的,而且很漂亮这里是RRDTOOL的介绍 http://oss.oetiker.ch/rrdtool/
    这个是我方便使用C++控制RRDTOOL的源码 http://download.csdn.net/source/1252213
      

  12.   

         dephi ? ,学习思想。
      

  13.   

    如果只能通过改写网络驱动自己实现数据量的累计,那只能放弃了:
    自己写的性能、稳定性难以专业,服务器上不敢用如果有现成的防火墙产品能提供这样的数据接口,程序利用一下,就好了
    还有一个也需要监控:sql语句,执行时间超过5秒的sql语句,能自动记录到日志
    如果开事件探查器,就怕影响性能
      

  14.   

    还有一个也需要监控:sql语句,执行时间超过5秒的sql语句,能自动记录到日志 
    如果开事件探查器,就怕影响性能
      

  15.   

    如果要监控网络流量,可以使用WinPcap的接口来抓包做到。
      

  16.   


    要求其实很朴实:随时(包括事后)能找到是谁异常行为(突然有大的网络、cpu等现象,哪些很慢的sql导致)
    也许性能监视器用好了,也能抓到一些。
    不过哪个应用的网络情况(与哪个ip、端口通信,收发了多少数据),可能还是拿不到
      

  17.   

    ahahavery goodlearning
      

  18.   

    网络分析,有开源的WINSHARK可以学习
      

  19.   

    提及的功能Windows都提供了。“计算机管理”组件和“PowerShell”。事件,日志,记录,都有。虽然比较分析,但管理起来还是很方便。日志还可以分小时,日期等进行记录和存放。监测的内容包含了系统的所有方面,任君选择。
      

  20.   


    1、性能监视器的图示效果很难看,日志是不错
    2、应用进程-连接(对方ip/port/收发数据量)应该是取不到吧?
      

  21.   

    高手啊!学习了啊
    1、性能监视器的图示效果很难看,日志是不错 
    2、应用进程-连接(对方ip/port/收发数据量)应该是取不到吧?
      

  22.   


    能取得 应用进程-连接(对方ip/port/收发数据量) ?保存和再现都只是体力活了
      

  23.   


    好做?取得 应用进程-连接(对方ip/port/收发数据量) ?数据量都会大的吓死人?不要紧,可以设置抓信息的周期嘛。而且只有在有需要监控时,才抓
      

  24.   

    ip雷达 对于 应用进程-连接(对方ip/port/收发数据量/速率) 信息抓取得很好!
    它含了2个dll,不用安装、重启,就能实现联系了其作者,确认目前还没有写入日志的功能
    他简单提示了2个方法,只是都还是比较多的工作要做,尤其是想稳定、开销低的话
    只能暂时不再考虑了
      

  25.   

    进程与端口的方法可以用iphlpapi.dll中的AllocateAndGetTcpExTableFromStack和AllocateAndGetUdpExTableFromStack获取。网络数据量和速率可以用监听SOCK_RAW的方式,设置为SIO_RCVALL,之后分析UDP,TCP,IP4,IP6头应该就差不多了进程-端口
    端口-流量
    通过这两个对应关系就可以获得进程-流量的关系。
      

  26.   

    学习!
    发现netstat命令还是很有用的。
    netstat -b
    netstat -b -v
    netstat -o
    都可以获得远端IP和端口,还有进程或进程PID
      

  27.   

    [有图有真相]NT系统信息察看工具:
    http://topic.csdn.net/u/20100717/18/1ed994bb-4d33-4641-aa24-7c11cb33a4c4_2.htmlip雷达的 发出流量 统计的好像不是很准,不知道为什么
      

  28.   

    这个系统工具应该能解决:只是它的监控对象太多,需要仔细找一找,是不是存在对 应用-端口-对方ip-端口-已发送字节数 的报告r:\>typeperf /?Microsoft (R) TypePerf.exe (5.2.3790.0)
    (C) Microsoft Corporation. All rights reserved.Typeperf 将性能数据写入命令窗口或日志文件。要停止 Typeperf,请按 CTRL+C.用法:
    typeperf { <counter [counter ...]> | -cf <filename> | -q [object]
                                    | -qx [object] } [options]参数:
      <counter [counter ...]>       要监视的性能计数器。选项:
      -?                            显示跟上下文相关的帮助。
      -f <CSV|TSV|BIN|SQL>          输出文件格式。默认值是 CSV。
      -cf <filename>                含有监视的性能计数器的文件,一个计数器一行。
      -si <[[hh:]mm:]ss>            示例间的时间。默认值是 1 秒。
      -o <filename>                 输出文件或 SQL 数据库的路径。默认值为 STDOUT。
      -q [object]                   列出已安装的计数器(无实例)。要列出某个对象的
                                    计数器,包括对象名,如 Processor。
      -qx [object]                  列出已安装的计数器(带实例)。要列出某个对象的
                                    计数器,包括对象名,如 Processor。
      -sc <samples>                 要收集的示例数量。默认值为,在 CTRL+C 之前都
                                    进行采样。
      -config <filename>            含有命令选项的设置文件。
      -s <computer_name>            在计数器路径中没有指定服务器的情况下要监视的
                                    服务器。
      -y                            不用提示对所有问题都回答 yes。注意:
      Counter 是性能计数器的全名,格式为
      "\\<Computer>\<Object>(<Instance>)\<Counter>";
      例如 "\\Server1\Processor(0)\% User Time"。例如:
      typeperf "\Processor(_Total)\% Processor Time"
      typeperf -cf counters.txt -si 5 -sc 50 -f TSV -o domain2.tsv
      typeperf -qx PhysicalDisk -o counters.txt\ServiceModelEndpoint 3.0.0.0\Calls
    \ServiceModelEndpoint 3.0.0.0\Calls Per Second
    \ServiceModelEndpoint 3.0.0.0\Calls Outstanding
    \ServiceModelEndpoint 3.0.0.0\Calls Failed
    \ServiceModelEndpoint 3.0.0.0\Calls Failed Per Second
    \ServiceModelEndpoint 3.0.0.0\Calls Faulted
    \ServiceModelEndpoint 3.0.0.0\Calls Faulted Per Second

    \ServiceModelOperation 3.0.0.0\Calls
    \ServiceModelOperation 3.0.0.0\Calls Per Second
    \ServiceModelOperation 3.0.0.0\Calls Outstanding
    \ServiceModelOperation 3.0.0.0\Calls Failed
    \ServiceModelOperation 3.0.0.0\Call Failed Per Second

    \ServiceModelService 3.0.0.0\Calls
    \ServiceModelService 3.0.0.0\Calls Per Second
    \ServiceModelService 3.0.0.0\Calls Outstanding
    \ServiceModelService 3.0.0.0\Calls Failed

    \SMSvcHost 3.0.0.0\Protocol Failures over net.tcp
    \SMSvcHost 3.0.0.0\Protocol Failures over net.pipe
    \SMSvcHost 3.0.0.0\Dispatch Failures over net.tcp
    \SMSvcHost 3.0.0.0\Dispatch Failures over net.pipe

    \.NET CLR Memory(*)\# Gen 0 Collections
    \.NET CLR Memory(*)\# Gen 1 Collections
    \.NET CLR Memory(*)\# Gen 2 Collections
    \.NET CLR Memory(*)\Promoted Memory from Gen 0
    \.NET CLR Memory(*)\Promoted Memory from Gen 1
    \.NET CLR Memory(*)\Gen 0 Promoted Bytes/Sec

    \.NET CLR Exceptions(*)\# of Exceps Thrown
    \.NET CLR Exceptions(*)\# of Exceps Thrown / sec
    \.NET CLR Exceptions(*)\# of Filters / sec
    \.NET CLR Exceptions(*)\# of Finallys / sec
    \.NET CLR Exceptions(*)\Throw To Catch Depth / sec
    \.NET CLR Loading(*)\Current Classes Loaded
    \.NET CLR Loading(*)\Total Classes Loaded
    \.NET CLR Loading(*)\Rate of Classes Loaded

    \Active Server Pages\Debugging Requests
    \Active Server Pages\Errors During Script Runtime
    \Active Server Pages\Errors From ASP Preprocessor
    \Active Server Pages\Errors From Script Compilers

    \ASP.NET\Application Restarts
    \ASP.NET\Applications Running
    \ASP.NET\Requests Disconnected
    \ASP.NET\Request Execution Time
    \ASP.NET\Requests Rejected

    \SQLServer:SSIS Pipeline\Rows read
    \SQLServer:SSIS Pipeline\Rows written
    \SQLServer:SSIS Pipeline\Buffers in use
    \SQLServer:SSIS Pipeline\Buffer memory

    \Internet Information Services Global\Total Allowed Async I/O Requests
    \Internet Information Services Global\Total Blocked Async I/O Requests
    \Internet Information Services Global\Total Rejected Async I/O Requests
    \Internet Information Services Global\Current Blocked Async I/O Requests
    \Internet Information Services Global\Measured Async I/O Bandwidth Usage

    \IPSec v4 Driver\Active Security Associations
    \IPSec v4 Driver\Offloaded Security Associations
    \IPSec v4 Driver\Pending Key Exchange Operations
    \IPSec v4 Driver\Total SA Rekeys
    \IPSec v4 Driver\Total Bad SPI Packets

    \Distributed Transaction Coordinator\Active Transactions
    \Distributed Transaction Coordinator\Committed Transactions
    \Distributed Transaction Coordinator\Aborted Transactions
    \Distributed Transaction Coordinator\In Doubt Transactions

    \Windows Workflow Foundation\Workflows Created
    \Windows Workflow Foundation\Workflows Created/sec
    \Windows Workflow Foundation\Workflows Unloaded
    \Windows Workflow Foundation\Workflows Unloaded/sec

    \.NET CLR Data\SqlClient: Current # pooled and nonpooled connections
    \.NET CLR Data\SqlClient: Current # pooled connections
    \.NET CLR Data\SqlClient: Current # connection pools

    \MSSQL$SQLEXPRESS:Buffer Manager\Buffer cache hit ratio
    \MSSQL$SQLEXPRESS:Buffer Manager\Page lookups/sec
    \MSSQL$SQLEXPRESS:Buffer Manager\Free list stalls/sec
    \MSSQL$SQLEXPRESS:Buffer Manager\Free pages

    \SQLServer:Buffer Manager\Buffer cache hit ratio
    \SQLServer:Buffer Manager\Page lookups/sec
    \SQLServer:Buffer Manager\Free list stalls/sec
    \SQLServer:Buffer Manager\Free pages
    \SQLServer:Buffer Manager\Total pages

    \MSAS 2005:Connection\Current connections
    \MSAS 2005:Connection\Requests/sec
    \MSAS 2005:Connection\Total requests
    \MSAS 2005:Connection\Successes/sec
    \MSAS 2005:Connection\Total successes

    \ProcessorPerformance(*)\\ProcessorPerformance(*)\% \ProcessorPerformance(*)\