Javascript远程调用其它页面

[不指定 2005/10/09 22:55 | by ipaddr ]
1.

<script language="javascript">
function getHttp()
{
  var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
  xmlhttp.Open("GET", "http://www.xxxx.com/port.jsp", false);
  xmlhttp.Send();
  alert(xmlhttp.responseText);
}
</script>

2.
下面是126.com邮箱申请的用户名检测。
if (window.XMLHttpRequest)
{
req = new XMLHttpRequest();
} else if (window.ActiveXObject) {
req = new ActiveXObject("Microsoft.XMLHTTP");
}
document.getElementById( "content" ).innerHTML = ".......正在验证,请稍候.........";
req.onreadystatechange = processChech;
req.open( "get", "./checkusername.jsp?username="+username, false );
req.send();

3.
以前看到很多网友问,自己有两台服务器,如何这两台服务器上的mdb数据库数据的互访。今天作了个远程的接口,以xml形式返回mdb中的数据。用的主要思想是通过recordset对象的save方法将数据填充到一个xml dom里,但是,这种方法产生的XML不够简洁,自动产生的XML包含了schema信息,它描述这个XML里允许有什么节点和属性以及采用何种数据类型,而且数据节点也增加了名称空间。schema信息在需要数据验证的地方或进行更复杂的处理或许很有用,但是,大多数情况下,我们使用的是瘦客户机,我们不需要schema信息。我们可以利用XSLT来分离出我们想要的信息,去掉多余的信息。

代码如下:
<%
'生成xsl样式
str = chr(13)&chr(10)&chr(9)
xslt="<?xml version=""1.0""?>" & chr(13)&chr(10) & "<xsl:stylesheet version=""1.0"""_
     &" xmlns:xsl=""http://www.w3.org/1999/XSL/Transform"""_
     &" xmlns:s=""uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882"""_
     &" xmlns:dt=""uuid:C2F41010-65B3-11d1-A29F-00AA00C14882"""_
     &" xmlns:rs=""urn:schemas-microsoft-com:rowset"""_
     &" xmlns:z=""#RowsetSchema"">"& str_
& "<xsl:output omit-xml-declaration=""yes""/>"&str_
&  "<xsl:template match=""/"">"& str&chr(9)_
    & "<xsl:element name=""xml"">"& str&chr(9)&chr(9)_
         &"<xsl:for-each select=""/xml/rs:data/z:row"">"& str&chr(9)&chr(9)&chr(9)_
             &"<xsl:element name=""row"">"& str&chr(9)&chr(9)&chr(9)&chr(9)_
                 &"<xsl:for-each select=""@*"">"& str&chr(9)&chr(9)&chr(9)&chr(9)&chr(9)_
                    & "<xsl:element name=""{name()}"">"& str&chr(9)&chr(9)&chr(9)&chr(9)&chr(9)&chr(9)_
                        & "<xsl:value-of select="".""/>"& str&chr(9)&chr(9)&chr(9)&chr(9)&chr(9)_
                     &"</xsl:element>"& str&chr(9)&chr(9)&chr(9)&chr(9)_
                & "</xsl:for-each>"& str&chr(9)&chr(9)&chr(9)_
            & "</xsl:element>"& str&chr(9)&chr(9)_
         &"</xsl:for-each>"& str&chr(9)_
     &"</xsl:element>"& str_
 &"</xsl:template>"& chr(13)&chr(10)_
&"</xsl:stylesheet>"

'读取数据库
curDir = Server.MapPath("data.mdb")
set conn=server.createobject("adodb.connection")
conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & curDir
set rs=conn.Execute("select * from admins")
Dim objXMLDOM
Set objXMLDOM = Server.CreateObject("MSXML2.DOMDocument.3.0")
'将recordset对象保存到dom里
rs.save objXMLDOM, 1
Set rs = Nothing
Dim strCleanXML, objXMLDOM_XSLT
Set objXMLDOM_XSLT = CreateObject("MSXML2.DOMDocument")
objXMLDOM_XSLT.loadXml(xslt)
'用xsl格式化数据
strCleanXML = objXMLDOM.transformNode(objXMLDOM_XSLT)
 
Set objXMLDOM = Nothing
Set objXMLDOM_XSLT = Nothing
'输出数据
Response.Write strCleanXML
%>

      因为xml是跨平台的,所以呢不论是asp还是jsp或者客户端都可以通过该接口获得数据,然后用自己的样式来显示数据。比如,在客户端我们可以使用javascript操作xmlhttp来获得www.xxxx.com上某个mdb的数据:
