监控JAVA程序JVM

JMX在Zabbix中的运行流程:

1.Zabbix-Server找Zabbix-Java-Gateway获取Java数据
2.Zabbix-Java-Gateway找Java程序(zabbix-agent)获取数据
3.Java程序返回数据给Zabbix-Java-Gateway
4.Zabbix-Java-Gateway返回数据给Zabbix-Server
5.Zabbix-Server进行数据展示

image-20230817143655990

Zabbix数据收集器

  • zabbix-agent
  • zabbix-java-gateway

Prometheus 监控程序:

  • cAdvisor:收集容器内部数据
  • node_exporter:收集宿主机数据
  • pushgateway:自定义监控

实践环境

服务器系统 主机 角色 Ip
CentOS 7.4 x86_64 zabbix Zabbix-Server 10.0.0.71
CentOS 7.4 x86_64 web03 Zabbix-java-gateway 10.0.0.9
CentOS 7.4 x86_64 web03 Zabbix-Agent 10.0.0.9
# 1.安装java程序
[root@web03 ~]# yum install -y tomcat
# 2.安装java数据收集器zabbix-java-gateway
[root@web03 ~]# rpm -ivh
https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-java-gateway-5.0.36-1.el7.x86_64.rpm
# 3.启动
[root@web03 ~]# systemctl start zabbix-java-gateway
[root@web03 ~]# systemctl enable zabbix-java-gateway
# 4.修改zabbix-server配置文件
[root@zabbix ~]# cat /etc/zabbix/zabbix_server.conf | grep -e '^Java\|^Start'
JavaGateway=172.16.1.9    // zabbix-java-gateway的主机地址,zabbix-server主动找gateway获取java数据
JavaGatewayPort=10052       // zabbix-java-gateway的端口
StartJavaPollers=5          // fork出来指定的子进程数量   
# 5.重启zabbix-server
[root@zabbix ~]# systemctl restart zabbix-server
# 6.安装tomcat
[root@zabbix ~]# wget https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.0.M26/bin/apache-tomcat-9.0.0.M26.tar.gz
# 7.修改tomcat脚本
[root@web03 ~]# vim apache-tomcat-9.0.0.M26/bin/catalina.sh

# 添加你的 JMX 配置
CATALINA_OPTS="$CATALINA_OPTS
-Djavax.management.builder.initial=
-Dcom.sun.management.jmxremote=true
-Dcom.sun.management.jmxremote.port=12345
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
-Djava.rmi.server.hostname=172.16.1.9"

image-20230817144923189

#jvm配置文件解释
CATALINA_OPTS="$CATALINA_OPTS
//启用远程监控JMX
-Dcom.sun.management.jmxremote
//jmx启用远程端口,Zabbix添加时必须一致
-Dcom.sun.management.jmxremote.port=12345
//不开启用户密码认证
-Dcom.sun.management.jmxremote.authenticate=false
//不启用ssl加密传输
-Dcom.sun.management.jmxremote.ssl=false
//运行tomcat主机的IP地址
-Djava.rmi.server.hostname=172.16.1.9"
#启动服务  //可自行加入systemctl系统管理
[root@web03 bin]# ./startup.sh 

image-20230817145159938

配置Java-gateway关联tomcat 12345端口

zabbix-agent部署就参考文档部署即可

添加接口连接:

image-20230817145654279

模板添加 //切记增加JVM接口时一定要添加模板

image-20230817145942302

image-20230817150000067

#如果长时间zabbix网页刷新不出监控信息,可以使用以下命令   //zabbix服务端使用
[root@zabbix-server ~]# zabbix_server -R config_cache_reload

Web监测

Web场景监测概述
Web网站中什么是动态网站,什么是静态网站
静态网站:纯静态网站就是服务器的源代码和客户端的源代码一致。
动态网站:比如: <?php phpinfo()?> 每次用户访问的时候,内容都是在内存中动态生成的。动态网站
支持登陆,支持用户交互,所以用户在请求动态网站时,会给客户端下发一个叫sessionID的内容,那
么客户端则会将SessionID保存至浏览器的cookie中。
当用户访问Web网站时,session和cookie是如何进行工作的

  1. 当用户首次访问动态网站时,是不会携带cookie信息,那么在服务端返回网页的时候,会给该客
    户端的浏览器分配一个唯一的sessionID,客户端会该sessionID存储至浏览器的Cookie中。
  2. 当用户再次访问网站时,浏览器会在Header头信息添加Set-Cookie,Set-Cookie携带的则是该网
    站对应的sessionID信息,服务端接收后会进行校验

image-20230817170113347

使用curl命令模拟网站登录

# 1.保存上一次登录的cookie
[root@zabbix ~]# curl -L -c cook -b cook http://10.0.0.71/index.php
[root@zabbix ~]# cat cook 
# Netscape HTTP Cookie File
# http://curl.haxx.se/docs/http-cookies.html
# This file was generated by libcurl! Edit at your own risk.

#HttpOnly_10.0.0.71     FALSE   /       FALSE   0       PHPSESSID       irag3vi1shhn3b8o9sonien9em

image-20230817154226127

# 2.携带cookie和登录信息参数,访问zabbix页面
[root@zabbix ~]# curl -L -c cook -b cook -d 'name=Admin&password=zabbix&autologin=1&enter=Sign+in' http://10.0.0.71/index.php
[root@zabbix ~]# cat cook 
# Netscape HTTP Cookie File
# http://curl.haxx.se/docs/http-cookies.html
# This file was generated by libcurl! Edit at your own risk.

#HttpOnly_10.0.0.71     FALSE   /       FALSE   0       PHPSESSID       irag3vi1shhn3b8o9sonien9em
#HttpOnly_10.0.0.71     FALSE   /       FALSE   1694937870      zbx_sessionid   0904d657d83c564632d585b81fa389b4

# 3.访问任何页面只需要,携带session去访问即可
[root@zabbix ~]# curl -L -c cook -b cook http://10.0.0.71/zabbix.php?action=host.view

zabbix5.0Web监测

由于session连接任何监控机都有可以去连接监控,所以这里就部署在web03上

image-20230817161118238

新增web场景:

image-20230817161149183

创建web监控名:

image-20230817161244262

添加步骤一:访问zabbix页面

image-20230817162726313

添加步骤二:登录zabbix页面

#字段
name=Admin&password=zabbix&autologin=1&enter=Sign+in
#变量  
前后端分离:regex:name="csrf-token" content="([0-9a-z]{16})
前后端不分离:regex:name="sid" value="([0-9a-z]{16})"

image-20230817163146637

添加步骤三:监测zabbix登录

image-20230817163734735

添加步骤四:退出zabbix页面

#查询字段
sid   {sid}
reconnect  1

image-20230817172141825

添加步骤五:监测zabbix退出

image-20230817164216791

image-20230817164234237

image-20230817164246313

验证查看

image-20230817164346813

image-20230817164359809

image-20230817164415376