首页 文章 精选 留言 我的

精选列表

搜索[硬件创客],共10000篇文章
优秀的个人博客,低调大师

大型硬件厂商如何应对存储市场的蚕食?

近年来,我们似乎一直从传统大型存储设备制造商那里听到相同的抱怨:业绩季季下滑、业务年年萎缩。 Dell、HP、IBM和NetApp似乎都在为保持他们存储业务的盈利而苦不堪言。这是市场的短暂调整,还是其他因素在起作用呢?这对IT行业又意味着什么?你是否应该改变购买习惯呢?作为IT行业评论员,我们通常有意避开这些财务数据。但是,从现在的情况来看,一些技术层面根本性的改变正在影响这些大型存储制造商的财务收入。并且,近两年来,这种趋势不减反增。 从许多方面来讲,这种趋势过于明显。你倾向于选择更有效的存储,而这将削弱存储的销售。举个例子来说,每当你将10 TB的数据存放到Amazon S3上时,对于EMC或者IBM来说,他们就将损失数TB的存储销售收益。当你在主要存储环境中部署了自动精简配置,它将为你节省30%的空间,同时,你对大型存储制造商的需求又进一步降低了。 让我们假设你使用Scality或者Cleversafe提供的对象存储技术,搭建了一个新的1 PB的环境。你将把成千上万的数据从NetApp的系统迁移到商用存储上。这将使得你每GB的成本降低5倍,但是NetApp的收益将受损。如果你将价格高昂的Tier 1应用容灾设备更换成Azure的虚拟化架构,预计将节省75%的成本,同时Dell和Symantec将受到打击。每当你在VNX中加入2 TB的固态硬盘,并且得到应用系统性能6倍的提高时,你已经抛弃了短行程(short-stroking)硬盘,收回了200 TB 硬盘容量——EMC的收益将受损。现在VMware可以精确识别每台虚机正在使用哪些资源,因而使你可以更好的对每个业务部门计费。业务部门也将更加仔细的按需申请资源,浪费将降低3倍,但是HP的收益将受到影响。 现在你应该看清楚了。虚拟化、去重、压缩、闪存、云存储、自动精简技术、对象存储,这些技术已经日趋成熟,你将毫不犹豫的使用它们。结果很明显,业务部门将十分高兴的看到,有史以来第一次,IT将根据他们的要求为客户提供服务。 但是亦有另一种相反的势力在作用。数据量如同野草一般疯涨,而你的业务部门需要你根据买家的行为作出实时的分析。由于监管或者内部分析的需要,我们必须保留所有的数据。多样化的大数据问题对Hadoop架构的集群产生了越来越大的压力。 如果深入分析,从短期来看,发展趋势是传统大型存储设备制造商将受到进一步的压制,而小型创新型公司可以更多的获益。全闪存阵列制造商如Pure、SolidFire、Violin Memory;混合阵列制造商如Gridstore、Nimble、Tegile、Tintri;对象云存储提供商如Scality、Cleversafe等小公司的利润都在增长。Nurtanix和SimpliVity则致力于将所有的IT设备通过一个超聚合的解决方案放进一台机器里。而Scale Computing则从根本上改变着中小型公司的IT购买方式。Actifio、Veeam、Zerto和其他一些数据保护公司因为提供了新的更有效的数据保护产品而利率大增。Permabit最近发布了一款在线数据去重和压缩的应用SANblox,它通过提高阵列的性能和容量,可以将数年的数据塞进一个阵列里。是的,存储行业的创新仍在不断进行,你追我赶。 传统存储厂商面临尴尬处境 那么,传统厂商能够做什么呢?他们开始提供软件定义存储产品,即便这必然在短时间内不会有好的收益。HP的StoreVirtual VSA和EMC的ViPR可以归为这类产品。而Dell也与Nutanix达成了OEM合作。每个传统大型厂商都在推出混合阵列、缓存软件以及其他高效的产品,以期能够将小公司踢出市场。但是这么做,大型厂商需要处理一个小公司不用考虑的问题:如何保证公司收益?如何不使华尔街失望?现在的真相是所有的大型厂商都面临两难。是迎合客户而损失收益?还是继续我行我素而损失客户? 每个厂商都会经历各自不同的战斗,并且很可能这场战斗在未来的两年内将持续。难题在于IT如何面对自身根本性的改变?我认为可以从三个方面考虑这个问题: · 新兴的创新型小公司层出不穷,你应该比从前投入更多精力来关注他们。 · 询问你的战略合作伙伴对未来的打算。如果他们还在提供15年前的架构,那是时候考虑更换他们了。 · 未雨绸缪。你希望三到五年之后,你的IT架构是怎样的?现在就开始适时投资。 这种创造性的破坏正在我们眼前发生着。五年后,我们可能不相信自己曾经活在如此孤立的构架下。大型厂商很脆弱,在可以预见的未来,他们的利润将进一下降。精明的厂商已经意识到那个属于昂贵的、专用的设备的时代已经一去不回,他们开始在内部进行资源调整。他们正在开始准备在未来低利率的市场上生存,并推出适应新时代的商品。当然,从短期来看,他们不会有任何收益。这些厂商之所以现在还生存着,正是由于他们过去作出的明智决定。但是,市场的转变远比他们的想象更强,厂商们必须进行调整。这场IT的变革终将发生。 本文转自d1net(转载)

优秀的个人博客,低调大师

基于Zabbix IPMI监控服务器硬件状况

