Linux OMD——优雅的监控解决方案 (linux omd)

随着互联网和云计算的快速发展,各种应用系统和服务不断涌现,迅速推动了企业的数字化转型。然而,对于企业而言,如何保证各个系统和服务的稳定运行,保障用户体验,成为了一个重要的问题。针对这个问题,监控技术应运而生。

监控可以看做是一个对IT系统的实时监测、预警和反馈的系统。也就是说,通过监控系统,可以实时了解各个系统的运行状况,及时发现异常情况,并及时采取措施,以保证系统安全和稳定运行。

在Linux系统中,有很多监控软件,比较常见的有Nagios和Zabbix等。不过,这些软件都有各自的问题,比较琐碎、配置复杂等,而且不能很好地满足企业的监控需求。为此,现在有一种优雅的监控解决方案──linux omd。

Linux OMD的概述

OMD是“Open Monitoring Distribution”的缩写,也就是开源监控系统分发版,是一种基于Nagios的开源监控系统,由多个监控模块组成的系统,通过OMD将这些模块统一起来,形成一个完整的监控系统,大大减少了监控系统的配置时间和成本。

OMD集成了Nagios、Check_MK、NRPE、Livestatus、PNP4Nagios以及其他工具软件,同时还集成了RRDtool、Apache、MySQL等服务,以实现更大程度的监控功能。OMD还支持可视化监控、收集和分析系统和服务的性能指标、提供预警等丰富的功能。

Linux OMD的优势

1、配置简洁精练

使用OMD之后,只需要对Nagios的配置文件做一些简单的配置即可,大大减少了配置的时间和成本,同时也增加了监控配置的灵活性。

2、集成监控软件

OMD集成了多个优秀的监控软件,如Nagios、Check_MK、PNP4Nagios等,能够很好地满足企业的监控需求。同时,OMD可以根据企业的具体需求,按照组件的方式部署,灵活地满足用户需要。

3、可视化报表

OMD提供了多种图表和统计报表等可视化数据,可以让用户直观地了解监控信息。

4、减少监控成本

OMD提供了许多监控和数据处理功能,大大减少了企业的监控成本。

使用Linux OMD的注意点

1、选择合适的版本

OMD的版本很多,用户需要根据自己的系统环境和需求,选择合适的版本进行安装。

2、配置正确的监控对象

OMD的灵活性很大,用户需要根据企业实际需求,配置正确的监控对象,避免资源浪费。

3、避免监控病态

有些用户为了让监控指标更准确,会设置很多的检测对象,这容易造成监控病态,导致监控系统失去思考,最终影响监控效果。

OMD作为一个优秀的监控解决方案,能够很好地满足企业的监控需求。同时,OMD也存在一些配置问题和安装过程中的坑点,需要用户自行解决。因此,在选择和使用OMD之前,用户需要对自己的系统和需求进行仔细分析,选择适合自己的版本和配置方案。

相关问题拓展阅读:

  • MD5加密算法 ASP版

MD5加密算法 ASP版

MD5的Java Bean实现

MD5简介

MD5的全称是Message-Digest Algorithm 5,在90年代初由MIT的计算机科学实验室和RSA Data Security Inc发明,经MD2、MD3和MD4发展而来。

Message-Digest泛指字节串(Message)的Hash变换,就是把一个任意长度的字节串变换成一定长的大整数。枝辩请注意我使用了“字节串”而不是“字符串”这个词,是因为这种变换只与字节的值有关,与字符集或编码方式无关。

MD5将任意长度的“字节串”变换成一个128bit的大整粗搭早数,并且它是一个不可逆的字符串变换算法,换句话说就是,即使你看到源程序和算法描述,也无法将一个MD5的值变换回原始的字符串,从数学原理上说,是因为原始的字符串有无穷多个,这有点象不存在反函数的数学函数。