<script language="javascript">
function req(){
  var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
  xmlhttp.Open("GET", "http://www.xxxx.com/mdb_inerface.asp", false);
  'mdb_interface.asp既为放在www.xxxx.com上的mdb接口文件
  xmlhttp.Send();
  alert(xmlhttp.responseText);
}
</script>
</HEAD>
<body>
<input type="button" onclick="req();" value=" 获 取 " /></br>

4.服务器端,可以使用SOAP,客户端,用javascript存取。

Tomcat5.0.28下AXIS完全安装手册

[不指定 2005/09/29 22:56 | by ipaddr ]
Tomcat5.0.28下AXIS完全安装手册

IPADDR(漂,一直漂,BCOMCN,ASPBIZ 马甲可真多)原创,转载请注明.

网上有一些AXIS的安装文档,不是很详细,而且,我按网上的资料安装得不是很成功,老是报错,可能是因为使用了较新版本的Tomcat,AXIS.

经过多番努力,终于配置成功,把安装过程和心得和大家分享一下.

一.简介
什么是SOAP?SOAP是一个应用程序间的基于XML的通信工具和规范.SOAP最初由MicroSoft和Userland公司开发,已经演化了好几个版本,当前的版本SOAP1.1正飞速发展.W3C的XML协议工作组正努力把它发展为一个真正的开发的标准.SOAP1.2草案已经发布,它能澄清1.1版规范的容易混淆的地方.

什么是Axis?Axis总体上是一个SOAP引擎,但又不仅仅是个引擎,它还:1)是一个简单的独立的服务器2)是一个可插入到servlet引擎(如Tomcat)中的服务3)可扩展的支持WSDL4)能根据WSDL产生JAVA文件/类5)包括一些例子程序6)包括一个可以监控TCP/IP包的工具

Axis起源于IBM的SOAP4J,是Apache SOAP的第三代产品,相对于以前的版本,它有如下特性:1)快速,它使用了基于事件的SAX解析机制.2)灵活,用户可以灵活定制扩展.3)稳定,接口将会变动很小.4)基于组件开发.5)支持WSDL1.1

二.准备
1.安装Tomcat5.0.28,这是当前稳定版本.Tomcat运行在80端口.访问http://localhost/检查Tomcat是否安装成功.
(Tomcat+Apache+Mysql的整合安装,详见另外一篇.)
2.下载AXIS:
官方站点:http://xml.apache.org/axis/index.html
下载软件:axis-bin-1_2_1.tar.gz
3.下载相关包:
a.mail.jar 下载地址:http://java.sun.com/products/javamail
b.activation.jar 下载地址:http://java.sun.com/products/javabeans/glasgow/jaf.html
c.xerces.jar 下载地址:http://xml.apache.org/xerces-j/index.html
d.xmlsec-1.2.1.jar 下载地址:http://xml.apache.org/security/

