威海网站设计公司珠海企业医疗网站建设

web/2025/10/1 18:26:16/文章来源:
威海网站设计公司,珠海企业医疗网站建设,网站空间管理权限,网站建设网站备案所需资料其实也是在easyhadoop做第二次重构的时候用到了这个嵌入式的webserver去做服务器状态的监控#xff0c;可以单独摘出来写个东西。思路主要是用python脚本获取linux服务器的各种状态信息#xff0c;然后用webserver的方式#xff0c;以json数据发给http#xff0c;主控节点去… 其实也是在easyhadoop做第二次重构的时候用到了这个嵌入式的webserver去做服务器状态的监控可以单独摘出来写个东西。思路主要是用python脚本获取linux服务器的各种状态信息然后用webserver的方式以json数据发给http主控节点去读取webserver返回的json生成系统监控报表。代码简单开发和部署都很方便。用到的主要东西是python的第三方嵌入式web模块叫cherrypy之所以选择cherrypy主要原因就是开发快速学习也很快基本我用了一天多就基本学会了怎么来写了。当然也可以用python自带的simpleHTTPserver。不过那个确实太simple了。cherrypy的优点在于多线程多并发。又不像Tornado和Django那样重量级。因为我们返回的是json也用不到什么html模板数据库的功能。当然也可以选择web.py不过相比还是cherrypy更好一点我认为web.py也借鉴了cherrypy不少的思想。其实我的集群里都装了Ganglia, Cacti, Nagios。但是我想看实时的图表生成就自己写了这样一段程序。做自动化运维的朋友可以当一个参考添加自己的方法监控别的也是可以的。主要流程是这样想办法读取Linux系统的各种数据  ---  解析数据转成json发给http服务器  ---  监控服务器扫描数据生成图表#!/usr/bin/python # -*- coding: utf8 -*- import sys import cherrypy import platform import os import time #python 2.4为simplejsonpython 2.6以上为json try:import json except ImportError:import simplejson as json#假装做一个index出来 class Index(object):#下面这句表示修饰index方法这个index方法是暴露给http server的cherrypy.exposedef index(self):return hello cherrypyclass Node(object):url /node/dist/#获取目标机器的发行分支版本号架构类型主机名称等等返回jsoncherrypy.exposedef dist(self):dist_json sysinstaller installer ostype platform.dist()if(ostype[0] in [Ubuntu,debian,ubuntu,Debian]):sysinstaller apt-getinstaller dpkgelif(ostype[0] in [SuSE]):sysinstaller zypperinstaller rpmelif(ostype[0] in [CentOS, centos, redhat,RedHat]):sysinstaller yuminstaller rpmmachine platform.machine()hostname platform.node()dist_json {os.system:ostype[0], os.version:ostype[1], os.release:ostype[2], os.sysinstall:sysinstaller, os.installer:installer, os.arch:machine, os.hostname:hostname}return json.dumps(dist_json, sort_keysFalse, indent4, separators(,, : ))url /node/GetCpuInfo/#获取CPU型号等返回jsoncherrypy.exposedef GetCpuInfo(self):cpu []cpuinfo {}f open(/proc/cpuinfo)lines f.readlines()f.close()for line in lines:if line n:cpu.append(cpuinfo)cpuinfo {}if len(line) 2: continuename line.split(:)[0].strip().replace( ,_)var line.split(:)[1].strip()cpuinfo[name] varreturn json.dumps(cpuinfo, sort_keysFalse, indent4, separators(,, : ))url /node/GetMemInfo/#获取内存使用的详细信息cherrypy.exposedef GetMemInfo(self):mem {}f open(/proc/meminfo)lines f.readlines()f.close()for line in lines:if len(line) 2:continuename line.split(:)[0]var line.split(:)[1].split()[0]mem[name] long(var) * 1024.0mem[MemUsed] mem[MemTotal] - mem[MemFree] - mem[Buffers] - mem[Cached]return json.dumps(mem, sort_keysFalse, indent4, separators(,, : ))url /node/GetLoadAvg//#获取系统负载的详细信息cherrypy.exposedef GetLoadAvg(self):loadavg {}f open(/proc/loadavg)con f.read().split()f.close()loadavg[lavg_1]con[0]loadavg[lavg_5]con[1]loadavg[lavg_15]con[2]loadavg[nr]con[3]loadavg[last_pid]con[4]return json.dumps(loadavg, sort_keysFalse, indent4, separators(,, : ))url /node/GetIfInfo/eth(x)获取指定网卡的流量信息这里面有点复杂cherrypy.exposedef GetIfInfo(self, interface):dist_json self.dist()f open(/proc/net/dev)lines f.readlines()f.close()intf {}for line in lines[2:]:con line.split()#if部分是给centos使用的centos在流量大的情况下网卡信息里面字符串会连上所以需要单独拆分处理else部分则是ubuntu或者其他系统格式化很好的使用if con[0][-1].isdigit() True:offset con[0].split(:)intf[interface] str(offset[0])intf[ReceiveBytes] str(offset[1])intf[ReceivePackets] str(con[1])intf[ReceiveErrs] str(con[2])intf[ReceiveDrop] str(con[3])intf[ReceiveFifo] str(con[4])intf[ReceiveFrames] str(con[5])intf[ReceiveCompressed] str(con[6])intf[ReceiveMulticast] str(con[7])intf[TransmitBytes] str(con[8])intf[TransmitPackets] str(con[9])intf[TransmitErrs] str(con[10])intf[TransmitDrop] str(con[11])intf[TransmitFifo] str(con[12])intf[TransmitFrames] str(con[13])intf[TransmitCompressed] str(con[14])intf[TransmitMulticast] str(con[15])else:intf[interface] str(con[0])intf[ReceiveBytes] str(con[1])intf[ReceivePackets] str(con[2])intf[ReceiveErrs] str(con[3])intf[ReceiveDrop] str(con[4])intf[ReceiveFifo] str(con[5])intf[ReceiveFrames] str(con[6])intf[ReceiveCompressed] str(con[7])intf[ReceiveMulticast] str(con[8])intf[TransmitBytes] str(con[9])intf[TransmitPackets] str(con[10])intf[TransmitErrs] str(con[11])intf[TransmitDrop] str(con[12])intf[TransmitFifo] str(con[13])intf[TransmitFrames] str(con[14])intf[TransmitCompressed] str(con[15])intf[TransmitMulticast] str(con[16])return json.dumps(intf, sort_keysFalse)#获取全部网卡的接口和流量信息cherrypy.exposedef GetIfTraffic(self):ifs []nettraffic {}f open(/proc/net/dev)lines f.readlines()f.close()for line in lines[2:]:con line.split()ifname con[0].split(:)if(ifname[0].strip() ! lo):ifs.append(ifname[0].strip())else:continuefor interface in ifs:nettraffic[interface] self.GetIfInfo( interface)return json.dumps(nettraffic)#获取硬盘的分区信息和使用量cherrypy.exposedef GetHddInfo(self):hdds []mount {}file_system []type []size []used []avail []used_percent []mounted_on []hdds os.popen(df -lhT | grep -v tmpfs | grep -v boot | grep -v usr | grep -v tmp | sed \1d;/ /!N;s/\\n//;s/[ ]*[ ]/\\t/g;\).readlines()for line in hdds:file_system.append(line.replace(\\n,).replace(\\t, ).split()[0])type.append(line.replace(\\n,).replace(\\t, ).split()[1])size.append(line.replace(\\n,).replace(\\t, ).split()[2])used.append(line.replace(\\n,).replace(\\t, ).split()[3])avail.append(line.replace(\\n,).replace(\\t, ).split()[4])used_percent.append(line.replace(\\n,).replace(\\t, ).split()[5])mounted_on.append(line.replace(\\n,).replace(\\t, ).split()[6])mount[file_system] file_systemmount[type] typemount[size] sizemount[used] usedmount[avail] availmount[used_percent] used_percentmount[mounted_on] mounted_ondist_json json.dumps(mount)return dist_json#获取CPU的使用量信息需要系统安装sysstat支持cherrypy.exposedef GetCpuDetail(self):dist_json self.dist()dist json.loads(dist_json)if(dist[os.system] in [CentOS, centos, redhat, RedHat]):if(int(dist[os.version].split(.)[0]) 6): #For CentOS onlycmd mpstat 1 1 | sed \1d;2d;3d;4d\ | awk \{print {\\\user\\\:\\\\$3\\\\,\\\nice\\\:\\\\$4\\\\,\\\sys\\\:\\\\$5\\\\,\\\iowait\\\:\\\\$6\\\\,\\\irq\\\:\\\\$7\\\\,\\\soft\\\:\\\\$8\\\\,\\\steal\\\:\\\\$9\\\\,\\\idle\\\:\\\\$10\\\\}}\else:cmd mpstat 1 1 | sed \1d;2d;3d;4d\ | awk \{print {\\\user\\\:\\\\$3\\\\,\\\nice\\\:\\\\$4\\\\,\\\sys\\\:\\\\$5\\\\,\\\iowait\\\:\\\\$6\\\\,\\\irq\\\:\\\\$7\\\\,\\\soft\\\:\\\\$8\\\\,\\\steal\\\:\\\\$9\\\\,\\\idle\\\:\\\\$11\\\\}}\else:cmd mpstat 1 1 | sed \1d;2d;3d;4d\ | awk \{print {\\\user\\\:\\\\$3\\\\,\\\nice\\\:\\\\$4\\\\,\\\sys\\\:\\\\$5\\\\,\\\iowait\\\:\\\\$6\\\\,\\\irq\\\:\\\\$7\\\\,\\\soft\\\:\\\\$8\\\\,\\\steal\\\:\\\\$9\\\\,\\\idle\\\:\\\\$11\\\\}}\cpu os.popen(cmd).readline().strip()return cpu if __main__ __name__:#服务器配置settings {global: {#绑定端口server.socket_port : 60090,#ip地址设置觉得够安全就用0.0.0.0否则就单独写那台服务器的ipserver.socket_host: 0.0.0.0,server.socket_file: ,server.socket_queue_size: 100,server.protocol_version: HTTP/1.1,server.log_to_screen: True,server.log_file: ,server.reverse_dns: False,server.thread_pool: 200,server.environment: production,engine.timeout_monitor.on: False}}#使用配置和映射路由并启动webservercherrypy.config.update(settings)cherrypy.tree.mount(Index(), /)cherrypy.tree.mount(Node(), /node)cherrypy.engine.start()图表生成端随便拿什么语言写就无所谓了反正数据都是json格式的。当然我也用他监控hadoop和hbase。代码加点跟hadoop和hbase相关的就可以了。 转载于:https://blog.51cto.com/slaytanic/1207929

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/85187.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