MD5的典型应用是对一段Message(字节串)产生fingerprint(指纹),以防止被“篡改”。举个例子,你将一段话写在一个叫readme.txt文件中,并对这个readme.txt产生一个MD5的值并记录在案,然后你可以传播这个文件给别人,别人如果修改了文件中的任何内容,你对这个文件重新计算MD5时就会发现。如果再有一个第三方的认证机构,用MD5还可以防止文件作者的“抵赖”,这就是所谓的数字签名应用。

MD5还广泛用于加密和解密技术上,在很多操作系统中,用户的密码是以MD5值(或类似的其它算法)的方式保存的,用户Login的时候,系统是把用户输入的密码计算成MD5值,然后再去和系统中保存的MD5值进行比较,而系统并不“知道”用户的密码是什么。

一些黑客破获这种密码的方法是一种被称为“跑字典”的方法。有两种方法得到字典,一种是日常搜集的用做密码的字符串表,另一种是用排列组合方法生成的,先用MD5程序计算出这些字典项的MD5值,然后再用目标的MD5值在这个字典中检索。

即使假设密码的更大长度为8,同时密码只能是字母和数字,共26+26+10=62个字符,排列组合出的字典的项数则是P(62,1)+P(62,2)….+P(62,8),那也已经是一个很天文的数字了,存储这个字典就需要TB级的磁盘组,而且这种方法还有一个前提,就是能获得目标账户的密码MD5值的情况下才可以。

在很多电子商务和社区应用中,管理用户的Account是一种最常用的基本功能,尽管很多Application Server提供了这些基本组件,但很多应用开发者为了管理的更大的灵活性还是喜欢采用关系数据库来管理用户,懒惰的做法是用户的密码往往使用明文或简单的变换后直接保存在数据库中,因此这些用户的密码对软件开发者或系统管理员来说可以说毫无保密可言,本文的目的是介绍MD5的Java Bean的岩雀实现,同时给出用MD5来处理用户的Account密码的例子,这种方法使得管理员和程序设计者都无法看到用户的密码,尽管他们可以初始化它们。但重要的一点是对于用户密码设置习惯的保护。

有兴趣的读者可以从这里取得MD5也就是RFC 1321的文本。

实现策略

MD5的算法在RFC1321中实际上已经提供了C的实现,我们其实马上就能想到,至少有两种用Java实现它的方法,之一种是,用Java语言重新写整个算法,或者再说简单点就是把C程序改写成Java程序。第二种是,用JNI(Java Native Interface)来实现,核心算法仍然用这个C程序,用Java类给它包个壳。

但我个人认为,JNI应该是Java为了解决某类问题时的没有办法的办法(比如与操作系统或I/O设备密切相关的应用),同时为了提供和其它语言的互操作性的一个手段。使用JNI带来的更大问题是引入了平台的依赖性,打破了SUN所鼓吹的“一次编写到处运行”的Java好处。因此,我决定采取之一种方法,一来和大家一起尝试一下“一次编写到处运行”的好处,二来检验一下Java 2现在对于比较密集的计算的效率问题。

实现过程

限于这篇文章的篇幅,同时也为了更多的读者能够真正专注于问题本身,我不想就某一种Java集成开发环境来介绍这个Java Bean的制作过程,介绍一个方法时我发现步骤和命令很清晰,我相信有任何一种Java集成环境三天以上经验的读者都会知道如何把这些代码在集成环境中编译和运行。用集成环境讲述问题往往需要配很多屏幕截图,这也是我一直对集成环境很头疼的原因。我使用了一个普通的文本编辑器,同时使用了Sun公司标准的JDK 1.3.0 for Windows NT。

其实把C转换成Java对于一个有一定C语言基础的程序员并不困难,这两个语言的基本语法几乎完全一致.我大概花了一个小时的时间完成了代码的转换工作,我主要作了下面几件事:

把必须使用的一些#define的宏定义变成Class中的final static,这样保证在一个进程空间中的多个Instance共享这些数据

