1.jboss简介
JBoss
是全世界开发者共同努力的成果,一个基于J2EE的开放源代码的应用服务器。
因为JBoss代码遵循LGPL许可,可以在任何商业应用中免费使用它,而不用支付费用。2006年,Jboss公司被Redhat公司收购。JBoss
是一个管理EJB的容器和服务器,支持EJB 1.1、EJB
2.0和EJB3.0的规范。但JBoss核心服务不包括支持servlet/JSP的WEB容器,一般与Tomcat或Jetty绑定使用。
jboss具有如下优点:
1)JBoss是免费的,开放源代码J2EE的实现,通过LGPL许可证进行发布。
2)JBoss需要的内存和硬盘空间比较小。
3)安装非常简单。先解压缩JBoss打包文件再配置一些环境变量就可以了。
4)JBoss能够“热部署”,部署BEAN只是简单拷贝BEAN的JAR文件到部署路径下就可以了。如果没有加载就加载它;如果已经加载了就自动更新。
5)JBoss与Web服务器在同一个Java虚拟机中运行,Servlet调用EJB不经过网络,从而大大提高运行效率,提升安全性能。
6)用户可以直接实施J2EE-EAR,而不是以前分别实施EJB-JAR和Web-WAR,非常方便。
7)Jboss支持集群
――――――――――――――――――――――――――――――――――――――――――
2.jboss的安装
下载jdk-1_5_0_16-linux-amd64.bin和jboss-4.0.5.zip。
1)安装jdk:
chmod +x jdk-1_5_0_16-linux-amd64.bin
./jdk-1_5_0_16-linux-amd64.bin
cp -r jdk1.5.0_16 /usr/local/
vi /etc/profile
加上:
export JAVA_HOME=/usr/local/jdk1.5.0_16
export JBOSS_HOME=/usr/local/jboss-4.0.5
export CLASSPATH=$CLASSPATH:$JAVA_HOME\lib\*.jar:$JAVA_HOME\jre\lib\*.jar
export PATH=$PATH:$JAVA_HOME/bin:$JBOSS_HOME\bin
若java -version输出下面的信息则表示安装成功。
java version “1.5.0_16″
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_16-b02)
Java HotSpot(TM) 64-Bit Server VM (build 1.5.0_16-b02, mixed mode)
-
2)安装jboss
unzip jboss-4.0.5.zip -d /usr/local
cd /usr/localjboss-4.0.5/bin
运行./run.sh -c default & 启动jboss;运行/shutdown.sh -S停止jboss。
浏览器能打开说明安装成功。
――――――――――――――――――――――――――――――――――――――――――
3.jboss目录结构及功能
$JBOSS_HOME/bin目录:主要包含run.jar、shutdowm.jar等文件,用于启动、停止服务器脚本
$JBOSS_HOME/client目录:主要包含与客户端相关的文件(客户端与JBoss通信所需的的Java库(JARs))
$JBOSS_HOME/docs目录:主要包含JBoss服务器的文档以及examples文件夹
$JBOSS_HOME/lib目录:主要包含些JAR,JBoss启动时加载,且被所有JBoss配置共享(不要把你的库放在这里)
$JBOSS_HOME/server
目录:主要包含与服务器有关的配置文件。每个配置必须放在不同的子目录。子目录的名字config-name表示配置的名字。JBoss的server目
录可以包含任意数目的目录,每个表示一个不同的JBoss配置。JBoss4包含3个默认的配置:minimial,default和all
$JBOSS_HOME/server/all目录:JBoss的完全配置,启动所有服务,包括集群和IIOP。
$JBOSS_HOME/server/default目录:JBoss的默认配置。在没有在JBoss命令航中指定配置名称时使用。
$JBOSS_HOME/server/default/conf目录:JBoss的配置文件。
$JBOSS_HOME/server/default/data目录:JBoss的数据库文件。比如,嵌入的数据库,或者JBossMQ。
$JBOSS_HOME/server/default/deploy目录:JBoss的热部署目录。放到这里的任何文件或目录会被JBoss自动部署。EJB、WAR、EAR,甚至服务。
$JBOSS_HOME/server/default/lib目录:一些JAR,JBoss在启动特定配置时加载他们。
――――――――――――――――――――――――――――――――――――――――――
4.jboss默认端口介绍
详见http://hi.baidu.com/gggyx88/blog/item/be92e1d67691da0ca08bb71b.html
其中默认http端口为8080;默认jnp端口为1099;默认snmp端口为1161。
――――――――――――――――――――――――――――――――――――――――――
5.jboss多实例的配置
1)方法
由
于启动jboss多个实例,可能会遇到端口冲突的问题。如果开启多个实例,那么至少要修改每个实例下的[\conf\jboss-service.xml
中的1098,1099,4444,4445,8083,\deploy\jbossweb-tomcat50.sar\server.xml中8080
以及\deploy\jms\uil2-service.xml中的8093端口],这样jboss才能正常启动,即使这样可能还是有些服务不能正常使
用,比如snmp端口。反正通过这种方法是相当麻烦的事。
jboss
同时提供管理多实例的配置ServiceBindingManager。具体是提供一个服务器端口绑定文件xxx-bindings.xml,里面定义了
多个以server-name为标志的端口,它就作为统一的端口绑定配置文件。然后在每个服务器实例的jboss-server.xml中注册一个端口绑
定服务ServiceBindingManager,该服务用参数ServerName指定xxx-bindings.xml对应的端口配置,用参数
StoreURL指定xx-bindings.xml文件的位置。一旦该服务注册,则jboss-server.xml下的其他端口设置被忽略,而启用新
的端口配置。
2)实施步骤
a.$JBOSS_HOME/docs
/examples/binding-manager/sample-bindings.xml就是jboss服务器端口绑定文件的一个模板,里面已经内
置了4个server的端口绑定,因此我们不需要要任何改动,至少可以利用这个绑定模板启用4个jboss服务实例。
b.
在11.57这台机器上要启动map-daemon和map-laba两个实例,则只要修改每个jboss服务实例下的jboss-server.xml
文件,把Service
Binding配置的注释去掉,修改其中参数serverName和server-bindings.xml文件的路径即可:
vi $JBOSS_HOME/server/map-daemon/conf/jboss-service.xml
name=”jboss.system:service=ServiceBindingManager”>
org.jboss.services.binding.XMLServicesStoreFactory
可
以在sample-bindings.xml文件中查找ports-03对应的map-daemon实例http端口为8180(在jbossweb-
tomcat50.sar\server.xml定义http端口为38000,会覆盖binding的备置),jnp端口为1199,snmp端口为
1261.
-
vi $JBOSS_HOME/server/map-laba/conf/jboss-service.xml
name=”jboss.system:service=ServiceBindingManager”>
org.jboss.services.binding.XMLServicesStoreFactory
可
以在sample-bindings.xml文件中查找ports-02对应的map-laba实例http端口为8280(在jbossweb-
tomcat50.sar\server.xml定义http端口为39000,会覆盖binding的备置),jnp端口为1299,snmp端口为
1361.
――――――――――――――――――――――――――――――――――――――――――
6.jboss的监控
1)监控需求,举例11.57的map_daemon实例。
a.nagios报警监控:
http 38000端口服务
JVM free memory:通过jnp1199端口获取信息
Busy HTTP pool:通过jnp1199端口获取信息
JVM Thread Pool:通过jnp1199端口获取信息
b.cacti出图监控
JVM free memory:通过snmp1261端口获取信息
JVM max memory: 通过snmp1261端口获取信息
Busy HTTP pool:通过snmp1261端口获取信息
JVM Thread Pool:通过snmp1261端口获取信息
-
2)nagios监控
a.监控脚本
cat /usr/lib64/nagios/plugins/check_jmx
#!/bin/sh
## JBoss Nagios Plugin
##
export JBOSS_SERVER=$1
export JBOSS_VERSION=$2
export JBOSS_MBEAN=$3
export JMX_ATTR=$4
export WARN=$5
export CRITICAL=$6
#####################################################
## Configure these for your environment
#####################################################
export JBOSS4_HOME=/usr/local/jboss-4.0.5
export JBOSS3_HOME=/home/jboss/jboss-3.2.7
export JAVA_HOME=/usr/local/jdk1.5.0_16
#####################################################
if [[ $1 = "--help" || $1 = "--h" || $1 = "-help" || $1 = "-h" ]]; then
echo check_jbossjmx Usage
echo
“jbossJMX_plugin
”
exit 3
fi
if [[ "$JBOSS_VERSION" = "3" ]]; then
export TWIDDLE=$JBOSS3_HOME/bin/twiddle.sh
else
if [[ "$JBOSS_VERSION" = "4" ]]; then
export TWIDDLE=$JBOSS4_HOME/bin/twiddle.sh
else
echo “Unrecognized JBoss Version:” $JBOSS_VERSION
exit 3
fi
fi
export READING=`$TWIDDLE -s $JBOSS_SERVER get $JBOSS_MBEAN $JMX_ATTR | awk ‘{split($1,names,”=”); print names[2]; }’ `
if [[ $READING -ge $CRITICAL ]]; then
echo “JMX ATTRIBUTE CRITICAL” ? $JBOSS_MBEAN-$JMX_ATTR:$READING
exit 2
else
if [[ $READING -ge $WARN ]]; then
echo “JMX ATTRIBUTE WARNING” ? $JBOSS_MBEAN-$JMX_ATTR:$READING
exit 1
else
echo “JMX ATTRIBUTE OK” ? $JBOSS_MBEAN-$JMX_ATTR:$READING
exit 0
fi
fi
-
b.配置nrpe
command[check_http38000]=/usr/lib64/nagios/plugins/check_http -H 192.168.11.57 -p 38000
command[mp_daemon_freememory]=/usr/lib64/nagios/plugins/check_jmx
jnp://localhost:1399 4 “jboss.system:type=ServerInfo” FreeMemory
1000000 1024000
command[mp_daemon_httpcp]=/usr/lib64/nagios/plugins/check_jmx
jnp://localhost:1399 4
“jboss.web:name=http-0.0.0.0-33000,type=ThreadPool” currentThreadsBusy
50 60
command[mp_daemon_jvmpool]=/usr/lib64/nagios/plugins/check_jmx
jnp://localhost:1399 4 “jboss.system:type=ServerInfo”
ActiveThreadCount 200 230
-
2)cacti监控
a.下载JBossSNMPAdapter模板导入cacti。
b.jboss snmp配置
vi $JBOSS_HOME/server/map-daemon/deploy/snmp-adaptor.sar/attributes.xml
查找下列信息:
将上述信息变更为:
其中,38000为实例的http服务端口,后面新加的3行为snmp抓取的Busy Thread Count信息,jobss默认没有配置这个。
-
检查对应的mib文件是否存在xml文件中的oid
vi $JBOSS_HOME/server/map-daemon/deploy/snmp-adaptor.sar/attributes.oid
查找下列内容
requestCount8080 OBJECT-TYPE
SYNTAX Gauge32
ACCESS read-only
STATUS mandatory
DESCRIPTION
“Number of requests served on port 8080″
::= {system 5}
将上述内容修改为
requestCount38000 OBJECT-TYPE
SYNTAX Gauge32
ACCESS read-only
STATUS mandatory
DESCRIPTION
“Number of requests served on port 38000″
::= {system 5}
将最后END修改为
activeBussyThread OBJECT-TYPE
SYNTAX INTEGER
ACCESS read-only
STATUS mandatory
DESCRIPTION
“Number of bussy thread on port 38000 thread pool”
::= {system 10}
END
修改完后重启jboss。
-
c.cacti增加jboss监控
add devices
Description:Jboss_mapdaemon@11.57
Hostname:192.168.11.57
Host Template:JBoss SNMP Adaptor
Downed Device Detection:None
SNMP Version:version 1
SNMP Community: public
SNMP Port: 1161
creat device ?> create grahps ?> add graph tree ?>done.
本文出自网址:.转载请保留.