哈尔滨网站制作推广如何上传网站模板

关于文件编码的检测,很多人建议 mb_detect_encoding 检测,可是不知为何不成功,什么都没输出、看到有人写了个增强版,用 BOM 判断的,我果断就无视了,这东西完全不靠谱、最终根据PHP手册里 mb_detect_encodin…

做网站有生意吗百度关键词搜索排名查询

前言 Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。 Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。 容器是完全使用沙箱…

有什么设计网站企业建设网站有用么

一、前言 Redis提供了数据变化的通知事件,可以实时监测key和value的变化,客户端可以通过订阅相关的channel来接收这些通知事件,然后做相应的自定义处理,详细的介绍可以参考官方文档Redis keyspace notifications | Docs 使用Red…

余姚市建设局网站推广策划案怎么写

目录 一、socket创建流程。 二、I/O多路复用 三、服务器开发常见的并发模型 1、模型一:单线程——无IO复用 1.1 模型分析 2、模型二:单线程accept + 多线程读写业务(无IO复用) 模型分析 3、模型三:单线程多路IO复用 模型分析 4、模型四࿱

建设好一个网站需要iis网站批量导入

系列文章目录 文章目录 系列文章目录前言一、抽象工厂模式二、装饰器模式是什么三、代理模式和装饰器模式有什么区别前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。…