删去了一些无用的#if define,因为我只关心MD5,这个推荐的C实现同时实现了MD2 MD3和 MD4,而且有些#if define还和C不同编译器有关

将一些计算宏转换成final static 成员函数。

所有的变量命名与原来C实现中保持一致,在大小写上作一些符合Java习惯的变化,计算过程中的C函数变成了private方法(成员函数)。

关键变量的位长调整

定义了类和方法

需要注意的是,很多早期的C编译器的int类型是16 bit的,MD5使用了unsigned long int,并认为它是32bit的无符号整数。而在Java中int是32 bit的,long是64 bit的。在MD5的C实现中,使用了大量的位操作。这里需要指出的一点是,尽管Java提供了位操作,由于Java没有unsigned类型,对于右移位操作多提供了一个无符号右移:>>>,等价于C中的 >> 对于unsigned 数的处理。

因为Java不提供无符号数的运算,两个大int数相加就会溢出得到一个负数或异常,因此我将一些关键变量在Java中改成了long类型(64bit)。我个人认为这比自己去重新定义一组无符号数的类同时重载那些运算符要方便,同时效率高很多并且代码也易读,OO(Object Oriented)的滥用反而会导致效率低下。

限于篇幅,这里不再给出原始的C代码,有兴趣对照的读者朋友可以去看RFC 1321。MD5.java源代码

测试

在RFC 1321中,给出了Test suite用来检验你的实现是否正确:

MD5 (“”) = d41d8cd98f00b204eecf8427e

MD5 (“a”) = 0cc175b9c0f1b6a831c399e

MD5 (“abc”) =cd24fb0d6963f7d28e17f72

MD5 (“message digest”) = f96b697d7cb7938d525a2f31aaf161d0

MD5 (“abcdefghijklmnopqrstuvwxyz”) = c3fcd3d76192e4007dfb496cca67e13b

……

这些输出结果的含义是指:空字符串””的MD5值是d41d8cd98f00b204eecf8427e,字符串”a”的MD5值是0cc175b9c0f1b6a831c399e……

编译并运行我们的程序:

javac –d . MD5.java

java beartool.MD5

为了将来不与别人的同名程序冲突,我在我的程序的之一行使用了package beartool;

因此编译命令javac –d . MD5.java 命令在我们的工作目录下自动建立了一个beartool目录,目录下放着编译成功的 MD5.class

我们将得到和Test suite同样的结果。当然还可以继续测试你感兴趣的其它MD5变换,例如:

java beartool.MD

将给出1234的MD5值。

可能是我的计算机知识是从Apple II和Z80单板机开始的,我对大写十六进制代码有偏好,如果您想使用小写的Digest String只需要把byteHEX函数中的A、B、C、D、E、F改成a、b、 c、d、e、f就可以了。

MD5据称是一种比较耗时的计算,我们的Java版MD5一闪就算出来了,没遇到什么障碍,而且用肉眼感觉不出来Java版的MD5比C版的慢。

为了测试它的兼容性,我把这个MD5.class文件拷贝到我的另一台Linux+IBM JDK 1.3的机器上,执行后得到同样结果,确实是“一次编写到处运行了”。

Java Bean简述

现在,我们已经完成并简单测试了这个Java Class,我们文章的标题是做一个Java Bean。

其实普通的Java Bean很简单,并不是什么全新的或伟大的概念,就是一个Java的Class,尽管 Sun规定了一些需要实现的方法,但并不是强制的。而EJB(Enterprise Java Bean)无非规定了一些必须实现(非常类似于响应事件)的方法,这些方法是供EJB Container使用(调用)的。

在一个Java Application或Applet里使用这个bean非常简单,最简单的方法是你要使用这个类的源码工作目录下建一个beartool目录,把这个class文件拷贝进去,然后在你的程序中import beartool.MD5就可以了。最后打包成.jar或.war是保持这个相对的目录关系就行了。

