zabbix----(九)zabbix-java-gateway监控Tomcat/JVM的部署

1 zabbix-java-gateway监控Tomcat/JVM原理

Zabbix本身不支持直接监控Java,在zabbix 1.8以前,只能使用Zapcat来做代理监控,而且要修改源代码,非常麻烦。所有后来为了解决这个监控问题,Zabbix和Java双方应运生成了各自的代理监控程序:zabbix 2.0以后添加了服务进程zabbix-java-gateway;Java有了JMX,全称是Java Management Extensions,即Java管理扩展。

1.1 Zabbix通过JMX监控Tomcat的过程

  • zabbix_server开启java poller, zabbx_java开启JavaGateway,端口为10052,Tomcat JMX开启12345提供性能数据。

  • 数据获取:java poller<–>JavaGateway:10052<–>Tomcat

1.2 实验环境

	server1:172.25.12.1 zabbix server,zabbix-java-gateway
	server2:172.25.12.2  zabbix agent,jdk环境,tomcat
	防火墙、selinux关闭

2 tomcat的部署

(1) 配置运行的java环境:yum install java-1.8.0-openjdk.x86_64

(2) 下载tomcat的安装包并解压:tar zxf apache-tomcat-7.0.37.tar.gz -C /usr/local/

  • 进入tomcat的安装路径:cd /usr/local/

在这里插入图片描述

  • 软链接:ln -s apache-tomcat-7.0.37 tomcat

(3)开启tomcat的远程jvm配置文件

  • cd tomcat/

在这里插入图片描述

  • 脚本catalina.sh用于启动和关闭tomcat服务器,是最关键的脚本:vim catalina.sh
CATALINA_OPTS='-Dcom.sun.management.jmxremote.port=8888   ##开启远程监控
  -Dcom.sun.management.jmxremote.ssl=false # ##远程ssl验证为false
  -Dcom.sun.management.jmxremote.authenticate=false  ###关闭权限认证

在这里插入图片描述

  • 启动tomcat:./startup.sh
  • 查看java进程是否开启:netstat -antlp
    在这里插入图片描述

3 jvm代理服务器配置

(1)安装zabbix-java-gateway:yum install zabbix-java-gateway -y

(2)编辑配置文件:vim /etc/zabbix/zabbix_java_gateway.conf(也可以不用更改,采用默认的配置)
在这里插入图片描述

(3) 启动服务:systemctl enable --now zabbix-java-gateway.service

(4) 查看进程的端口号是否开启: netstat -antlp |grep :10052

在这里插入图片描述

4 zabbix server配置

zabbix_server:默认未启用JavaPollers

(1)启用JabaPollers,编辑配置文件:vim /etc/zabbix/zabbix_server.conf

JavaGateway=172.25.12.1		//java gateway地址
JavaGatewayPort=10052			//java gateway默认端口
StartJavaPollers=10				//启动进程轮训个数

(2) 重启zabbix server:systemctl restart zabbix-server.service

5 zabbix界面的配置

  • 配置——主机——server2——JMX接口——更新
    在这里插入图片描述
  • 模板——添加——选择(群组Template Applications中的Template App Generic Java
    JMX模板)——添加——更新
    在这里插入图片描述
    在这里插入图片描述
  • jvm部署成功
    在这里插入图片描述
  • 查看监控jvm的图形化数据
    在这里插入图片描述
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 Kubernetes 中,我们可以使用 DaemonSet 来部署一个副本在每个节点上,并且这些副本会在特定节点上运行。这里我们以部署 Zabbix Server 和 Web UI 的情况为例,假设我们需要在节点 node2 上部署 Zabbix Server,并在所有节点上部署 Zabbix Web UI。 ### 部署 Zabbix Server 对于 Zabbix Server,我们将它作为一个 DaemonSet 并限制其部署到特定的节点(此处为 node2)。以下是使用 Zabbix Server 镜像 (`zabbix/zabbix-server-mysql`) 创建的 YAML 文件示例: ```yaml apiVersion: apps/v1 kind: DaemonSet metadata: name: zabbix-server-node2 spec: selector: matchLabels: app: zabbix-server template: metadata: labels: app: zabbix-server spec: nodeSelector: beta.kubernetes.io/os: ubuntu containers: - name: zabbix-server image: zabbix/zabbix-server-mysql command: ['zabbix_server'] args: ['-d'] ports: - containerPort: 10051 env: - name: MYSQL_ROOT_PASSWORD valueFrom: secretKeyRef: name: mysql-root-pass key: rootpass volumeMounts: - name: zabbix-data mountPath: /var/lib/zabbix volumes: - name: zabbix-data emptyDir: {} --- # 对应的 MySQL ServiceAccount 或 RoleBinding 可能需要在此处添加 ``` 这里的关键点是,我们指定了节点选择器 `beta.kubernetes.io/os: ubuntu` 并且设置了一个环境变量 `MYSQL_ROOT_PASSWORD` ,这个值应该来自于 `mysql-root-pass` 这个 Secret,用于 MySQL 数据库连接时验证根用户身份。 ### 部署 Zabbix Web UI 接下来,我们部署 Zabbix Web UI 到所有节点。这通常涉及使用 Nginx 和 MySQL 组件。为了简化起见,这里假定您已经有一个 MySQL 服务正在运行,并且有一个名为 `mysql-service` 的服务账号或角色绑定允许访问 MySQL。 下面是部署 Zabbix Web UI(包括 Nginx 和 MySQL 客户端)的 YAML 文件示例: ```yaml apiVersion: v1 kind: ServiceAccount metadata: name: zabbix-web-sa --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: zabbix-web-crb subjects: - kind: ServiceAccount name: zabbix-web-sa namespace: default roleRef: kind: ClusterRole name: cluster-admin apiGroup: rbac.authorization.k8s.io --- apiVersion: apps/v1 kind: Deployment metadata: name: zabbix-web spec: replicas: 1 selector: matchLabels: app: zabbix-web template: metadata: labels: app: zabbix-web spec: serviceAccountName: zabbix-web-sa containers: - name: zabbix-web-nginx-mysql image: zabbix/zabbix-web-nginx-mysql ports: - containerPort: 80 protocol: TCP env: - name: DB_SERVER value: mysql-service.default.svc.cluster.local - name: DB_USER valueFrom: secretKeyRef: name: mysql-user key: user - name: DB_PASSWORD valueFrom: secretKeyRef: name: mysql-pass key: password readinessProbe: httpGet: path: / port: 80 initialDelaySeconds: 30 periodSeconds: 10 livenessProbe: httpGet: path: / port: 80 initialDelaySeconds: 60 periodSeconds: 30 volumes: - name: zabbix-web-conf configMap: name: zabbix-web-config items: - key: default.conf path: default.conf --- apiVersion: v1 kind: ConfigMap metadata: name: zabbix-web-config data: default.conf: | # ... 配置内容 --- apiVersion: v1 kind: Service metadata: name: zabbix-web-service spec: type: LoadBalancer selector: app: zabbix-web ports: - name: web port: 80 targetPort: 80 ``` 以上 YAML 文件首先定义了必要的 RBAC 规则和服务账号,接着定义了 Deployment 负责启动 Zabbix Web UI 的容器,并配置了探针检查以确保容器健康。最后,我们创建了一个 ConfigMap 包含了 Web UI 的配置文件,并定义了一个负载均衡服务让外部能够访问 Web UI。 请注意,实际部署前应调整镜像标签和其他细节以匹配您的具体环境和需求。在运行这些 YAML 文件之前,请确保所有依赖项(如 MySQL)已经在 Kubernetes 环境中正确设置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值