公司有多个分部,且机房没有专业值班,机房等级不够。在这种情况下,又想实时监控机房环境,于是使用IPMI方式来达到目的。由于之前已经部署了Zabbix监控系统,本次将结合Zabbix自带的IPMI,完成服务器温度及风扇转速等的监控。 1.环境说明 被监控端服务器型号:Dell PowerEdge R510 规划分配的IPMI地址: 10.103.1.100 2.Zabbix监控平台说明 Zabbix版本: 3.2.1,在安装时,未使用--with-openipmi Zabbix网络接口可以连通10.103.1.100 3.前置学习 维基百科IPMI: http://zh.wikipedia.org/wiki/IPMI IBM DeveloperWorks -- 使用ipmitool实现Linux系统下对服务器的ipmi管理:http://www.ibm.com/developerworks/cn/linux/l-ipmi/ Dell -- Managing Dell PowerEdge Servers Using IPMItool:http://www.dell.com/downloads/global/power/ps4q04-20040204-Murphy.pdf Zabbix IPMI checks:https://www.zabbix.com/documentation/3.2/manual/config/items/itemtypes/ipmi 使用IPMITOOL实现终端重定向(课外读物):http://docs.linuxtone.org/ebooks/Dell/ipmitool.pdf 4.配置IPMI 4.1.配置IPMI地址 可以参考前置推荐中的《Managing Dell PowerEdge Servers Using IPMItool》在服务器启动时进行IPMI地址的配置,并开启IPMI Over LAN。 也可以使用Dell的iDRAC开启IPMI功能,具体可以查看文章最后的参考资料。 4.2.获取传感器信息 登录Zabbix服务器,通过ipmitool远程访问Dell服务器传感器信息 # ipmitool -I lan -H 10.103.1.100 -U root -P calvin -L user sensor list # ipmitool -I lan -H 10.103.1.100 -U root -P calvin -L user sensor get "FAN MOD 1B RPM" 4.3.安装IPMItool软件包 # yum -y install OpenIPMI OpenIPMI-devel ipmitool freeipmi 4.4.配置Zabbix 注:为了支持IPMI,需要在zabbix server/proxy安装时增加--with-openipmi参数 服务器端配置zabbix IPMI pollers zabbix_server.conf/zabbix_proxy.conf # sed -i '/# StartIPMIPollers=0/aStartIPMIPollers=5' zabbix_server.conf # service zabbix-server restart 4.5.导入监控模板 下面提供DELL的2个型号的IPMI模板: template-ipmi-dell-poweredge-r510 template-ipmi-dell-poweredge-2950 添加监控主机,关联上本模板,并在IPMI页面,设置Authentication algorithm为Default,Privilege level为User, Username为sensor, Password为sensor_pass,保存即可。 使用此种方法获取数据的结果就是效率很差,基本没什么数据。 5.使用Zabbix External checks自定义IPMI 本来是选择nagios的IPMI插件:check_ipmi_sensor,文件是:check_ipmi_sensor_v3-v3.9.tar.gz 具体使用方法详见:http://www.thomas-krenn.com/en/wiki/IPMI_Sensor_Monitoring_Plugin 5.1.安装perl-IPC-Run模块 yum -y install perl-IPC-Run perl-Getopt-Long 5.2.使用check_ipmi_sensor查看效果 但是发现报错。 # ./check_ipmi_sensor -f ipmi.cfg -H 10.103.1.100 -vvv ------------- debug output for sel (-vvv is set): ------------ /usr/sbin/ipmi-sel was executed with the following parameters: /usr/sbin/ipmi-sel -h 10.103.1.100 --config-file ipmi.cfg --driver-type=LAN_2_0 --output-event-state --interpret-oem-data --entity-sensor-names output of FreeIPMI: ID | Date | Time | Name | Type | State | Event 1 | Apr-08-2011 | 06:42:13 | System Board SEL | Event Logging Disabled | Nominal | Log Area Reset/Cleared 2 | Jan-01-1970 | 08:00:31 | System Board Intrusion | Physical Security | Critical | General Chassis Intrusion ; Intrusion while system Off 3 | Jan-01-1970 | 08:00:36 | System Board Intrusion | Physical Security | Critical | General Chassis Intrusion ; Intrusion while system Off 4 | Aug-15-2011 | 23:09:53 | Disk Drive Bay 1 Drive 2 | Drive Slot | Critical | Drive Fault ; OEM Event Data2 code = 01h ; OEM Event Data3 code = 02h 5 | Aug-16-2011 | 11:38:25 | Disk Drive Bay 1 Drive 2 | Drive Slot | Nominal | Drive Presence ; OEM Event Data2 code = 01h ; OEM Event Data3 code = 02h 6 | Aug-16-2011 | 11:38:25 | Disk Drive Bay 1 Drive 2 | Drive Slot | Critical | Drive Fault ; OEM Event Data2 code = 01h ; OEM Event Data3 code = 02h 7 | Aug-16-2011 | 11:38:55 | Disk Drive Bay 1 Drive 2 | Drive Slot | Nominal | Drive Presence ; OEM Event Data2 code = 01h ; OEM Event Data3 code = 02h 8 | Jun-10-2012 | 22:41:13 | System Board Ambient Temp | Temperature | Warning | Upper Non-critical - going high ; Sensor Reading = 45.00 C ; Threshold = 45.00 C 9 | Jun-11-2012 | 02:53:53 | System Board Ambient Temp | Temperature | Nominal | Upper Non-critical - going high ; Sensor Reading = 43.00 C ; Threshold = 45.00 C 10 | Nov-05-2012 | 21:56:42 | Disk Drive Bay 1 Drive 2 | Drive Slot | Critical | Drive Fault ; OEM Event Data2 code = 01h ; OEM Event Data3 code = 02h 11 | Nov-14-2012 | 21:53:58 | Disk Drive Bay 1 Drive 2 | Drive Slot | Nominal | Drive Presence ; OEM Event Data2 code = 01h ; OEM Event Data3 code = 02h 12 | Nov-14-2012 | 21:53:58 | Disk Drive Bay 1 Drive 2 | Drive Slot | Critical | Drive Fault ; OEM Event Data2 code = 01h ; OEM Event Data3 code = 02h 13 | Nov-14-2012 | 21:54:19 | Disk Drive Bay 1 Drive 2 | Drive Slot | Nominal | Drive Presence ; OEM Event Data2 code = 01h ; OEM Event Data3 code = 02h 14 | Nov-15-2012 | 16:12:03 | Disk Drive Bay 1 Drive 2 | Drive Slot | Critical | Drive Fault ; OEM Event Data2 code = 01h ; OEM Event Data3 code = 02h 15 | Nov-17-2012 | 17:14:34 | Disk Drive Bay 1 Drive 2 | Drive Slot | Nominal | Drive Presence ; OEM Event Data2 code = 01h ; OEM Event Data3 code = 02h 16 | Nov-17-2012 | 17:14:34 | Disk Drive Bay 1 Drive 2 | Drive Slot | Critical | Drive Fault ; OEM Event Data2 code = 01h ; OEM Event Data3 code = 02h 17 | Nov-17-2012 | 17:15:40 | Disk Drive Bay 1 Drive 2 | Drive Slot | Nominal | Drive Presence ; OEM Event Data2 code = 01h ; OEM Event Data3 code = 02h 18 | Nov-19-2012 | 20:47:57 | Disk Drive Bay 1 Drive 2 | Drive Slot | Nominal | Drive Presence ; OEM Event Data2 code = 01h ; OEM Event Data3 code = 02h 19 | Nov-19-2012 | 20:50:04 | Disk Drive Bay 1 Drive 2 | Drive Slot | Nominal | Drive Presence ; OEM Event Data2 code = 01h ; OEM Event Data3 code = 02h 20 | Jan-01-1970 | 08:00:33 | System Board Intrusion | Physical Security | Critical | General Chassis Intrusion ; Intrusion while system Off 21 | Jan-01-1970 | 08:00:38 | System Board Intrusion | Physical Security | Critical | General Chassis Intrusion ; Intrusion while system Off 22 | Jun-27-2014 | 17:27:38 | Disk Drive Bay 1 Drive 2 | Drive Slot | Nominal | Drive Presence ; OEM Event Data2 code = 01h ; OEM Event Data3 code = 02h 23 | Jun-27-2014 | 17:27:53 | Disk Drive Bay 1 Drive 2 | Drive Slot | Nominal | Drive Presence ; OEM Event Data2 code = 01h ; OEM Event Data3 code = 02h 24 | Jan-01-1970 | 08:00:31 | System Board Intrusion | Physical Security | Critical | General Chassis Intrusion ; Intrusion while system Off 25 | Jan-01-1970 | 08:00:36 | System Board Intrusion | Physical Security | Critical | General Chassis Intrusion ; Intrusion while system Off 26 | Oct-31-2016 | 05:48:35 | System Board Ambient Temp | Temperature | Warning | Lower Non-critical - going low ; Sensor Reading = 8.00 C ; Threshold = 8.00 C 27 | Oct-31-2016 | 09:00:38 | System Board Ambient Temp | Temperature | Nominal | Lower Non-critical - going low ; Sensor Reading = 10.00 C ; Threshold = 8.00 C ------------- debug output for sensors (-vvv is set): ------------ script was executed with the following parameters: ./check_ipmi_sensor -f ipmi.cfg -H 10.103.1.100 -vvv check_ipmi_sensor version: 3.9 FreeIPMI version: ipmi-sensors - 1.2.9 FreeIPMI was executed with the following parameters: /usr/sbin/ipmi-sensors -h 10.103.1.100 --config-file ipmi.cfg --quiet-cache --sdr-cache-recreate --interpret-oem-data --output-sensor-state --ignore-not-available-sensors --driver-type=LAN_2_0 --output-sensor-thresholds FreeIPMI return code: 0 output of FreeIPMI: Record ID | Sensor Name | Sensor Group | Monitoring Status | Sensor Units | Sensor Reading 5 | Ambient Temp | Temperature | Nominal | C | 28.000000 7 | CMOS Battery | Battery | Nominal | N/A | 'OK' 8 | VCORE PG | Voltage | Nominal | N/A | 'State Deasserted' 9 | VCORE PG | Voltage | Nominal | N/A | 'State Deasserted' 10 | 0.75 VTT PG | Voltage | Nominal | N/A | 'State Deasserted' 11 | 0.75 VTT PG | Voltage | Nominal | N/A | 'State Deasserted' 12 | CPU VTT PG | Voltage | Nominal | N/A | 'State Deasserted' 13 | 1.5V PG | Voltage | Nominal | N/A | 'State Deasserted' 14 | 1.8V PG | Voltage | Nominal | N/A | 'State Deasserted' 15 | 5V PG | Voltage | Nominal | N/A | 'State Deasserted' 16 | MEM CPU2 FAIL | Voltage | Nominal | N/A | 'State Deasserted' 17 | 5V Riser PG | Voltage | Nominal | N/A | 'State Deasserted' 18 | MEM CPU1 FAIL | Voltage | Nominal | N/A | 'State Deasserted' 19 | VTT CPU2 FAIL | Voltage | Nominal | N/A | 'State Deasserted' 20 | VTT CPU1 FAIL | Voltage | Nominal | N/A | 'State Deasserted' 21 | 0.9V PG | Voltage | Nominal | N/A | 'State Deasserted' 22 | CPU2 1.8 PLL PG | Voltage | Nominal | N/A | 'State Deasserted' 23 | CPU1 1.8 PLL PG | Voltage | Nominal | N/A | 'State Deasserted' 24 | 1.1 FAIL | Voltage | Nominal | N/A | 'State Deasserted' 25 | 1.0 LOM FAIL | Voltage | Nominal | N/A | 'State Deasserted' 26 | 1.0 AUX FAIL | Voltage | Nominal | N/A | 'State Deasserted' 27 | Heatsink Pres | Entity Presence | Nominal | N/A | 'Entity Present' 28 | iDRAC6 Ent Pres | Entity Presence | Critical | N/A | 'Entity Absent' 29 | USB Cable Pres | Entity Presence | Nominal | N/A | 'Entity Present' 31 | Riser Presence | Entity Presence | Nominal | N/A | 'Entity Present' 32 | FAN MOD 1A RPM | Fan | Nominal | RPM | 3480.000000 34 | FAN MOD 2A RPM | Fan | Nominal | RPM | 3480.000000 36 | FAN MOD 3A RPM | Fan | Nominal | RPM | 3480.000000 39 | FAN MOD 4A RPM | Fan | Nominal | RPM | 3480.000000 40 | Presence | Entity Presence | Nominal | N/A | 'Entity Present' 41 | Presence | Entity Presence | Nominal | N/A | 'Entity Present' 42 | Presence | Entity Presence | Nominal | N/A | 'Entity Present' 43 | Presence | Entity Presence | Nominal | N/A | 'Entity Present' 44 | Presence | Entity Presence | Nominal | N/A | 'Entity Present' 45 | Status | Processor | Nominal | N/A | 'Processor Presence detected' 46 | Status | Processor | Nominal | N/A | 'Processor Presence detected' 47 | Status | Power Supply | Nominal | N/A | 'Presence detected' 48 | Current | Current | Nominal | A | 0.400000 49 | Current | Current | Nominal | A | 0.400000 50 | Voltage | Voltage | Nominal | V | 218.000000 51 | Voltage | Voltage | Nominal | V | 218.000000 52 | Status | Power Supply | Nominal | N/A | 'Presence detected' 53 | Status | Cable/Interconnect | Nominal | N/A | 'Cable/Interconnect is connected' 54 | OS Watchdog | Watchdog 2 | Nominal | N/A | 'OK' 56 | Intrusion | Physical Security | Nominal | N/A | 'OK' 57 | PS Redundancy | Power Supply | Nominal | N/A | 'Fully Redundant' 58 | Fan Redundancy | Fan | Nominal | N/A | 'Fully Redundant' 60 | System Level | Current | Nominal | W | 168.000000 61 | Power Optimized | OEM Reserved | Nominal | N/A | 'Good' 62 | Drive | Drive Slot | Nominal | N/A | 'Drive Presence' 65 | Cable SAS A | Cable/Interconnect | Nominal | N/A | 'Cable/Interconnect is connected' 66 | Cable SAS B | Cable/Interconnect | Nominal | N/A | 'Cable/Interconnect is connected' 67 | DKM Status | OEM Reserved | N/A | N/A | 'OEM Event = 0000h' 119 | FAN MOD 5A RPM | Fan | Nominal | RPM | 3480.000000 --------------------- end of debug output --------------------- IPMI Status: Use of uninitialized value in string ne at ./check_ipmi_sensor line 737. Use of uninitialized value in string ne at ./check_ipmi_sensor line 737. Use of uninitialized value in concatenation (.) or string at ./check_ipmi_sensor line 738. Use of uninitialized value in concatenation (.) or string at ./check_ipmi_sensor line 738. Use of uninitialized value in string ne at ./check_ipmi_sensor line 749. Use of uninitialized value in string ne at ./check_ipmi_sensor line 749. Use of uninitialized value in concatenation (.) or string at ./check_ipmi_sensor line 750. Use of uninitialized value in concatenation (.) or string at ./check_ipmi_sensor line 750. Use of uninitialized value in string ne at ./check_ipmi_sensor line 759. Use of uninitialized value in string ne at ./check_ipmi_sensor line 737. Use of uninitialized value in string ne at ./check_ipmi_sensor line 737. Use of uninitialized value in concatenation (.) or string at ./check_ipmi_sensor line 738. Use of uninitialized value in concatenation (.) or string at ./check_ipmi_sensor line 738. Use of uninitialized value in string ne at ./check_ipmi_sensor line 749. Use of uninitialized value in string ne at ./check_ipmi_sensor line 749. Use of uninitialized value in concatenation (.) or string at ./check_ipmi_sensor line 750. Use of uninitialized value in concatenation (.) or string at ./check_ipmi_sensor line 750. Use of uninitialized value in string ne at ./check_ipmi_sensor line 759. Use of uninitialized value in string ne at ./check_ipmi_sensor line 737. Use of uninitialized value in string ne at ./check_ipmi_sensor line 737. Use of uninitialized value in concatenation (.) or string at ./check_ipmi_sensor line 738. Use of uninitialized value in concatenation (.) or string at ./check_ipmi_sensor line 738. Use of uninitialized value in string ne at ./check_ipmi_sensor line 749. Use of uninitialized value in string ne at ./check_ipmi_sensor line 749. Use of uninitialized value in concatenation (.) or string at ./check_ipmi_sensor line 750. Use of uninitialized value in concatenation (.) or string at ./check_ipmi_sensor line 750. Use of uninitialized value in string ne at ./check_ipmi_sensor line 759. Use of uninitialized value in string ne at ./check_ipmi_sensor line 737. Use of uninitialized value in string ne at ./check_ipmi_sensor line 737. Use of uninitialized value in concatenation (.) or string at ./check_ipmi_sensor line 738. Use of uninitialized value in concatenation (.) or string at ./check_ipmi_sensor line 738. Use of uninitialized value in string ne at ./check_ipmi_sensor line 749. Use of uninitialized value in string ne at ./check_ipmi_sensor line 749. Use of uninitialized value in concatenation (.) or string at ./check_ipmi_sensor line 750. Use of uninitialized value in concatenation (.) or string at ./check_ipmi_sensor line 750. Use of uninitialized value in string ne at ./check_ipmi_sensor line 759. Use of uninitialized value in string ne at ./check_ipmi_sensor line 737. Use of uninitialized value in string ne at ./check_ipmi_sensor line 737. Use of uninitialized value in concatenation (.) or string at ./check_ipmi_sensor line 738. Use of uninitialized value in concatenation (.) or string at ./check_ipmi_sensor line 738. Use of uninitialized value in string ne at ./check_ipmi_sensor line 749. Use of uninitialized value in string ne at ./check_ipmi_sensor line 749. Use of uninitialized value in concatenation (.) or string at ./check_ipmi_sensor line 750. Use of uninitialized value in concatenation (.) or string at ./check_ipmi_sensor line 750. Use of uninitialized value in string ne at ./check_ipmi_sensor line 759. Use of uninitialized value in string ne at ./check_ipmi_sensor line 737. Use of uninitialized value in string ne at ./check_ipmi_sensor line 737. Use of uninitialized value in concatenation (.) or string at ./check_ipmi_sensor line 738. Use of uninitialized value in concatenation (.) or string at ./check_ipmi_sensor line 738. Use of uninitialized value in string ne at ./check_ipmi_sensor line 749. Use of uninitialized value in string ne at ./check_ipmi_sensor line 749. Use of uninitialized value in concatenation (.) or string at ./check_ipmi_sensor line 750. Use of uninitialized value in concatenation (.) or string at ./check_ipmi_sensor line 750. Use of uninitialized value in string ne at ./check_ipmi_sensor line 759. Use of uninitialized value in string ne at ./check_ipmi_sensor line 737. Use of uninitialized value in string ne at ./check_ipmi_sensor line 737. Use of uninitialized value in concatenation (.) or string at ./check_ipmi_sensor line 738. Use of uninitialized value in concatenation (.) or string at ./check_ipmi_sensor line 738. Use of uninitialized value in string ne at ./check_ipmi_sensor line 749. Use of uninitialized value in string ne at ./check_ipmi_sensor line 749. Use of uninitialized value in concatenation (.) or string at ./check_ipmi_sensor line 750. Use of uninitialized value in concatenation (.) or string at ./check_ipmi_sensor line 750. Use of uninitialized value in string ne at ./check_ipmi_sensor line 759. Use of uninitialized value in string ne at ./check_ipmi_sensor line 737. Use of uninitialized value in string ne at ./check_ipmi_sensor line 737. Use of uninitialized value in concatenation (.) or string at ./check_ipmi_sensor line 738. Use of uninitialized value in concatenation (.) or string at ./check_ipmi_sensor line 738. Use of uninitialized value in string ne at ./check_ipmi_sensor line 749. Use of uninitialized value in string ne at ./check_ipmi_sensor line 749. Use of uninitialized value in concatenation (.) or string at ./check_ipmi_sensor line 750. Use of uninitialized value in concatenation (.) or string at ./check_ipmi_sensor line 750. Use of uninitialized value in string ne at ./check_ipmi_sensor line 759. Use of uninitialized value in string ne at ./check_ipmi_sensor line 737. Use of uninitialized value in string ne at ./check_ipmi_sensor line 737. Use of uninitialized value in concatenation (.) or string at ./check_ipmi_sensor line 738. Use of uninitialized value in concatenation (.) or string at ./check_ipmi_sensor line 738. Use of uninitialized value in string ne at ./check_ipmi_sensor line 749. Use of uninitialized value in string ne at ./check_ipmi_sensor line 749. Use of uninitialized value in concatenation (.) or string at ./check_ipmi_sensor line 750. Use of uninitialized value in concatenation (.) or string at ./check_ipmi_sensor line 750. Use of uninitialized value in string ne at ./check_ipmi_sensor line 759. Use of uninitialized value in string ne at ./check_ipmi_sensor line 737. Use of uninitialized value in string ne at ./check_ipmi_sensor line 737. Use of uninitialized value in concatenation (.) or string at ./check_ipmi_sensor line 738. Use of uninitialized value in concatenation (.) or string at ./check_ipmi_sensor line 738. Use of uninitialized value in string ne at ./check_ipmi_sensor line 749. Use of uninitialized value in string ne at ./check_ipmi_sensor line 749. Use of uninitialized value in concatenation (.) or string at ./check_ipmi_sensor line 750. Use of uninitialized value in concatenation (.) or string at ./check_ipmi_sensor line 750. Use of uninitialized value in string ne at ./check_ipmi_sensor line 759. Use of uninitialized value in string ne at ./check_ipmi_sensor line 737. Use of uninitialized value in string ne at ./check_ipmi_sensor line 737. Use of uninitialized value in concatenation (.) or string at ./check_ipmi_sensor line 738. Use of uninitialized value in concatenation (.) or string at ./check_ipmi_sensor line 738. Use of uninitialized value in string ne at ./check_ipmi_sensor line 749. Use of uninitialized value in string ne at ./check_ipmi_sensor line 749. Use of uninitialized value in concatenation (.) or string at ./check_ipmi_sensor line 750. Use of uninitialized value in concatenation (.) or string at ./check_ipmi_sensor line 750. Use of uninitialized value in string ne at ./check_ipmi_sensor line 759. Critical [iDRAC6 Ent Pres = Critical ('Entity Absent'), System Board Intrusion = Critical (Physical Security), System Board Intrusion = Critical (Physical Security), Disk Drive Bay 1 Drive 2 = Critical (Drive Slot), Disk Drive Bay 1 Drive 2 = Critical (Drive Slot), System Board Ambient Temp = Warning (Temperature), Disk Drive Bay 1 Drive 2 = Critical (Drive Slot), Disk Drive Bay 1 Drive 2 = Critical (Drive Slot), Disk Drive Bay 1 Drive 2 = Critical (Drive Slot), Disk Drive Bay 1 Drive 2 = Critical (Drive Slot), System Board Intrusion = Critical (Physical Security), System Board Intrusion = Critical (Physical Security), System Board Intrusion = Critical (Physical Security), System Board Intrusion = Critical (Physical Security), System Board Ambient Temp = Warning (Temperature)] | 'Ambient Temp'=28.000000;:;: 'FAN MOD 1A RPM'=3480.000000;:;: 'FAN MOD 2A RPM'=3480.000000;:;: 'FAN MOD 3A RPM'=3480.000000;:;: 'FAN MOD 4A RPM'=3480.000000;:;: 'Current'=0.400000;:;: 'Current'=0.400000;:;: 'Voltage'=218.000000;:;: 'Voltage'=218.000000;:;: 'System Level'=168.000000;:;: 'FAN MOD 5A RPM'=3480.000000;:;: Ambient Temp = 28.000000 (Status: Nominal) CMOS Battery = 'OK' (Status: Nominal) VCORE PG = 'State Deasserted' (Status: Nominal) VCORE PG = 'State Deasserted' (Status: Nominal) 0.75 VTT PG = 'State Deasserted' (Status: Nominal) 0.75 VTT PG = 'State Deasserted' (Status: Nominal) CPU VTT PG = 'State Deasserted' (Status: Nominal) 1.5V PG = 'State Deasserted' (Status: Nominal) 1.8V PG = 'State Deasserted' (Status: Nominal) 5V PG = 'State Deasserted' (Status: Nominal) MEM CPU2 FAIL = 'State Deasserted' (Status: Nominal) 5V Riser PG = 'State Deasserted' (Status: Nominal) MEM CPU1 FAIL = 'State Deasserted' (Status: Nominal) VTT CPU2 FAIL = 'State Deasserted' (Status: Nominal) VTT CPU1 FAIL = 'State Deasserted' (Status: Nominal) 0.9V PG = 'State Deasserted' (Status: Nominal) CPU2 1.8 PLL PG = 'State Deasserted' (Status: Nominal) CPU1 1.8 PLL PG = 'State Deasserted' (Status: Nominal) 1.1 FAIL = 'State Deasserted' (Status: Nominal) 1.0 LOM FAIL = 'State Deasserted' (Status: Nominal) 1.0 AUX FAIL = 'State Deasserted' (Status: Nominal) Heatsink Pres = 'Entity Present' (Status: Nominal) iDRAC6 Ent Pres = 'Entity Absent' (Status: Critical) USB Cable Pres = 'Entity Present' (Status: Nominal) Riser Presence = 'Entity Present' (Status: Nominal) FAN MOD 1A RPM = 3480.000000 (Status: Nominal) FAN MOD 2A RPM = 3480.000000 (Status: Nominal) FAN MOD 3A RPM = 3480.000000 (Status: Nominal) FAN MOD 4A RPM = 3480.000000 (Status: Nominal) Presence = 'Entity Present' (Status: Nominal) Presence = 'Entity Present' (Status: Nominal) Presence = 'Entity Present' (Status: Nominal) Presence = 'Entity Present' (Status: Nominal) Presence = 'Entity Present' (Status: Nominal) Status = 'Processor Presence detected' (Status: Nominal) Status = 'Processor Presence detected' (Status: Nominal) Status = 'Presence detected' (Status: Nominal) Current = 0.400000 (Status: Nominal) Current = 0.400000 (Status: Nominal) Voltage = 218.000000 (Status: Nominal) Voltage = 218.000000 (Status: Nominal) Status = 'Presence detected' (Status: Nominal) Status = 'Cable/Interconnect is connected' (Status: Nominal) OS Watchdog = 'OK' (Status: Nominal) Intrusion = 'OK' (Status: Nominal) PS Redundancy = 'Fully Redundant' (Status: Nominal) Fan Redundancy = 'Fully Redundant' (Status: Nominal) System Level = 168.000000 (Status: Nominal) Power Optimized = 'Good' (Status: Nominal) Drive = 'Drive Presence' (Status: Nominal) Cable SAS A = 'Cable/Interconnect is connected' (Status: Nominal) Cable SAS B = 'Cable/Interconnect is connected' (Status: Nominal) FAN MOD 5A RPM = 3480.000000 (Status: Nominal)不过根据它的提示(其实插件也是调用如下命令),可以使用 /usr/sbin/ipmi-sel -h 10.103.1.100 --config-file ipmi.cfg --driver-type=LAN_2_0 --output-event-state --interpret-oem-data --entity-sensor-names执行结果是: # /usr/sbin/ipmi-sel -h 10.103.1.100 --config-file ipmi.cfg --driver-type=LAN_2_0 --output-event-state --interpret-oem-data --entity-sensor-names ID | Date | Time | Name | Type | State | Event 1 | Apr-08-2011 | 06:42:13 | System Board SEL | Event Logging Disabled | Nominal | Log Area Reset/Cleared 2 | Jan-01-1970 | 08:00:31 | System Board Intrusion | Physical Security | Critical | General Chassis Intrusion ; Intrusion while system Off 3 | Jan-01-1970 | 08:00:36 | System Board Intrusion | Physical Security | Critical | General Chassis Intrusion ; Intrusion while system Off 4 | Aug-15-2011 | 23:09:53 | Disk Drive Bay 1 Drive 2 | Drive Slot | Critical | Drive Fault ; OEM Event Data2 code = 01h ; OEM Event Data3 code = 02h 5 | Aug-16-2011 | 11:38:25 | Disk Drive Bay 1 Drive 2 | Drive Slot | Nominal | Drive Presence ; OEM Event Data2 code = 01h ; OEM Event Data3 code = 02h 6 | Aug-16-2011 | 11:38:25 | Disk Drive Bay 1 Drive 2 | Drive Slot | Critical | Drive Fault ; OEM Event Data2 code = 01h ; OEM Event Data3 code = 02h 7 | Aug-16-2011 | 11:38:55 | Disk Drive Bay 1 Drive 2 | Drive Slot | Nominal | Drive Presence ; OEM Event Data2 code = 01h ; OEM Event Data3 code = 02h 8 | Jun-10-2012 | 22:41:13 | System Board Ambient Temp | Temperature | Warning | Upper Non-critical - going high ; Sensor Reading = 45.00 C ; Threshold = 45.00 C 9 | Jun-11-2012 | 02:53:53 | System Board Ambient Temp | Temperature | Nominal | Upper Non-critical - going high ; Sensor Reading = 43.00 C ; Threshold = 45.00 C 10 | Nov-05-2012 | 21:56:42 | Disk Drive Bay 1 Drive 2 | Drive Slot | Critical | Drive Fault ; OEM Event Data2 code = 01h ; OEM Event Data3 code = 02h 11 | Nov-14-2012 | 21:53:58 | Disk Drive Bay 1 Drive 2 | Drive Slot | Nominal | Drive Presence ; OEM Event Data2 code = 01h ; OEM Event Data3 code = 02h 12 | Nov-14-2012 | 21:53:58 | Disk Drive Bay 1 Drive 2 | Drive Slot | Critical | Drive Fault ; OEM Event Data2 code = 01h ; OEM Event Data3 code = 02h 13 | Nov-14-2012 | 21:54:19 | Disk Drive Bay 1 Drive 2 | Drive Slot | Nominal | Drive Presence ; OEM Event Data2 code = 01h ; OEM Event Data3 code = 02h 14 | Nov-15-2012 | 16:12:03 | Disk Drive Bay 1 Drive 2 | Drive Slot | Critical | Drive Fault ; OEM Event Data2 code = 01h ; OEM Event Data3 code = 02h 15 | Nov-17-2012 | 17:14:34 | Disk Drive Bay 1 Drive 2 | Drive Slot | Nominal | Drive Presence ; OEM Event Data2 code = 01h ; OEM Event Data3 code = 02h 16 | Nov-17-2012 | 17:14:34 | Disk Drive Bay 1 Drive 2 | Drive Slot | Critical | Drive Fault ; OEM Event Data2 code = 01h ; OEM Event Data3 code = 02h 17 | Nov-17-2012 | 17:15:40 | Disk Drive Bay 1 Drive 2 | Drive Slot | Nominal | Drive Presence ; OEM Event Data2 code = 01h ; OEM Event Data3 code = 02h 18 | Nov-19-2012 | 20:47:57 | Disk Drive Bay 1 Drive 2 | Drive Slot | Nominal | Drive Presence ; OEM Event Data2 code = 01h ; OEM Event Data3 code = 02h 19 | Nov-19-2012 | 20:50:04 | Disk Drive Bay 1 Drive 2 | Drive Slot | Nominal | Drive Presence ; OEM Event Data2 code = 01h ; OEM Event Data3 code = 02h 20 | Jan-01-1970 | 08:00:33 | System Board Intrusion | Physical Security | Critical | General Chassis Intrusion ; Intrusion while system Off 21 | Jan-01-1970 | 08:00:38 | System Board Intrusion | Physical Security | Critical | General Chassis Intrusion ; Intrusion while system Off 22 | Jun-27-2014 | 17:27:38 | Disk Drive Bay 1 Drive 2 | Drive Slot | Nominal | Drive Presence ; OEM Event Data2 code = 01h ; OEM Event Data3 code = 02h 23 | Jun-27-2014 | 17:27:53 | Disk Drive Bay 1 Drive 2 | Drive Slot | Nominal | Drive Presence ; OEM Event Data2 code = 01h ; OEM Event Data3 code = 02h 24 | Jan-01-1970 | 08:00:31 | System Board Intrusion | Physical Security | Critical | General Chassis Intrusion ; Intrusion while system Off 25 | Jan-01-1970 | 08:00:36 | System Board Intrusion | Physical Security | Critical | General Chassis Intrusion ; Intrusion while system Off 26 | Oct-31-2016 | 05:48:35 | System Board Ambient Temp | Temperature | Warning | Lower Non-critical - going low ; Sensor Reading = 8.00 C ; Threshold = 8.00 C 27 | Oct-31-2016 | 09:00:38 | System Board Ambient Temp | Temperature | Nominal | Lower Non-critical - going low ; Sensor Reading = 10.00 C ; Threshold = 8.00 C 5.3编写Zabbix外部检查(External checks)脚本 # pwd /usr/local/zabbix/share/zabbix/externalscripts # cat check_ipmi 下面是脚本内容 #!/bin/bash #用于检测ipmi相关信息 #Create on 2016-011-18 #@author: Chinge_Yang args="$*" echo $(date +%F-%T) $args >> /tmp/check_ipmi.debug check_ipmi_dir=/usr/local/zabbix/shell/check_ipmi_sensor check_ipmi_bin=$check_ipmi_dir/check_ipmi_sensor ipmi_sensors=/usr/sbin/ipmi-sensors ipmi_cfg=$check_ipmi_dir/ipmi.cfg #$check_ipmi_bin -f $ipmi_cfg -v $args #${ipmi_sel} $args --config-file $ipmi_cfg --driver-type=LAN_2_0 --output-event-state --interpret-oem-data --entity-sensor-names options="--quiet-cache --sdr-cache-recreate --interpret-oem-data --output-sensor-state --ignore-not-available-sensors --driver-type=LAN_2_0 --output-sensor-thresholds" function usage(){ echo "Usage: `basename $0` options (-h HOST|-n NAME)" } function check(){ result=$($ipmi_sensors -h $host --config-file $ipmi_cfg $options|grep "$name"|awk -F"| " '{print $NF}') printf "%.4f\n" $result } if [ $# -lt 4 ] then usage exit 55 fi # 用法: scriptname -options # 注意: 必须使用破折号 (-) # 参数后接冒号,表示必须接值 while getopts ":h:n:" Option;do case $Option in h) host=$OPTARG ;; n) name=$OPTARG ;; *) usage ;; # 默认情况的处理 esac done shift $(($OPTIND - 1)) # (译者注: shift命令是可以带参数的, 参数就是移动的个数) # 将参数指针减1, 这样它将指向下一个参数. # $1 现在引用的是命令行上的第一个非选项参数, #+ 如果有一个这样的参数存在的话. check exit 0 添加执行权限 chmod a+x check_ipmi 5.4新建自定义模板 这里就不详细介绍内容了,其实就是改改上文中的模板而来,一张图看完内容: 给2张图看看效果: 好吧,最后发现,就算是自定义脚本,仍然是获取数据艰难,脚本执行ipmi的命令都timeout。。。。 参考资料: http://pengyao.org/zabbix-monitor-ipmi-1.html http://zh.community.dell.com/techcenter/w/techcenter_wiki/189.idrac-7 http://www.weibo.com/p/1001603921723593500304 http://www.thomas-krenn.com/en/wiki/IPMI_Sensor_Monitoring_Plugin