三.安装
1.将四个相关包,全部拷到<CATALINA_HOME>/common/lib目录(Tomcat安装目录下的common/lib)下
2.解压axis-bin-1_2_1.tar.gz,将压缩包里的webapps/axis拷到网站根目录下(如果Tomcat是默认配置,那就是<CATALINA_HOME>/webapps/ROOT目录).
3.
修改Tomcat的配置文件server.xml(<CATALINA_HOME>/conf/server.conf)
在</Host>前加入:
<Context path="/axis" docBase="C:\Program Files\Apache Software Foundation\Tomcat\webapps\ROOT\axis" debug="0" reloadable="true" > </Context>
(docBase里是你的实际axis存放的目录)
注意,此步至关重要,AXIS的安装文档中没有提到此步,导致很多人安装不成功.
如果没有此步,访问http://localhost/axis时,提示如下错误:
Can't find bundle for base name i18n, locale en_US(zh_CN)
表面是上看i18n国际化的问题,但既使i18n.properties,i18n_zh_cn.properties存在,也无法找到.
网上很多朋友安装到此,无法继续下去,我也找了很多资料,都没有解决.后来查看Tomcat的文档,猜测是Tomcat配置的问题,经测试,终于成功.
可能Tomcat的前期版本,不需此设置.没有测试过.
另外,也可以将axis/WEB-INF/classes/*,axis/WEB-INF/lib/*的所有文件,拷到<CATALINA_HOME>/common/lib/这个方法比较麻烦.
注:AXIS客户端,需要拷贝axis/WEB-INF/lib/*到<CATALINA_HOME>/common/lib/

四.测试
重新启动Tomcat.
1.访问:http://localhost/axis
点击:Validation - Validate the local installation's configuration测试是否有错.
2.
写个小程序:
public class HelloService
{
public String sayHello(String username)
{
 return "Hello:"+username;
}
}
另存为axis目录下HelloService.jws
再能过WEB访问:
http://loalhost/axis/HelloService.jws
http://loalhost/axis/HelloService.jws?method=sayHello&parameter=ipaddr


另外,如果是Apache+Tomcat整合在一块,以上配置后,还需要更改Apache的配置,在httpd.conf中加入:
JkMount /axis/* ajp13
通过Apache可以访问axis的Servlet

五.AXIS介绍补充
Apache Axis是Apache WebService项目中的子项目,其最初起源于IBM的"SOAP4J",应该属于最早的一批用于构造基于SOAP应用的Framework。

目前Apache Axis已经发展到了第三代,其核心是一个SOAP处理器,用于开发包括客户端,服务器端,SOAP Gateway等各种应用。事实上Apache Axis在了1.0版后,其发行版本还包括了完整的J2EE服务器插件, WSDL支持和生成,TCP/IP监视器等组件,从这个意义上来说Apahce Axis已不仅仅是个SOAP框架了,它包含了除了UDDI外对整个Web Service协议栈(Protocol Stack)的支持。

对大多数关心Macromedia产品的人来说,Macromedia是Axis小组的核心成员之一,他们在几乎所有J2EE服务器端的产品线中包含了Axis,也就是说Macromedia对WebService的支持是通过Apache Axis实现的,这其中包括了JRun, Flex, ColdFusion。即便是Flash Remoting,由于其核心还是SOAP,所以也是使用了Axis的SOAP框架。

和.NET的WS不同,Axis是一个非常易于扩展的体系结构,其设计的核心思想是建立一个数据处理的管道,通过把handler编织成一条处理链从而无限扩展其可能性。打个比方,在输入部分开发人员既可以编写基于HTTP Basic Authentication的用户验证模块也可以插入SOAP Auth模块用于验证请求,而输出部分既可以通过XML binding把结果输出为SOAP XML也可以象Flash Remoting那样把结果输出成binary格式。

同时Axis也提供了所有的处理模块,使得用户能在最快的时间把服务器组件发布成WS.总的来说Axis有以下几个特点:


速度 - Axis 使用 SAX 而不是 DOM 来处理XML请求,所以速度上有很大的改善。
灵活性 - 刚才也提到了,Axis的体系结构是一个全开放式的处理器,所以扩展模块极为方便。面向组件的发布方式 - 处理链上可重复使用组件来完成类似的操作。
Transport 框架 - Axis的核心和底层的transport完全分离,也就是说不管WS的Transport是HTTP, FTP, MAIL, MESSAGE QUEUE,只要插入对应的Transport模块即可,而不需改动其他部分。
WSDL1.1支持 - 可自动由Java Object生成WSDL


Lucene不是一个完整的全文索引应用,而是是一个用Java写的全文索引引擎工具包,它可以方便的嵌入到各种应用中实现针对应用的全文索引/检索功能。

Lucene的作者:Lucene的贡献者Doug Cutting是一位资深全文索引/检索专家,曾经是V-Twin搜索引擎(Apple的Copland操作系统的成就之一)的主要开发者,后在Excite担任高级系统架构设计师,目前从事于一些INTERNET底层架构的研究。他贡献出的Lucene的目标是为各种中小型应用程序加入全文检索功能。

Lucene的发展历程:早先发布在作者自己的www.lucene.com,后来发布在SourceForge,2001年年底成为APACHE基金会jakarta的一个子项目:http://jakarta.apache.org/lucene/

参考:

http://www.chedong.com/tech/lucene.html

http://hedong.3322.org/archives/000206.html

Linux下Apache-Tomcat整合安装

[不指定 2005/09/20 22:58 | by ipaddr ]
Apache-Tomcat整合安装

1.安装PHP+Mysql+Apache2
...
注意,Apache要带上--enable-so

ipaddr(aspbiz)原创,转载请注明


2.安装JDK环境
到Java网站下载:
j2sdk-1_4_2_07-linux-i586.bin

#chmod a+x j2sdk-1_4_2_07-linux-i586.bin
#./j2sdk-1_4_2_07-linux-i586.bin
#mv j2sdk-1_4_2_07 /usr/local/jdk
#vi /etc/profile
export JAVA_HOME=/usr/local/jdk
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=$JAVA_HOME/lib
如果是RHEL3的话,还需要删除原来的空Java环境
#rm -f /usr/bin/java
#rm -f /usr/bin/javac
#rm -f /etc/alternatives/java
#rm -f /etc/alternatives/javac

重新登录

#java -version
查看是否正确.

3.安装Tomcat
到Apache的网站上下载:
jakarta-tomcat-5.0.30.tar.gz
#tar xzvf jakarta-tomcat-5.0.30.tar.gz
#mv jakarta-tomcat-5.0.30 /usr/local/tomcat

运行/usr/local/tomcat/bin/startup.sh启动Tomcat,
http://IP:8080/查看是否安装成功.

4.安装mod_jk2
下载:
jakarta-tomcat-connectors-jk2-2.0.4-src.tar.gz

#tar zxvf jakarta-tomcat-connectors-jk2-2.0.4-src.tar.gz
#cd jakarta-tomcat-connectors-jk2-2.0.4-src/
#cd jk/native2
#./configure --with-apxs2=/usr/local/apache2/bin/apxs  
#make
#cp ../build/jk2/apache2/mod_jk2.so /usr/local/apache2/modules
(如果不成功,有提示错误的话,请安装libtool的高版本:
http://www.gnu.org/software/libtool/
tar zxvf libtool-1.5.14.tar.gz
cd libtool-1.5.14
./configure
make
make install
)

5.配置
a.httpd.conf(/usr/local/apache2/conf/)
不让/WEB-INF下的文档暴露

   Order allow,deny
   Deny from all

加载jk2模块
LoadModule jk2_module modules/mod_jk2.so

b.workers2.properties(/usr/local/apache2/conf/此文件为新建)
[logger.apache2]
 level=info       #日志级别

[shm]
 file=/var/logs/httpd/shm.log
 size=1048576    #这个不知道干什么的??

[channel.socket:localhost:8009]
 port=8009  #apache和tomcat的通讯端口
 host=127.0.0.1

[ajp13:localhost:8009]
 channel=channel.socket:localhost:8009

[uri:/*.jsp]  
 worker=ajp13:localhost:8009

[uri:/servlet/*]
 worker=ajp13:localhost:8009

c./usr/local/tomcat/conf/server.xml
在前面加上:


6.启动测试
启动Tomcat和Apache测试.

7.启动脚本
可以在/etc/init.d/下面,按照httpd格式建一个启动脚本,

/usr/local/tomcat/bin/startup.sh启动
/usr/local/tomcat/bin/shutdown.sh停止
注意,脚本前要加上/etc/profile里的环境变量.

chkconfig --add tomcat
chkconfig tomcat on

8.参考:
http://ms.mblogger.cn/andijo/posts/8534.aspx
http://chinaunix.net/jh/13/306170.html


http://blogger.org.cn/blog/more.asp?name=sixsun&id=1027
http://www.jmyes.com/viewthread.php?tid=9952&extra=page%3D1

[来源:http://laozei.blogchina.com]

VHCS现在已完全是一个可以立即投入商业用途的成熟程序。

VHCS2.2版的时候还不是很成熟,很多功能没有,但现在,随着2.4版的推出(2005.5.16发布稳定版),它已经成长并成熟起来了。

以下是对其部分功能的描述:

1.多级管理:分管理员,代理商,最终用户三个级别
2.虚拟主机管理(基于主机名和基于IP)
3.多个顶级域名绑定,无限级二级域名
4.DNS管理
5.FTP用户管理
6.EMAIL帐号及EMAIL服务管理(有WEBMAIL)
7.CGI,PHP,SSI支持的配置及管理
8.支持MYSQL数据库创建与管理
9.硬盘空间限制
10.(服务器)IP地址管理
11.备份与恢复
12.SSL支持
13.页面或目录的密码保护(通过.htaccess实现)
14.自定义错误页面(401, 403, 404 和500)
15.流量统计
16.多国语言支持(已经有中文语言包)
17.可换肤
18.。。。

程序构成:
1.VHCS的WEB管理界面是基于PHP的
2.VHCS的核心部分是用C和PERL写的

下面是VHCS的工作关系示意图


怎么样,够成熟吧?

去看一下它的演示,你会发现更多功能,可以说是免费版的CPANEL。

如果你想卖HTML,PHP或CGI空间,可以立马用它来做了。

由于是国外开发的程序,而在国外(西方国家)服务器大多是按流量来收费的,所以程序中对流量的限制进行了控制,没有对并发连接数或CPU利用率进行控制,可能这一点对于国内的虚拟主机商来说不是太合适。可以找程序员把这个功能加上去,那就完美了。


官方站:http://vhcs.net/new/
在线演示:http://vhcs.net/new/modules/wfchannel/index.php?pagenum=7
(分别有管理员,代理商,域名用户即最终用户,WEBMAIL,文件管理这几项在线演示)
下载:http://vhcs.net/new/modules/PDdownloads/viewcat.php?cid=2

安装需求:


SuSE Linux 7.x 8.x and 9.x

Red Hat Linux 7.x and 9.0

Debian Linux sid, woody and sarge

Fedora Core1, Core2 and Core 3
分别有对应以上操作系统的安装包。


FreeBSD和Solaris平台的版本正在制作中


各版本的安装问题和其它问题可以去官方论坛查找或求助

Zimbra是一个开源的邮件系统,其操作界面和 Gmail 类似,Zimbra 把 Ajax 运用得淋漓尽致,甚至有过之而无不及。它还运用了 Javascript 的 Prototype ,诸如 drag and drop 也用上了(移动邮件到其他目录的操作)

别的不多说,其官方站:http://www.zimbra.com/index.html

源码,二进制码,文档,一应具全。

如何:使用 IISLockdown.exe

[不指定 2005/09/19 22:59 | by ipaddr ]
目标
使用本模块可以实现:

• 使用 IISLockdown 确保运行 ASP.NET 的 IIS Web 服务器的安全。


返回页首
适用范围
本模块适用于下列产品和技术:

• Microsoft® Windows® 2000 Server

• Internet 信息服务


返回页首
如何使用本模块
为了充分理解本模块内容,请:

• 务必具有管理 Internet 信息服务的经验。

• IIS Web 服务器上必须安装 .NET Framework。

• 阅读相关的模块: 如何:使用 URLScan。该模块描述了如何使用与 IISLockdown 一起安装的 URLScan ISAPI 筛选器。


返回页首
摘要
通过运行 IISLockdown 工具,基本可以自动执行保护 Web 服务器安全的过程。它使您能够选择特定类型的服务器角色,然后使用禁用各种功能或确保功能安全的自定义模板来改进该服务器的安全性。

本模块描述了如何使用 IISLockdown 工具确保用来处理 ASP.NET 页的 Internet 信息服务 (IIS) 服务器的安全。

详情参考:

http://www.microsoft.com/china/technet/security/guidance/secmod113.mspx

另外,也可采用SecureIIS来提高IIS的安全性。

Linux下Apache+Mysql+Resin的安装

[不指定 2005/09/19 22:58 | by ipaddr ]
Apache+Mysql+Resin的安装
1.安装Mysql
官方网址:http://www.mysql.org
下载Linux下的RPM包,直接安装(我习惯用4.0.X,4.1.X的,认证方式有点变化)
rpm -ivh *.rpm
自启动:
chkconfig mysql on

ipaddr(aspbiz)原创,转载请注明

2.安装Apache
官方网址:http://www.apache.org
下载Tgz的源代码包:
# tar -zxvf httpd-2.0.5X.tar.gz
# cd httpd-2.0.5X.tar.gz
# ./configure --enable-so
# make
# make install
自启动的话,可以将/usr/local/apache2/bin/apachectl start加到/etc/rc.d/rc.local
也可以自己写一个启动调本,调用apachectl,放在/etc/init.d/下面,用Chkconfig加载.
或者如下:
将apache 加入到 ntsysv中
比如说你的apache源码包在dir目录下,
cp dir/support/apachectl /etc/rc.d/init.d/httpd
编辑该httpd文件,加入如下类似两行
#chkconfig: 345 85 15
#description:some words you like!!

记得chmod a+x httpd
最后chkconfig --add httpd
chkconfig httpd on

3.安装JDK
到Java网站下载:
j2sdk-1_4_2_07-linux-i586.bin

#chmod a+x j2sdk-1_4_2_07-linux-i586.bin
#./j2sdk-1_4_2_07-linux-i586.bin
#mv j2sdk-1_4_2_07 /usr/local/jdk
#vi /etc/profile
export JAVA_HOME=/usr/local/jdk
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=$JAVA_HOME/lib
如果是RHEL3的话,还需要删除原来的空Java环境
#rm -f /usr/bin/java
#rm -f /usr/bin/javac
#rm -f /etc/alternatives/java
#rm -f /etc/alternatives/javac

重新登录

#java -version
查看是否正确.

4.安装Resin
官方网址:http://www.caucho.com/
下载源代码包:resin-3.0.14-src.tar.gz
# tar zxvf resin-3.0.14-src.tar.gz
# cd resin-3.0.14
# chmod a+x configure
# ./configure --prefix=/usr/local/resin --with-apxs=/usr/local/apache2/bin/apxs
# make
# make install

修改/usr/local/resin/bin/httpd.sh里的环境变量:JAVA_HOME,RESIN_HOME
/usr/local/resin/bin/httpd.sh start
单独启动resin,并通过http://ip:8080/查看是否成功运行.
(怪怪的,我这样安装,/usr/local/resin/bin/httpd.sh start能启动,但访问不了,不知问题出在哪,最后只好用编译好的版本.编译了的版本,直接解压到/usr/local/resin就可.)
将源代码包里resin-3.0.14/contrib下的init.resin 拷到 /etc/init.d 下 改名为 resin
修改里面的JAVA_HOME,RESIN_HOME,USER=apache变量.
chmod a+x resin
chkconfig --add resin
chkconfig resin on

5.整合Apache+Resin
Resin编译时用了--with-apxs,就会自动生成一个Apache模块.并且,在httpd.conf里,自动加上了LoadModule ResinConfigServer CauchoStatus这三个指令.
在httpd.conf里,再加上以下几句:


SetHandler caucho-status


在/usr/local/resin/conf/resin.conf里,修改根文档路径.

<server>
 <host id="">
   <document-directory>/usr/local/apache2/htdocs</document-directory>
   ...
 </host>
</server>



重启Resin,Apache
6.测试
通过http://ip/caucho-status/查看Resin状态。
在/usr/local/apache2/htdocs里建一个测试文件jsp.jsp
<%@page language="java"%>  
2+2=
通过http://ip/jsp.jsp访问看看结果是否正确。

在/etc/crontab里,定时执行检测脚本,检测系统的Apache,和Mysql进程是否超出标准,超标的话,自动重启,没有的话,记录进程数据.

Crontab的内容(每30分钟执行一次,并将结果记录在/var/log/chksys.log)

0,30 * * * * root /usr/local/chksys.sh >> /var/log/chksys.log

/usr/local/chksys.sh代码:

#!/bin/bash
#check apache,mysql thread and auto reboot system
#Powered by ipaddr(aspbiz)

#config
MaxApacheThread=300
MaxMysqlThread=250

NeedReboot=0

ApacheThread=`ps -A|grep http|wc -l`
MysqlThread=`ps -A|grep mysql|wc -l`

if [ $ApacheThread -gt $MaxApacheThread ]
then
NeedReboot=1
fi

if [ $MysqlThread -gt $MaxMysqlThread ]
then
NeedReboot=1
fi

if [ $NeedReboot -eq 1 ]
then
echo "-----------------------------"
echo $(date +"%y-%m-%d %H:%M:%S")
echo "-----------------------------"
echo "Apache:$ApacheThread;Mysql:$MysqlThread."
echo "System is busy,reboot"
reboot
else
echo "-----------------------------"
echo $(date +"%y-%m-%d %H:%M:%S")
echo "-----------------------------"
echo "Apache:$ApacheThread;Mysql:$MysqlThread."
echo "System is normal"
fi

一、概述
Linux下用的最多的是MRTG的性能监视,MRTG配置比较简单,MRTG的确是非常好的东东,但我认为它毕竟已经是一套很旧的软件了,其作者在多年前就已经开发了RRDTool代替该软件,现在已经发展得很成熟。既然有更好的选择,为什么我们还要用MRTG呢?
简单的说,rrdtool就是一个强大的绘图的引擎,很多语言都可以调用rrdtool绘图。
整个系统的架构是这样的:
基于SNMP协议,被监控端是服务器,或一些网络设备,
网络管理工作站,采用Linux(或Freebsd)操作系统,并且安装Net-SNMP工具,使用RRDTOOL采集数据,存储数据,并用Cacti调用rrdtool显示出来。
CACTI采用PHP编写,基于B/S结构。
二、介绍
MRTG的优点:简单、易上手,基本安装完了之后只要更改一下配置文件即可。
缺点:
1、使用文本式的数据库,数据不能重复使用;
2、只能按日、周、月、年来查看数据;
3、只能画两个DS(一条线、一个块);
4、每取一次数据即需要绘图一次,浪费系统资源;
5、无管理功能;

rrdtool的优点:
 1、使用rrd存储格式,数据能重复使用,比如我可以将一个rrd文件中的数据与另一个rrd文件中的数据相加。
 2、可以定义任意时间段画图,即你可以画出一张半年以来的数据的图,也可以画出一张半小时以来的图。
 3、能画任意个DS。
 4、CDEF让你能任意摆弄数据。

缺点:
1、rrdtool的作用只是存储数据和画图,它没有mrtg中集成的数据采集功能;
2、在命令行的使用非常复杂,参数极多。
3、无管理功能。

简单的说,rrdtool就是一个强大的绘图的引擎。

由于其非常复杂的命令,对用户非常不友好,我一度想自己用php写一套系统。幸运的是,半年前我找到了cacti(www.cacti.net)。对该工具我只有一个字形容:“great!”。
cacti其实是一套php程序,它运用snmpget采集数据,使用rrdtool绘图。它的界面非常漂亮,能让你根本无需明白rrdtool的参数能轻易的绘出漂亮的图形。更难能可贵的是,它提供了强大的数据管理和用户管理功能,一张图是属于一个host的,每一个host又可以挂载到一个树状的结构上。用户的管理上,作为一个开源软件,它居然做到为指定一个用户能查看的“树”、host、甚至每一张图,还可以与LDAP结合进行用户的验证!我不由得佩服作者考虑的周到!Cacti还提供自己增加模板的功能,让你添加自己的snmp_query和script!可以说,cacti将rrdtool的所有“缺点”都补足了!

三、监控管理工作站配置
采用Linux系统,CACTI要用到Net-SNMP,RRDTool,Aapche,PHP,Mysql,以下是安装过程:
1. 安装Apache+Mysql+PHP
安装过程比较简单,参考其它的资料,需要注意的是,PHP最好加上SNMP支持,编译的时候,加上—enable-snmp
注意。PHP不能运行在安全模式,否则,Cacti工作不正常。无法调用/usr/local/bin/下面的程序。
2. 安装rrdtool
官方网站:http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/
下载:
http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/pub/rrdtool-1.0.x/rrdtool-1.0.50.tar.gz
然后
./configure –prefix=/usr/local/rrdtool
make
make install

与mrtg相比,rrdtool自带了gd库,所以不用先安装gd库.(不过由于rrdtool自带的gd库不支持中文,所以rrdtool画出来的图也不能有中文,否则会出现乱码).

注意:rrdtool1.2的版本由于已经不再自带外部的lib库(如cgilib,zlib等),所以需要从http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/pub/libs/下载这些库来安装。建议还是使用1.0的版本,比较方便。

安装完后,执行rrdtool看是否正确,
如果执行不成功,提示命令不存在,则需要将所有RRDTool的可执行文件,拷到/usr/local/bin
cp /usr/local/rrdtool/bin/* /usr/local/bin


3. 安装Net-SNMP
RH下面,安装了SNMP服务,但好象没有snmpwalk,snmpget这两个命令,所以需要安装NET-SNMP。NET-SNMP官方网站:http://www.net-snmp.org/
下载net-snmp-5.1.3.1.tar.gz
tar zxvf net-snmp-5.1.3.1.tar.gz
cd net-snmp-5.1.3.1
./configure
make
make install
运行snmpget,snmpwalk测试是否安装成功
RPM包的snmpwalk的名称是:net-snmp-utils.*.rpm,也可以从安装光盘上RPM安装。
4. 安装CACTI
官方网站:http://www.cacti.net/
a) 安装cacti源文件
下载cacti-0.8.6f.tar.gz
将这个压缩包解压到网站根目录
#cp cacti-0.8.6f.tar.gz /usr/local/apache2/htdocs
#cd /usr/local/apache2/htdocs
#tar xzvf cacti-0.8.6f.tar.gz
#mv cacti-0.8.6f cacti
#chown –R apache.apache cacti
#cd cacti

b) 配置Mysql数据库
为cacti配置用户和数据库:
#mysql –u root –p
mysql>create database cactidb;
mysql>grant all privileges on cactidb to cactiuser@localhost identified by ‘password’;
mysql>quit
配置Cacti连接数据库
#vi /usr/local/apache2/htdocs/cacti/include/config.php

$database_type = “mysql”;
$database_default = “cactidb”;
$database_hostname = “localhost”;
$database_username = “cacti”;
$database_password = “password”;
c) 定时crontab运行cacti的收集数据程序
#vi /etc/crontab
*/5 * * * * /usr/local/bin/php /usr/local/apche2/htdocs/cacti/poller.php > /dev/null 2>&1