新河seo怎么做整站排名移动端的网站怎么做的

(四)栏/字段 SharePoint中的字段(中文版中叫做“栏”)与传统的数据栏类似,也有不同类型的区别,不过SharePoint中内置的栏类型除了按照数据类型(如数字、日期和时间等)进行区分之外&…

自己电脑做网站服务器系统广东新闻频道直播在线观看高清

起因 微信小程序虽然已经有现成的封装好的省市区选择器给开发者使用,然鹅不幸的是,微信地址库的数据和公司用的地址库数据很难一一对上,那就只能撸起袖子自己写个组件了。 最终效果 思维导图 主要代码 组件 region-picker.js /* region-pic…

做网站怎么挣钱最快湛江网站建设招聘

数组的基本使用数组的定义格式:类型 数组名[元素个数];int ages[5] {19, 29, 28, 27, 26};数组的注意事项存储空间的划分(内存的分配是从高地址到低地址进行的,但一个数组内部元素又是从低到高进行的)数组名的作用,查看元素地址数组越界的注…

橙色网站欣赏昆山周市建设局网站

一,ABAC授权模式 Kubernetes ABAC(Attribute-Based Access Control)授权模式是一种基于属性的访问控制模型,它可以根据用户或组的属性决定是否允许他们访问 Kubernetes 集群中的资源。 在使用 ABAC 授权模式时,管理员…

产品宣传类网站设计电子商务网站建设与管理王生春

GEO2R是NCBI GEO团队针对上传到GEO的芯片数据开发的一款在线差异分析、可视化作图工具,是广大数据分析人员的福音。然而,一直以来GEO2R仅针对芯片数据,对于越来越多的测序数据,只能下载所上传的matrix矩阵,进行分析&am…

私人网站建设白云区网站建设

Docker 1.什么是 Docker 官网的介绍是“Docker is the world’s leading software container platform.” 官方给Docker的定位是一个应用容器平台。 Docker 是一个容器平台的领导者 Docker 容器平台 Docker 应用容器平台 application项目 Mysql Redis MongoDB ElasticSeacrh …

新郑网站优化网站子目录绑定二级域名

在Java开发开源框架中,首屈一指的应该若依,在行业里,不管小公司中公司还是大公司,都能够看到若依项目的身影。足以见得 若依框架的受众之大。 RuoYi-Cloud RuoYi-Cloud 是一个 Java EE 分布式微服务架构平台,基于经典…

深圳自适应网站公司平面设计要素

本实战教程主要介绍了如何使用Java配置方式来使用Spring MVC框架。相较于XML配置方式,Java配置方式提供了一种更为简洁和灵活的配置方法。 项目创建与配置 创建一个Jakarta EE项目,并设置项目名称和位置。选择Jakarta EE 10版本,不添加依赖&a…

杭州网站关键词开通微信公众号

1 对关系模型叙述错误的是()。选择一项:用二维表表示关系模型是其一大特点建立在严格的数学理论,集合论和谓词演算公式的基础之上微机 DBMS 绝大部分采取关系数据模型不具有连接操作的 DBMS 也可以是关系数据库系统正确答案是:建立在严格的数…

h5企业网站模板app网站开发学习

cryptjs是一个第三方密码加密库,是对原有bcrypt的优化,优点是不需要安装任何依赖 安装 引入bcryptjs库var bcrypt require(bcryptjs); 异步用法(Async) //生成hash密码 var bcrypt require(bcryptjs); bcrypt.genSalt(10, function(err, salt) {bcry…

建设网站过程视频山西网络网站建设销售公司

项目场景: 项目首页使用RadioGroupRadioButtonFragment实现页面切换,出现了一个问题fragment会出现重叠问题,就是一个fragment显示了两层, 并不是必现问题。 经过排查发现是项目主页面Activity被销毁重建了,但是之前…

电商网站模板引擎关键词优化计划

1.打开后台账号设置 2.找到左下角的Developer settings 3.找到Personal access tokens 的 Tokens(classic) 4.选择创建新证书 5.填写证书信息 6.点击生成证书,复制证书并且保存起来(血泪教训,证书只会在创建时显示一次,以后就再也…

台州百度搜索优化企业排名优化公司

2019独角兽企业重金招聘Python工程师标准>>> Max Points on a Line Given n points on a 2D plane, find the maximum number of points that lie on the same straight line. 题目是:在2D平面内给N个点,求最多多少个点在一个直线上. 以下是AC的解决方式: /*** Defi…

建设银行短信开通网站网站建设可行性方案模板

<canvas>标签定义图形&#xff0c;比如图表和其他图像&#xff0c;你必须用脚本来绘制图形。 在画布上&#xff08; Canvas &#xff09;画一个共红色矩形&#xff0c;渐变矩形&#xff0c;彩色矩形&#xff0c;和一些彩色文字。 什么是 Canvas&#xff1f; HTML5<c…

宁波网站免费建设服务平台深圳美容网站建

1.联想笔记本电脑WiFi图标不见了,怎么回事吧,试了很多方法一、无线网卡开关未打开&#xff1b;1、查看周边有没有手动百机械开关&#xff0c;一般在前面板&#xff0c;上面标有无线符号。2、按一下Fn无线信号键(度F几中的一个)找打无线WIFI3、打开控制机板&#xff0c;右上角查…