1 在webapps文件夹下新建文件夹monitor
2 monitor下新建WEB-INF和src
3 WEB-INF里面新建web.xml和classes
4 web.xml内容
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
<description>
Monitoring cpu,mem,disk and netstate
</description>
<display-name>MyMonitor</display-name>
<!-- Define servlets-->
<servlet>
<servlet-name>recvInfo</servlet-name>
<servlet-class>recvInfo</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>recvInfo</servlet-name>
<url-pattern>/recvInfo</url-pattern>
</servlet-mapping>
</web-app>
5 下面就是写处理接受的servlet了。如下:
FileReader fr = new FileReader(
"/opt/apache-tomcat-6.0.26/webapps/monitor/WEB-INF/classes/cpu.txt");
BufferedReader br = new BufferedReader(fr);
String aRow = null;
while ((aRow = br.readLine()) != null)
out.println("<br>"+aRow+"<br>");
out.println("</body>");
out.println("</html>");
fr.close();
br.close();
out.close();
}
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}
}
作用就是如果是curl发送的请求,则取出cpu参数的值,写到cpu.txt文件中。如果是用户使用浏览器访问这个servlet,http://localhost:8080/monitor/recvInfo
则读cpu.txt文件,将内容通过html写到用户的浏览器中。
编译该java文件到WEB-INF的classes中:
javac -classpath /opt/apache-tomcat-6.0.26/lib/servlet-api.jar -d /opt/apache-tomcat-6.0.26/webapps/monitor/WEB-INF/classes recvInfo.java
6 启动tomcat
sudo -E ./startup.sh
关闭用sudo ./shutdown.sh
7 启动被监控端的cpu.sh,他开始搜集本机cpu使用率,并向监控端recvInfo servlet发送http请求。
8 过几秒后,ctrl+c停止cpu.sh,看监控端的结果:
(1)cpu.txt
(2)使用浏览器访问servlet,http://localhost:8080/monitor/recvInfo
9 也可以使用浏览器http://localhost:8080/monitor/recvInfo?cpu=123提交cpu数据。就不改正这个bug了吧。