d) 配置Cacti
在浏览器上输入:
http://IP/cacti
进入cacti的初始设置页面:
在这里我们要输入一些原始的信息:

NEXT -》
输入一些信息,如rrdtool、php、snmpwalk、snmpget的位置,使用ucd-snmp还是net-snmp等 -》
输入原始的用户和密码:admin/admin -》
更改admin用户的密码 -》
点击 Save

安装完成!!!
现在可以在浏览器中进入Cacti的世界了!
5. 测试

四、被监控端配置
大部分情况下,我们监控的是服务器,以RedHat Linux为例,看看如何打开SNMP服务。
只有开启了SNMP服务,监控端才可以收集数据。
打开默认的/etc/snmp/snmp.conf文件,更改如下配置:
1、查找以下字段:
代码:
#       sec.name  source          community
com2sec notConfigUser  default       public

将"comunity"字段改为你要设置的密码.比如"public".
将“default”改为你想哪台机器可以看到你的snmp信息,如10.10.10.10。

2、查找以下字段:代码:
####
# Finally, grant the group read-only access to the systemview view.
#       group          context sec.model sec.level prefix read   write  notif
access  notConfigGroup ""      any       noauth    exact  all none none

将"read"字段改为all.
代码:
#access  notConfigGroup ""      any       noauth    exact  systemview none none

