zabbix是通过java geteway及JMX对Tomcat来进行监控的,并也可以实现自定义模板的导入及应用,模拟实际生产环境中的Tomcat性能等其他参数的图形监测显示。
1、准备Tomcat服务器
这里我就直接把之前下载好的包放到服务器上的相关目录下,在使用一键安装的脚步来安装tomcat服务。
root@Tomcat:~# cd /data/
root@Tomcat:/data# wget https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-9/v9.0.69/bin/apache-tomcat-9.0.69.tar.gz
root@Tomcat:/data# ll
total 153464
drwxr-xr-x 2 root root 4096 Nov 17 17:19 ./
drwxr-xr-x 20 root root 4096 Nov 17 17:13 ../
-rw-r--r-- 1 root root 11607790 Nov 10 02:53 apache-tomcat-9.0.69.tar.gz
-rw-r--r-- 1 root root 2759 Nov 17 17:14 install_tomcat.sh
-rw-r--r-- 1 root root 145520298 Nov 17 17:14 jdk-8u301-linux-x64.tar.gz
root@Tomcat:/data# cat install_tomcat.sh
#!/bin/bash
DIR=`pwd`
JDK_FILE="jdk-8u301-linux-x64.tar.gz"
TOMCAT_FILE="apache-tomcat-9.0.69.tar.gz"
JDK_DIR="/usr/local" #这里的路径可以自己定义好
TOMCAT_DIR="/usr/local"
color () {
RES_COL=60
MOVE_TO_COL="echo -en \\033[${RES_COL}G"
SETCOLOR_SUCCESS="echo -en \\033[1;32m"
SETCOLOR_FAILURE="echo -en \\033[1;31m"
SETCOLOR_WARNING="echo -en \\033[1;33m"
SETCOLOR_NORMAL="echo -en \E[0m"
echo -n "$2" && $MOVE_TO_COL
echo -n "["
if [ $1 = "success" -o $1 = "0" ] ;then
${SETCOLOR_SUCCESS}
echo -n $" OK "
elif [ $1 = "failure" -o $1 = "1" ] ;then
${SETCOLOR_FAILURE}
echo -n $"FAILED"
else
${SETCOLOR_WARNING}
echo -n $"WARNING"
fi
${SETCOLOR_NORMAL}
echo -n "]"
echo
}
install_jdk () {
if ! [ -f "$DIR/$JDK_FILE" ];then
color 1 "$JDK_FILE 文件不存在"
exit;
elif [ -d $JDK_DIR/jdk ];then
color 1 "JDK 已经安装"
exit
else
[ -d "$JDK_DIR" ] || mkdir -pv $JDK_DIR
fi
tar xvf $DIR/$JDK_FILE -C $JDK_DIR
cd $JDK_DIR && ln -s jdk1.8.* jdk
cat > /etc/profile.d/jdk.sh <<EOF
export JAVA_HOME=$JDK_DIR/jdk
export JRE_HOME=\$JAVA_HOME/jre
export CLASSPATH=\$JAVA_HOME/lib/:\$JRE_HOME/lib/
export PATH=\$PATH:\$JAVA_HOME/bin
EOF
. /etc/profile.d/jdk.sh
java -version && color 0 "JDK 安装完成" || { color 1 "JDK 安装失败" ; exit; }
}
install_tomcat () {
if ! [ -f "$DIR/$TOMCAT_FILE" ];then
color 1 "$TOMCAT_FILE 文件不存在"
exit;
elif [ -d $TOMCAT_DIR/tomcat ];then
color 1 "TOMCAT 已经安装"
exit
else
[ -d "$TOMCAT_DIR" ] || mkdir -pv $TOMCAT_DIR
fi
tar xf $DIR/$TOMCAT_FILE -C $TOMCAT_DIR
cd $TOMCAT_DIR && ln -s apache-tomcat-*/ tomcat
echo "PATH=$TOMCAT_DIR/tomcat/bin:"'$PATH' > /etc/profile.d/tomcat.sh
id tomcat &> /dev/null || useradd -r -s /sbin/nologin tomcat
cat > $TOMCAT_DIR/tomcat/conf/tomcat.conf <<EOF
JAVA_HOME=$JDK_DIR/jdk
EOF
chown -R tomcat.tomcat $TOMCAT_DIR/tomcat/
cat > /lib/systemd/system/tomcat.service <<EOF
[Unit]
Description=Tomcat
#After=syslog.target network.target remote-fs.target nss-lookup.target
After=syslog.target network.target
[Service]
Type=forking
EnvironmentFile=$TOMCAT_DIR/tomcat/conf/tomcat.conf
ExecStart=$TOMCAT_DIR/tomcat/bin/startup.sh
ExecStop=$TOMCAT_DIR/tomcat/bin/shutdown.sh
RestartSec=3
PrivateTmp=true
User=tomcat
Group=tomcat
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable --now tomcat.service &> /dev/null
systemctl is-active tomcat.service &> /dev/null && color 0 "TOMCAT 安装完成" || { color 1 "TOMCAT 安装失败" ; exit; }
}
install_jdk
install_tomcat
这里的这个脚本可以使用chmod +x来给这个脚本添加执行权限,我就不加了。
root@Tomcat:/data# bash install_tomcat.sh
当脚本执行完后就可以出现的结果如下面的图
2、准备java geteway组件
java geteway是可以独立于zabbix server和zabbix agent的一个组件,java geteway是可以单独部署到一台服务器上,也是可以和zabbix server或者zabbix agent共用一个服务器,但是要注意端口不要冲突就可以,在这我就和zabbix server服务部署到同一个服务器上了,zabbix server在前两篇文章写了怎么部署。
root@zabbix-server:~# apt update
root@zabbix-server:~# apt -y install zabbix-java-gateway
root@zabbix-server:~# vi /etc/zabbix/zabbix_java_gateway.conf #找到下面相关项修改即可
root@zabbix-server:~# vi /etc/zabbix/zabbix_java_gateway.conf #找到下面相关项修改即可
LISTEN_IP="0.0.0.0"
LISTEN_PORT=10052
PID_FILE="/run/zabbix/zabbix_java_gateway.pid"
START_POLLERS=50
TIMEOUT=30
root@zabbix-server:~# systemctl restart zabbix-java-gateway #重启一下java gateway服务
root@zabbix-server:~# lsof -i:10052 #检查端口
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
java 6002 zabbix 12u IPv6 82841 0t0 TCP *:10052 (LISTEN)
ubuntu在安装zabbix-java-gateway时可能会报错,因为apt直接下载的话它会自己起服务,这里我们需要修改一下配置文件在重新启动一下服务就可以起来了。
3、配置zabbix server来调用java gateway
root@zabbix-server:~# vi /etc/zabbix/zabbix_server.conf #找到下面相关项修改即可
JavaGateway=10.0.0.100 #java gateway的监听地址
JavaGatewayPort=10052 #指定java gateway的服务监听端口,如果是默认的端口的话可以不写
StartJavaPollers=20 #这个值是指启动多少个线程去轮询 java gateway
root@zabbix-server:~# systemctl restart zabbix-server
root@zabbix-server:~# ps -ef | grep java
4、Tomcat开启JMX监控并安装zabbix-agent
Tomcat开启JMX监控:
root@Tomcat:~# vi /usr/local/tomcat/bin/catalina.sh
#找到Execute The Requested Command行,在下面添加下面的内容
# ----- Execute The Requested Command -----------------------------------------
CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9999 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=10.0.0.103"
root@Tomcat:~# systemctl restart tomcat
root@Tomcat:~# systemctl status tomcat
安装zabbix-agent:
root@Tomcat:~# wget https://repo.zabbix.com/zabbix/5.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_5.0-1%2Bfocal_all.deb
root@Tomcat:~# dpkg -i zabbix-release_5.0-1+focal_all.deb
root@Tomcat:~# sed -i.bak 's#http://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#' /etc/apt/sources.list.d/zabbix.list #修改官方源地址
root@Tomcat:~# cat /etc/apt/sources.list.d/zabbix.list
deb https://mirrors.aliyun.com/zabbix/zabbix/5.0/ubuntu focal main
deb-src https://mirrors.aliyun.com/zabbix/zabbix/5.0/ubuntu focal main
root@Tomcat:~# apt update
root@Tomcat:~# apt -y install zabbix-agent
root@Tomcat:~# vi /etc/zabbix/zabbix_agentd.conf
root@Tomcat:~# grep "^[a-Z]" /etc/zabbix/zabbix_agentd.conf
PidFile=/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=10.0.0.100
ListenPort=10050
ListenIP=0.0.0.0
StartAgents=3
ServerActive=127.0.0.1
Hostname=10.0.0.103
Include=/etc/zabbix/zabbix_agentd.d/*.conf
root@Tomcat:~# systemctl restart zabbix-agent
讲解一下:
-Dcom.sun.management.jmxremote #这里是启用监控JMX的项
-Dcom.sun.management.jmxremote.port=9999 #默认启用的端口是12345,这改了的话要在zabbix添加主机是端口也要改
-Dcom.sun.management.jmxremote.authenticate=false #这项是不使用用户名密码
-Dcom.sun.management.jmxremote.ssl=false #这项是不使用ssl认证
-Djava.rmi.server.hostname=10.0.0.103" #这项填的地址不是zabbix-server的地址,而是写tomcat主机的IP地址
5、在zabbix server web上添加tomcat主机监控
这里也是可以添加自定义的监控模板,根据自己想要监控的项来进行监控,我这里就不演示添加自定义监控模板来监控服务了。