Java还有一个小小的好处是你并不需要摘除我们的MD5类中那个main方法,它已经是一个可以工作的Java Bean了。Java有一个非常大的优点是她允许很方便地让多种运行形式在同一组代码存,比如,你可以写一个类,它即是一个控制台Application和GUI Application,同时又是一个Applet,同时还是一个Java Bean,这对于测试、维护和发布程序提供了极大的方便,这里的测试方法main还可以放到一个内部类中,有兴趣的读者可以参考:

这里讲述了把测试和示例代码放在一个内部静态类的好处,是一种不错的工程化技巧和途径。

把Java Bean装到P里

正如我们在本文开头讲述的那样,我们对这个MD5 Bean的应用是基于一个用户管理,这里我们假设了一个虚拟社区的用户login过程,用户的信息保存在数据库的个名为users的表中。这个表有两个字段和我们的这个例子有关,userid :char(20)和pwdmd5 :char(32),userid是这个表的Primary Key,pwdmd5保存密码的MD5串,MD5值是一个128bit的大整数,表示成16进制的ASCII需要32个字符。

这里给出两个文件,login.html是用来接受用户输入的form,login.jsp用来模拟使用MD5 Bean的login过程。

为了使我们的测试环境简单起见,我们在P中使用了JDK内置的JDBC-ODBC Bridge Driver,community是ODBC的DSN的名字,如果你使用其它的JDBC Driver,替换掉login.jsp中的

Connection con= DriverManager.getConnection(“jdbc:odbc:community”, “”, “”);

即可。

login.jsp的工作原理很简单,通过post接收用户输入的UserID和Password,然后将Password变换成MD5串,然后在users表中寻找UserID和pwdmd5,因为UserID是users表的Primary Key,如果变换后的pwdmd5与表中的记录不符,那么SQL查询会得到一个空的结果集。

这里需要简单介绍的是,使用这个Bean只需要在你的P应用程序的WEB-INF/classes下建立一个beartool目录,然后将MD5.class拷贝到那个目录下就可以了。如果你使用一些集成开发环境,请参考它们的deploy工具的说明。在P使用一个java Bean关键的一句声明是程序中的第2行:

这是所有P规范要求P容器开发者必须提供的标准Tag。

id=实际上是指示P Container创建Bean的实例时用的实例变量名。在后面的之间的Java程序中,你可以引用它。在程序中可以看到,通过 pwdmd5=oMD5.getMD5ofStr (password)引用了我们的MD5 Java Bean提供的唯一一个公共方法: getMD5ofStr。

Java Application Server执行.P的过程是先把它预编译成.java(那些Tag在预编译时会成为java语句),然后再编译成.class。这些都是系统自动完成和维护的,那个.class也称为Servlet。当然,如果你愿意,你也可以帮助Java Application Server去干本该它干的事情,自己直接去写Servlet,但用Servlet去输出HTML那简直是回到了用C写CGI程序的恶梦时代。

如果你的输出是一个复杂的表格,比较方便的方法我想还是用一个你所熟悉的HTML编辑器编写一个“模板”,然后在把P代码“嵌入”进去。尽管这种P代码被有些专家指责为“空心粉”,它的确有个缺点是代码比较难管理和重复使用,但是程序设计永远需要的就是这样的权衡。我个人认为,对于中、小型项目,比较理想的结构是把数据表示(或不严格地称作WEB界面相关)的部分用P写,和界面不相关的放在Bean里面,一般情况下是不需要直接写Servlet的。

如果你觉得这种方法不是非常的OO(Object Oriented),你可以继承(extends)它一把,再写一个bean把用户管理的功能包进去。

到底能不能兼容?

