目錄
一、理論
1.Zabbix監控Tomcat
二、實驗
1.Zabbix監控Tomcat
三、問題
1.獲取軟件包失敗
?2.tomcat 配置 JMX remote monitor不生效
?3.Zabbix客戶端日志報錯
一、理論
1.Zabbix監控Tomcat
(1)環境
zabbix服務端:192.168.204.214
zabbix客戶端:192.168.204.215
原理:
(2)客戶端安裝tomcat(yum方式)
yum install tomcat -ySystemctl start tomcatcd /var/lib/tomcat/webappsmkdir testcd test
(3)添加動態網頁內容
vim index.jsp # 添加動態頁面內容:<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><html><head><title>test</title></head><body><% out.println("動態頁面:test tomcat01");%></body></html>#頁面輸出內容為test tomcat01,tomcat02服務器上則將01改為02方便查看實驗效果#創建動態資源頁面
(3)修改配置
?
vim /etc/tomcat/server.xml
#修改主配置文件內容125行,原有內容不需要更改,對比此段內容添加即可<Host name="localhost" ?appBase="webapps"unpackWARs="true" autoDeploy="true"xmlNamespaceAware="false"><Context docBase="/var/lib/tomcat/webapps/test"path="" reloadable="true" />#指定自己的tomcat頁面訪問文件路徑
(4)重新啟動
systemctl restart tomcat
(5)服務端器安裝zabbix-java-gateway
wget https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-java-gateway-4.0.14-1.el7.x86_64.rpm
(6)安裝zabbix-java-gateway
yum -y localinstall zabbix-java-gateway-4.0.14-1.el7.x86_64.rpm
(7)編輯gateway配置文件
vim /etc/zabbix/zabbix_java_gateway.conf
去掉LISTEN_IP、LISTEN_PORT(監聽端口)、START_POLLERS(進程數)的注釋符號
LISTEN_IP定義被監控機器的地址,不指定默認監聽全部機器 編輯server配置文件
vim /etc/zabbix/zabbix_server.conf
定義以下3個配置參數:
JavaGateway=192.168.204.214JavaGatewayPort=10052StartJavaPollers=5
啟動zabbix-java-gateway服務:
systemctl start zabbix-java-gateway
重啟zabbix-server服務:
systemctl restart zabbix-server
(4)查看監聽端口
netstat -lntp |grep java
(5)開啟JMX
客戶端器編輯tomcat配置文件
vim /usr/libexec/tomcat/server
添加以下內容:
CATALINA_OPTS="$CATALINA_OPTS \-Dcom.sun.management.jmxremote \-Dcom.sun.management.jmxremote.port=8008 \-Dcom.sun.management.jmxremote.ssl=false \-Djava.rmi.server.hostname=192.168.204.215 \-Dcom.sun.management.jmxremote.authenticate=false"
hostname定義客戶端地址,端口8008(默認12345)
(6)腳本、重啟tomcat:
腳本
vim /opt/tomcat.sh#!/bin/bash
a=`netstat -natp |grep 8080|awk '{print $6}'|grep 'LISTEN'`
if [[ $a = 'LISTEN' ]];thenecho "0" #表示tomcat啟動中
elseecho "1" #表示tomcat未啟動
fi#添加權限
chmod 777 /opt/tomcat.sh
添加可識別配置文件
vim zabbix_agent2.confUserParameter=tomcat.status,source /opt/tomcat.sh
#實現對腳本的監控chmod +s /bin/nestat
#加上權限,避免netstat在服務端報錯
驗證
zabbix_get -s '192.168.204.215' -p 10050 -k 'tomcat.status'
重啟
systemctl restart tomcat
(7)查看監聽端口9999
netstat -lntp |grep 8008
(8)進入zabbix前端頁面添加主機
與普通情況添加監控主機不同,監控B機器的tomcat需要配置JMX接口 模板鏈接JMX相關的兩個模板:
Template App Apache Tomcat JMX
Template App Generic Java JMX
當JMX圖標變綠即表示配置成功
二、實驗
1.Zabbix監控Tomcat
(1)安裝
(2) 啟動
(3)設置文件
?
(4)監聽端口
?(5)安裝zabbix-java-gateway
下載
?安裝zabbix-java-gateway
(6) 編輯gateway配置文件
?去掉LISTEN_IP、LISTEN_PORT(監聽端口)、START_POLLERS(進程數)的注釋符號
?LISTEN_IP定義被監控機器的地址,不指定默認監聽全部機器
(7) 編輯server配置文件
?定義以下3個配置參數:
?(8)啟動zabbix-java-gateway服務
?(9) 重啟zabbix-server服務
?(10)查看監聽端口
(11)開啟JMX
客戶端器編輯tomcat配置文件
重啟 監聽端口
(12)腳本、重啟tomcat
腳本
?賦權
?
重啟
(13)驗證
授權
驗證
0是tomcat啟動中
???????
(14)進入zabbix前端頁面添加主機
進入zabbix前端頁面添加主機
與普通情況添加監控主機不同,監控B機器的tomcat需要配置JMX接口 模板鏈接JMX相關的兩個模板:
Template App Apache Tomcat JMX
Template App Generic Java JMX
當JMX圖標變綠即表示配置成功:
?
監控項
?
?
監控JVM
?
(15)自定義監控tomcat
三、問題
1.獲取軟件包失敗
(1)報錯
?(2)原因分析
證書過期
(3)解決方法
命令結尾附加
--no-check-certificate
成功
?2.tomcat 配置 JMX remote monitor不生效
(1)原因分析
centos 7 上的 tomcat 配置 JMX remote monitor,由于tomcat安裝方法的不同,jmx 配置方法也有所不同
(2)解決方法
①配置 $CATALINA_OPTS
打開tomcat啟動文件 /usr/libexec/tomcat/server,在變量 $FLAGS 賦值語句下面添加:
CATALINA_OPTS="$CATALINA_OPTS \
-Dcom.sun.management.jmxremote \
-Dcom.sun.management.jmxremote.port=8008 \
-Dcom.sun.management.jmxremote.ssl=false \
-Djava.rmi.server.hostname=192.168.204.215 \
-Dcom.sun.management.jmxremote.authenticate=true \
-Dcom.sun.management.jmxremote.password.file=/usr/share/tomcat/conf/jmxremote.password \
-Dcom.sun.management.jmxremote.access.file=/usr/share/tomcat/conf/jmxremote.access"
配置分析:
-Dcom.sun.management.jmxremote: 啟用 jmxremote 功能;
-Dcom.sun.management.jmxremote.port=8008:jmxremote 監聽端口,用于客戶端連接,樣例設為 8008;
-Dcom.sun.management.jmxremote.ssl=false:是否啟用 SSL 連接,樣例設為 false;
-Dcom.sun.management.jmxremote.authenticate=true:開啟用戶認證連接;
-Dcom.sun.management.jmxremote.password.file=/usr/share/tomcat/conf/jmxremote.password:認證用戶密碼文件,樣例設為 /usr/share/tomcat/conf/jmxremote.password;
-Dcom.sun.management.jmxremote.access.file=/usr/share/tomcat/conf/jmxremote.access:認證用戶權限配置文件,樣例設為 /usr/share/tomcat/conf/jmxremote.access。如果不啟用用戶認證,將選項 Dcom.sun.management.jmxremote.authenticate 的值設為false,也無需再設置選項 Dcom.sun.management.jmxremote.password.file 和 Dcom.sun.management.jmxremote.access.file。
②JMX 遠程連接的用戶認證文件
從 jre 的安裝目錄找到 jmxremote.access 和 jmxremote.password.template,復制到 $CATALINA_OPTS 中設置的認證文件位置,將 jmxremote.password.template 重命名為 jmxremote.password。
cp /usr/lib/jvm/jre/lib/management/jmxremote.access /usr/share/tomcat/conf/
cp /usr/lib/jvm/jre/lib/management/jmxremote.password.template /usr/share/tomcat/conf/jmxremote.password
jmxremote.access 文件末尾添加認證用戶名和用戶權限,示例中 jmxuser 為用戶名,readwrite 為該用戶的 jmx 權限:
jmxuser readwrite
jmxremote.password 文件末尾添加認證用戶名和用戶密碼,示例中 jmxuser 為用戶名,與 jmxremote.access 中一致,jmxpassword 為該用戶的 jmx 遠程連接密碼:
jmxuser jmxpassword
③最后,更改文件權限和屬主:
cd /usr/share/tomcat/conf/
chmod 600 jmxremote.password jmxremote.access
chown tomcat.tomcat jmxremote.password jmxremote.access
④firewalld 設置
可以直接關閉 firewalld:
systemctl stop firewalld
systemctl disable firewalld
或者針對 JMX 監聽的端口(包括兩個隨機端口和選項 -Dcom.sun.management.jmxremote.port 指定的固定端口)設置開放規則。首先查看java 監聽的端口:
ss -lnp | grep java
任何開放端口:
firewall-cmd --add-port=8008/tcp --add-port=<random-port-1>/tcp --add-port=<random-port-2>/tcp
重啟 tomcat 后隨機端口會變,這時候又要重新設置端口規則。
重啟 tomcat,JMX 連接
使用 JDK 自帶的 jconsole 或 VisualVM 連接 JVM Remote。
?3.Zabbix客戶端日志報錯
(1)報錯
?(2)原因分析
因為使用了netstat -p參數。
權限問題,zabbix_agentd是zabbix用戶啟動的,默認不能執行netstat -p等命令,導致從服務器取到的自動發現腳本為空
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
(3)解決方法?
為了方便普通用戶執行一些特權命令,SUID/SGID程序允許普通用戶以root身份暫時執行該程序,并在執行結束后再恢復身份。
chmod +s /bin/netstat
?成功