3、查找以下字段:代码:
##           incl/excl subtree                          mask
#view all    included  .1                               80
将该行前面的"#"去掉.

保存关闭.

4、运行/etc/init.d/snmpd start命令运行snmpd.
5、如果有防火墙,打开UDP 161端口。
最后运行netstat -ln查看161端口是否打开了.

使用ntsysv,让snmp服务,每次开机自动运行。
如果没有安装snmp服务,请在RH的安装光盘上找到net-snmp.rpm,再安装。

五、测试
打开本机的SNMP服务,
打开http://localhost/cacti
默认Cacti有LocalHost的四项参数,直接可以查看了。

六、排错
1. 首先检查一下rra/下面,有没有数据
2. snmpwalk -v 2c -c public ServerIP if 用来测试被控对象(serverIP)是否开启了SNMP服务
3. snmpwalk -v 2c ServerIP -c public .1.3.6.1.4.1.2021.10.1.3 查看被控端是否有CPU负载的数据返回
4. /usr/local/bin/php /usr/local/apche2/htdocs/cacti/poller.php 用来测试PHP是否可以采集到数据。如果上面的都正确,但这步出错,很有可能是PHP配置的问题,或开启了SuLinux。
5. 如果按第2步snmpwalk能采集到数据,但第3步无法采集,可能是PHP设置的问题,修改PHP.ini,很有可能是PHP权限问题。