我测试了三种Java应用服务器环境,Resin 1.2.3、Sun J2EE 1.2、IBM WebSphere 3.5,所幸的是这个Java Bean都没有任何问题,原因其实是因为它仅仅是个计算程序,不涉及操作系统,I/O设备。其实用其它语言也能简单地实现它的兼容性的,Java的唯一优点是,你只需提供一个形态的运行码就可以了。请注意“形态”二字,现在很多计算结构和操作系统除了语言本身之外都定义了大量的代码形态,很简单的一段C语言核心代码,转换成不同形态要考虑很多问题,使用很多工具,同时受很多限制,有时候学习一种新的“形态”所花费的精力可能比解决问题本身还多。比如光Windows就有EXE、Service、的普通DLL、COM DLL以前还有OCX等等等等,在Unix上虽说要简单一些,但要也要提供一个.h定义一大堆宏,还要考虑不同平台编译器版本的位长度问题。我想这是Java对我来说的一个非常重要的魅力吧。

MD5算法说明

一、补位

二、补数据长度

三、初始化MD5参数

四、处理位操作函数

五、主要变换过程

六、输出结果

补位:

MD5算法先对输入的数据进行补位,使得数据位长度LEN对512求余的结果是448。即数据扩展至K*512+448位。即K*64+56个字节,K为整数。

具体补位操作:补一个1,然后补0至满足上述要求。

补数据长度:

用一个64位的数字表示数据的原始长度B,把B用两个32位数表示。这时,数

据就被填补成长度为512位的倍数。

初始化MD5参数:

四个32位整数 (A,B,C,D) 用来计算信息摘要,初始化使用的是十六进制表

示的数字

A=0X

B=0X89abcdef

C=0Xfedcba98

D=0X

处理位操作函数:

X,Y,Z为32位整数。

F(X,Y,Z) = X&Y|NOT(X)&Z

G(X,Y,Z) = X&Z|Y?(Z)

H(X,Y,Z) = X xor Y xor Z

I(X,Y,Z) = Y xor (X|not(Z))

主要变换过程:

使用常数组T, T为32位整数用16进制表示,数据用16个32位

的整数数组M表示。

具体过程如下:

/* 处理数据原文 */

For i = 0 to N/16-1 do

/*每一次,把数据原文存放在16个元素的数组X中. */

For j = 0 to 15 do

Set X to M.

end /结束对J的循环

/* Save A as AA, B as BB, C as CC, and D as DD.

*/

AA = A

BB = B

CC = C

DD = D

/* 第1轮*/

/* 以 表示如下操作

a = b + ((a + F(b,c,d) + X + T)

/* Do the following 16 operations. */

22 4>

22 8>

>

/* 第2轮* */

/* 以 表示如下操作

a = b + ((a + G(b,c,d) + X + T)

/* Do the following 16 operations. */

>

>

>

/* 第3轮*/

/* 以 表示如下操作

a = b + ((a + H(b,c,d) + X + T)

/* Do the following 16 operations. */

>

/* 第4轮*/

/* 以 表示如下操作

a = b + ((a + I(b,c,d) + X + T)

/* Do the following 16 operations. */

/* 然后进行如下操作 */

A = A + AA

B = B + BB

C = C + CC

D = D + DD

end /* 结束对I的循环*/

linux omd的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于linux omd,Linux OMD——优雅的监控解决方案,MD5加密算法 ASP版的信息别忘了在本站进行查找喔。

成都网站推广找创新互联,老牌网站营销公司
成都网站建设公司创新互联(www.cdcxhl.com)专注高端网站建设,网页设计制作,网站维护,网络营销,SEO优化推广,快速提升企业网站排名等一站式服务。IDC基础服务:云服务器、虚拟主机、网站系统开发经验、服务器租用、服务器托管提供四川、成都、绵阳、雅安、重庆、贵州、昆明、郑州、湖北十堰机房互联网数据中心业务。

分享文章:Linux OMD——优雅的监控解决方案 (linux omd)
本文路径:http://www.shufengxianlan.com/qtweb/news37/421787.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联