`
CharlesCui
  • 浏览: 427420 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

[发布项目]LPM和LPMP

阅读更多
两个项目的代码都在GemCube上:
http://gemcutter.org/gems/lpm
http://gemcutter.org/gems/lpmp
这两个项目其实是一个大项目--> <<倩女幽魂>>
但分开用完全没问题.

为什么叫倩女幽魂呢?
因为我想发扬中华传统文化.

这个监控跟别的监控系统相比的优势我认为在于:
1.安装和运行非常方便.
2.实时监控!

安装:
gem i lpm --source http://gemcutter.org/
gem i lpmp --source http://gemcutter.org/


运行:
引用
(sudo )lpmp --memcache=10.2.226.133:11011,10.2.226.133:11012 --log_level=0 --mode=XQPUSH
(sudo )lpm -t 15 --memcache=10.2.226.133:11011,10.2.226.133:11012 -P --pids=28261,28263 --log_level=3


设计思路:
我随便写下啊,
LPM是Rest Server提供主机数据,安装在被监控服务器上.
LPMP也是Rest Server,处理LPM得到的数据.安装在监控服务器上.
LPM和LPMP可以N对1,也就是同时监控多台服务器.
LPMP提供web服务,有动态的图表展示,实时更新数据,这是由前端JS控制的.
但由于我美工没什么功底,目前只会用EXT做页面,所以LPMP体积有点大,大部分是Extjs占用掉了.

目前设计了三种LPM和LPMP的通讯模式:
1.LPMP主动抓LPM数据.实时得到最新数据.
2.LPMP主动抓LPM数据.后台若干进程抓取,然后放到memcache里,请求来了后LPMP主进程直接从cache里面拿做好的数据.
3.LPM直接往Cache里面扔数据,LPMP主进程直接访问cache.
第三个最常用,第一个做演示用或者没有cache时候用.当我想到第三种设计方式的时候,第二种设计就暂停了,没必要.

顺便再说一句,LPM目前只支持Linux系统监控.

下面是LPMP和LPM的使用帮助:
安装好LPMP后,可以在命令行直接敲入命令:lpmp --help =>

引用
ubuntu:~$ lpmp --help
  CaiChen [also named => L(inux) P(roc) M(onitor) P(ortal)] :
  Mail/Gtalk: zheng.cuizh@gmail.com
 
  Usage: lpmp [options] argv...
  (sudo )lpmp --memcache=10.2.226.133:11011,10.2.226.133:11012 --log_level=0 --mode=XQPUSH
LPMP optins useage:
    -p, --port=PORT                  lpmp server requires a port number.
                                     default port=6789
        --mode [MODE]                PULL : (default) lpmp server will request data from lpm server when a request coming.
                                            This mode require a high performance lpmp server,it's used to be a daemon.
                                     BGPULL : This mode will run some background process at lpmp server.
                                              It needs memcaches.see --memcache=[LIST,LIST]
                                     XQPUSH : This mode will get data from memcache when a request come from client.
                                              This mode is the heighest performance of the three.
                                              It also needs memcaches.see --memcache=[LIST,LIST]
                                     default --mode=PULL.
    -m, --memcache=LIST,LIST         memcache list,such as : --memcache=10.2.226.38:11211,10.2.226.37:11211
                                     memcache server(s) must be alive.
    -l, --log=LogPath                default --log=/var/log/lpmp.log
        --log_level=LogLevel         1 => DEBUG
                                     2 => INFO
                                     3 => WARN
                                     4 => ERROR
                                     5 => FATAL
                                     default --log_level=3
    -t=60                            Make sure the LPMP server's datatime is same as LPM server,
                                     or the difference is little than timeout,else the memcache data will not available for LPMP
                                     (sudo )ntpdate 10.2.228.8(your date server ip)
                                     default -t=60
common options:
        --help                       show this message
        --version                    show version


同样,安装好LPM后,直接敲入:lpm --help  =>

引用
ubuntu:~$ lpm --help
  XiaoQian [also named => L(inux) P(roc) M(onitor)] :
  Mail/Gtalk: zheng.cuizh@gmail.com
 
  Usage: lpm [options] argv...
 
LPM optins useage:
    -p, --port=PORT                  lpm rest server requires a port number.
                                     default port=9876
    -P, --[no-]push                  if push is given, the --memcache must be set,
                                     and a job will push server performance data to memcache server.
                                     default --push=false.
    -t, --timer=Second               periodic timer to push cache
                                     default --timer=10(second).
    -m, --memcache=[LIST,LIST]       memcache list,such as : --memcache=10.2.226.38:11211,10.2.226.37:11211
                                     memcache server(s) must be alive.
    -l, --log=LogPath                default --log=/var/log/lpm.log
        --log_level=LogLevel         1 => DEBUG
                                     2 => INFO
                                     3 => WARN
                                     4 => ERROR
                                     5 => FATAL
                                     default --log_level=3
        --pids=[PID,PID]             pids list,such as : --pids=1234,2134,4321
common options:
        --help                       show this message
        --version                    show version




LPM is short for Linux Proc Monitor.

LPM是一个监控Linux主机性能参数的类库,带有一个web server,提供网页访问接口,前提是你安装过"sinatra".主要监控的是Linux主机性能常用参数,比如主机CPU,Load,Memory等,还可以监控单个进程的参数指标比如单进程消耗的CPU等.

该项目将和另外一个项目合并,当然完全可以单独拿出来使用。
合并后, LPM中文项目名将叫:小倩

另外一个项目--LPMP中文项目名将叫:采臣

采臣将使用小倩提供的数据,提供一个对外的统一监控界面,强大之处在于采臣支持分布式多服务器端监控。

引用
残寒消尽,疏雨过,清明后。 花径款余红,风沼萦新皱。 乳燕穿庭户,飞絮沾襟袖。 正佳时,仍晚昼,著人滋味,真个浓如酒。
频移带眼,空只恁,厌厌瘦。 不见又思量,见了还依旧。为问频相见,何似长相守。 天不老,人未偶,且将此恨,分付庭前柳。


It provides current performance of a linux host,and the command 'lpm' is a web server supported by sinatra,you could type in 'lpm' in command shell,then access the http://localhost:9876/,some information will be show.

If you want get some help,plz check out the test/.rb.

Example:

# below are some test cases for LPM::Proc

require "lpm" 
require "Benchmark" 
require "pp"

Benchmark.bm do |x|
x.report("CPU"){pp LPM::Proc.cpu} 
x.report("CPU(5)"){pp LPM::Proc.cpu(5)} 
x.report("CPU(10)"){pp LPM::Proc.cpu(10)} 
x.report("CPU(15)"){pp LPM::Proc.cpu(15)}
end
# => below test is for LPM::Proc 
pp "LPM::Proc.loadavg => #{LPM::Proc.loadavg}" 
pp "LPM::Proc.uptime => #{LPM::Proc.uptime}" 
pp "LPM::Proc.meminfo => #{LPM::Proc.meminfo}" 
pp "LPM::Proc.cpuinfo => #{LPM::Proc.cpuinfo}"

# below are some test cases for LPM::Process

require "lpm" require "Benchmark" require "pp"

# => below test is for LPM::Utils 
pp "LPM::Utils.ulimit => #{LPM::Utils.ulimit}" 
pp "LPM::Utils.locale => #{LPM::Utils.locale}" 
pp "LPM::Utils.sysctl => #{LPM::Utils.sysctl}"

# => LPM::Utils can also be used as 
pp "LPM::Proc.ulimit => #{LPM::Proc.ulimit}" 
pp "LPM::Proc.locale => #{LPM::Proc.locale}" 
pp "LPM::Proc.sysctl => #{LPM::Proc.sysctl}"


这里是LPMP的截图:






点击一个主机可以打开一个tab





页面还比较简陋

大家多包涵.
  • 大小: 157.8 KB
  • 大小: 80.4 KB
0
0
分享到:
评论
3 楼 CharlesCui 2009-11-17  
pypy 写道
lz做的东西很强大


我这边现在正在开发,可以向被监控的机器,发送命令(基本是linux命令)
1. kill 某进程使用资源超过一定额度
2. 清理僵尸进程
3. 维护磁盘文件干净
4. 监控被监控机器的服务(web server ftp等)(采用配置文件的形式,动态增加被监控的服务)
5.。。。
。。。

当然这些都是基于,需要在被监控机器部署一个客户端小程序来,收集机器状态信息,和执行上层发来的任务




算不上强大,就是拿来练手的,只是发现我们写的东东都一样,好玩而已哈哈哈:)
2 楼 pypy 2009-11-16  
lz做的东西很强大


我这边现在正在开发,可以向被监控的机器,发送命令(基本是linux命令)
1. kill 某进程使用资源超过一定额度
2. 清理僵尸进程
3. 维护磁盘文件干净
4. 监控被监控机器的服务(web server ftp等)(采用配置文件的形式,动态增加被监控的服务)
5.。。。
。。。

当然这些都是基于,需要在被监控机器部署一个客户端小程序来,收集机器状态信息,和执行上层发来的任务


1 楼 CharlesCui 2009-10-29  
图片挂了?????
JE还不稳定,我先不放图片了,
看完整文章到这里:

http://docs.google.com/View?id=dcnwrnvv_871dvvc64dw

相关推荐

    LPM_RAM.rar_RAM VERILOG_lpm_lpm_ram_verilog 调用LPM_verilog的ram模块

    这里,`LPM_TYPE`指定了模块类型为RAM,`LPM_WIDTH`和`LPM_WIDTHADDR`分别设置了数据宽度和地址宽度,`LPM_DEPTH`设置了存储深度。 4. **LPM RAM的特性** LPM RAM模块通常支持单端和差分接口,可以配置为同步或...

    LPM参数化模块库的使用

    然后,连接数据输入端`data-a[]`、`data-b[]`,数据输出端`result[]`和进位输出端`cout`,并设置相应的参数,如设置`LPM_WIDTH = 4`,`LPM_DIRECTION = “ADD"`,`LPM_REPRESENTATION = “UNSIGNED”`。完成设计后,...

    LPM.zip_lpm_lpm vhdl

    LPM.zip_lpm_lpm vhdl 文件中包含的具体示例代码,很可能是展示如何使用这些LPM模块的实例,通过阅读和分析这些代码,你可以学习到如何将LPM库应用于实际项目中。这不仅能够加深你对VHDL语言的理解,还能提高你的...

    avr lpm 指令 例程

    avr lpm 指令 的详细使用方法及例子代码

    cc430 基础实验 LPM3

    通过实践这些实验,开发者可以更深入地理解CC430的低功耗特性,并学会如何在实际项目中充分利用LPM3模式。 总的来说,CC430的基础实验——LPM3模式的探索不仅涵盖了微控制器的低功耗设计,也涉及了中断系统、电源...

    Altera——LPM

    文档中提及的历史背景信息显示,这个快速参考指南是在1996年发布的,反映出当时Altera公司在FPGA开发工具中的集成度和成熟度。 #### 特点和优势 根据文档提供的少量信息,LPM的主要特点是参数化和模块化,这意味着...

    ug_LPM_ROM

    这份文档是Altera在2005年发布的,针对其多种设备家族,如Stratix II、Stratix、Cyclone II、Cyclone、APEX II、Mercury以及FLEX10K等,提供了详尽的技术指导和应用说明。LPM_ROM Megafunction是Altera设计中的一项...

    如何使用lpm库 FPGA quartus

    在FPGA设计中,LPM(Library Parameterized Modules)库是一种非常重要的资源,它提供了大量预先定义好的参数化模块,可以极大地提高设计的效率和重用性。在本文中,我们将详细探讨如何在Altera Quartus软件中使用...

    基于LPM_ROM的四位乘法器

    设计过程中涉及到mif文件的建立、电路图的设计、时序仿真等多个方面,并对LPM_ROM模块的原理、使用方法和mif文件的建立进行了深入的了解。 知识点总览: 1. LPM_ROM模块的原理和使用方法 * LPM_ROM模块是一个参数...

    quartus ii lpm模块应用

    - **LPM_RAM_DP**:双端口 RAM,每个端口都具有独立的地址线和数据线。 - **LPM_RAM_IO**:RAM 模块,其中一个端口支持输入输出操作。 - **LPM_ROM**:只读存储器,用于存储固定的数据。 - **LPM_SHIFREG**:移位...

    LPM.rar_lpm_lpm vhdl_quartus II

    总结而言,“LPM.rar_lpm_lpm vhdl_quartus II”资料包主要关注的是Quartus II中使用VHDL语言操作LPM宏模块的方法和技巧,对于理解和利用预定义模型库进行FPGA设计有着重要的指导价值。通过深入学习和实践,设计者...

    ug_lpm_rom[1].pdf

    该指南的内容涉及了lpm_rom Megafunction的多个方面,包括其在不同设备系列的支持、功能特性、应用、资源使用和性能评估等。下面将详细解析文档中提到的一些关键知识点。 首先,Altera公司(现为英特尔公司的一部分...

    Inter LPM算法实现路由查找

    Inter LPM算法是IP网络中路由查找的基础,其高效性和准确性对于网络的正常运行至关重要。通过深入理解并优化LPM算法的实现,我们可以设计出更快、更稳定的网络设备,满足不断增长的网络流量需求。对于有兴趣深入研究...

    FPGA Verilog -LPM_ROM控制器 完整工程

    本项目“FPGA Verilog - LPM_ROM控制器 完整工程”着重于使用Verilog来实现一个LPM(Library of Predefined Models)ROM控制器,这对于理解和掌握FPGA设计流程及ROM控制器的工作原理至关重要。 LPM_ROM控制器是一个...

    altera-lpm_counter_megafunction user guide 2007.pdf

    手册详细解释了用户如何利用MegaWizard来定制LPM计数器,以及如何在硬件描述语言(HDL)代码和原理图设计中实例化Megafunction。手册内容在2007年6月被更新至第2.3版本,共36页,由Altera公司提供,旨在帮助用户理解...

    lpm_divide Megafunction 用户使用手册

    此外,手册还提到了一些典型的设计案例,如8位除法器的例子,这有助于工程师理解和掌握lpm_divide Megafunction的使用方法。 最后,关于“lpm_divideMegafunctionUserGuide”中的其他部分内容,它提示了如何联系...

    ug_lpm_rom.rar_ ug_lpm_rom_fpga LPM_rom vhdl_lpm rom m_quartus

    学习这些内容,设计师可以更有效地在FPGA项目中集成和利用ROM,以满足特定的系统需求。通过阅读“ug_lpm_rom.pdf”文档,应该能深入理解如何在Quartus环境下实现这一过程,并从中获取实践指导。

    lpm_ram.rar_ALTERA RAm_altera lpm ram_lpm_ram altera_lpm_ram ver

    这个“lpm_ram.rar”压缩包文件提供了关于Altera LPM_RAM的使用指南,包括简单的程序示例和模拟结果,对于理解和应用这一技术具有很好的参考价值。 首先,我们要理解Altera LPM_RAM是什么。LPM是逻辑可编程内存的...

    LPM_ROM.rar_lpm_rom

    本项目名为"LPM_ROM.rar_lpm_rom",它利用了FPGA中的LPM(Logic Programmable Memory)ROM资源来生成可变频率的正弦波信号。LPM_ROM是Altera公司的一种IP核,允许设计者在FPGA内部创建定制化的存储器模块,用于快速...

Global site tag (gtag.js) - Google Analytics