七、rrdtool1.2的安装
1.2版的rrdtool画出的图,比1.0的要漂亮些.1.0用的是GD画图,1.2用的是libart和freetype画图.1.2的画图会慢一点.
1.2版的安装,可以见http://bbs.chinaunix.net/forum/viewtopic.php?t=552224
上面的安装比较麻烦,需要装不少库,其实,可以,可以直接RPM安装,RedHat的系统,直接从安装光盘上找到这几个库,安装就可.主要的包有:
libart_lgpl
libart_lgpl-devel
libpng
libpng-devel
zlib
zlib-devel
freetype
freetype-devel
找到上面这些包,直接rpm –ivh *.rpm
cgilib好象没有,而且,从rrdtool官方网站下载的cgilib无法安装.我们也不需要rrdcgi,所以,可以不考虑了.
安装完后,解压1.2版的rrdtool
./configure –prefix=/usr/local/rrdtool –disable-rrdcgi
make
make install
cp /usr/local/rrdtool/bin/* /usr/local/bin/


参考:
RRDTOOL教学 http://www.study-area.org/tips/rrdtool/rrdtool.html
使用cacti监测系统性能 http://bbs.chinaunix.net/forum/viewtopic.php?t=594019

分页: 49/57 第一页 上页 44 45 46 47 48 49 50 51 52 53 下页 最后页 [ 显示模式: 摘要 | 列表 ]