优秀的个人博客,低调大师

信创国产化,试试 Solon v2.2.2

Solon 是一个高效的 Java 应用开发框架:更快、更小、更简单。它不是 Spring、没有用 Servlet、也无关 JavaEE,是一个有自己接口标准的开放生态。可以为应用软件国产化提供帮助,助力信创建设。 150来个生态插件,覆盖各种不同的应用开发场景: 相对于 Spring Boot 和 Spring Cloud 的项目: 启动快 5 ~ 10 倍。 (更快) qps 高 2~ 3 倍。 (更高) 运行时内存节省 1/3 ~ 1/2。 (更少) 打包可以缩小到 1/2 ~ 1/10;比如,300Mb 的变成了 23Mb。 (更小) 同时支持 jdk8, jdk11, jdk17, jdk19。 似曾相似的体验,入门更简单,迁移很方便: @Controller public class App { public static void main(String[] args) { Solon.start(App.class, args, app->{ //手写模式 app.get("/", ctx -> ctx.outputAsJson("{message:'Hello world!'}")) }); } //注解模式 @Get @Socket @Mapping("/hello") public String hello(String name) { return String.format("Hello %s!", name); } } 入门探索视频(用户录制): 本次更新: 新增 bean-searcher-solon-plugin 插件 优化 rocketmq5-solon-cloud-plugin 插件 移除 forest-solon-plugin 源码,改引用 com.dtflys.forest:forest-solon-plugin 移除 liteflow-solon-plugin 源码,改引用 com.yomahub:liteflow-solon-plugin 增加 调试模式下,模板仅在文件模式下才加载源码提供器 增加 用属性配置控制 solon.logging.log4j2::File 添加器是否启用! 增加 用属性配置控制 solon.logging.logback::File 添加器是否启用! 增加 "solon.logging.config" 配置支持,可将日志的配置文件移到外部 增加 CloudProps 关于 username/password 与 ak/sk 配置互通的支持! 增加 CloudProps 关于 username/password 上下级传导的支持! 增加 Solon::stopBlock 接口 调整 Solon::stop 时把 app,appMain置为null 调整 solon.web.static 的目录优先级(支持两个,但只让一个生效) 调整 让注解产生的生命周期,排序+1 调整 让默认的 beanOnloaded 生命周期,排序-1 activerecord 升级为 5.0.4 bean-searcher 升级为 4.1.2 snack3 升级为 3.2.59 hutool 升级为 5.8.14 dubbo3 升级为 3.1.7 forest 升级为 1.5.30 rocketmq5-client 升级为 5.0.4 smarthttp 升级为 1.1.22 smartsocket 升级为 1.5.25 ons-client 升级为 1.8.8.8.Final

优秀的个人博客,低调大师

淘宝开发者创新大赛 | 新动力 创未来

赛题简介 本次大赛面向个人和企业等广大开发者,鼓励以淘系商家场景化需求为入口,基于淘宝小程序,通过淘系开放的能力,帮助商家优化消费流程,提高经营效率,创造新商业价值。 大赛亮点 1.能力开放空前:零门槛开放上百个关键API,包括交易、商品、会员、营销等核心业务能力。2.商家体量庞大:拥有数亿级的买家和千万级商家,业务需求多样,商业机会广阔。3.盈利模式清晰:即可通过服务市场向商家售卖应用;也通过商品成交抽佣、广告分成等商业模式变现。4.合作场景丰富:赛题设置了两大业务方向和5大业务场景,为开发者切入提供了丰富的选择。 赛程安排 创意赛:以方案创意和应用开发及交付为考核点 实战赛:以赛程一中开发者交付的产品实际运营结果为考核点。 创意赛和实战赛考核维度不同,奖项设置相互独立,凡创意赛入围选手均有资格继续参与实战赛,且实战赛评审结果不受创意赛结果影

优秀的个人博客,低调大师

科创企业密集关注 网络电话千亿市场

目前,国内不少科技密集型创业企业正在加紧关注包括在4g网络、三网融合、物联网、云服务,以及基于移动网络的新一代互联网语音通信等在内的先进应用技术,力图抢占战略性新兴产业发展的行业制高点。特别是现如今在国内外越来越热的免费网络电话,更是让科技密集型创业企业能够直接进军电信及通信产业的千亿市场。 记者了解到,网络电话最受青睐的特点是非常便宜甚至可以真正不花钱。那么江苏的市民是不是可以享受到这一“福利”呢?记者从江苏信柏数据科技公司了解到,“信柏通讯”这款手机软件无论是安卓还是苹果系统都可以下载,是目前市场上最新网络电话软件,具备音质清晰、接通速度快、显示真实号码、无需等待等性能,同时具有无需消耗流量,价格低廉等优势。 网络电话该如何使用呢?记者拿出手机,在软件商场里搜索“信柏通讯”并免费下载成功,对于第一次使用的市民软件中自带10元余额。输入对方的手机号码并拨打,会发生回拨只要接听即可。与对方聊天5分钟后,记者挂断电话,查询手机话费并未减少,只是消耗了10kb的流量,折合人民币0.002元。需要提醒的是,“市民想要真正无限畅打,需要购买10元通话包月卡,就可以在大陆地区免费无限时拨打。”记者芦艳 ====================================分割线================================ 本文转自d1net(转载)

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册