zabbix(五)jmx和proxy

    技术2022-07-11  85

    文章目录

    zabbix(五)jmx和proxyzabbix 监控 java 虚拟机 jmxzabbix-proxy 配置

    zabbix(五)jmx和proxy

    zabbix 监控 java 虚拟机 jmx

    从 Zabbix 2.0 开始,以 Zabbix 守护进程方式原生支持监控 JMX 应用程序就存在了,称之为“Zabbix Java gateway”。Zabbix Java gateway 的守护进程是用 Java 编写。为了在特定主机上找到 JMX 计数器的值,Zabbix server 向 Zabbix Java gateway 发送请求,后者使用 JMX 管理 API 来远程查询相关的应用。该应用不需要安装额外的软件。只需要在启动时,命令行添加-Dcom.sun.management.jmxremote选项即可。 Java gateway 接受来自 Zabbix server 或 Zabbix proxy 的传入连接,并且只能用作“被动 proxy”。与 Zabbix proxy 相反,它也可以从 Zabbix proxy (Zabbix proxy 不能被链接)调用。在 Zabbix server 或 Zabbix proxy 配置文件中,可以直接配置每个 Java gateway 的访问,因此每个 Zabbix pserver 或 Zabbix proxy 只能配置一个 Java gateway。如果主机将有 JMX agent 或其他类型的监控项,则只将 JMX agent 监控项传递给 Java gateway 进行检索。 当必须通过 Java gateway 更新监控项时,Zabbix server 或 proxy 将连接到 Java gateway 并请求该值,Java gateway 将检索该值并将其传递回 Zabbix server 或 Zabbix proxy。 因此,Java gateway 不会缓存任何值。 Zabbix server 或 Zabbix proxy 具有连接到 Java gateway 的特定类型的进程,由 StartJavaPollers 选项控制。在内部,Java gateway 启动多个线程,由 START_POLLERS 选项控制。 在服务器端,如果连接超过 Timeout 选项配置的秒数,它将被终止,但 Java gateway 可能仍在忙于从 JMX 计数器检索值。 为了解决这个问题,从 Zabbix 2.0.15、Zabbix 2.2.10 和 Zabbix 2.4.5 开始,Java gateway 中有 TIMEOUT 选项,允许为 JMX 网络操作设置超时。 Zabbix server 或 proxy 尝试尽可能地将请求汇集到单个 JMX 目标(受监控项取值间隔影响),并在单个连接中将它们发送到 Java Gateway 以获得更好的性能。 此外,建议让 StartJavaPollers 选项的值小于或等于 START_POLLERS,否则可能会出现 Java gateway 中没有可用线程来为传入请求提供服务的情况。

    1>获取 jdk 和 tomcat [root@server2 ~]# rpm -ivh jdk-8u121-linux-x64.rpm [root@server2 local]# tar zxf apache-tomcat-8.5.24.tar.gz -C /usr/local/ [root@server2 local]# ln -s apache-tomcat-8.5.24 tomcat #修改配置使 tomcat 支持监控,端口自定义 #复制 zabbix 手册,也可以在 tomcat 官网 #http://tomcat.apache.org/tomcat-8.5-doc/monitoring.html [root@server2 ~]# vim /usr/local/tomcat/bin/catalina.sh CATALINA_OPTS='-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8888 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false' # OS specific support. $var _must_ be set to either true or false. #开启 tomcat [root@server2 bin]# ./startup.sh 在 server1 上安装 zabbix-java-gateway [root@server1 4.0]#yum install -y zabbix-java-gateway-4.0.5-1.el7.x86_64.rpm #启动 [root@server1 4.0]# systemctl start zabbix-java-gateway 访问顺序:client -> webui -> zabbix server -> zabbix jmx:10052 -> tomcat:8888 #修改 zabbix_server 配置 [root@server1 ~]# vim /etc/zabbix/zabbix_server.conf JavaGateway:172.25.0.1 JavaGatewayPort:10052 StartJavaPollers=5 #重新加载 #zabbix_server --help [root@server1 ~]# zabbix_server -R config_cache_reload zabbix_server [19178]: command sent successfully #上面这个命令好像不生效,还是要重启 [root@server1 ~]# systemctl restart zabbix-server

    #在 zabbix 界面添加 jmx 监控#删除原来的 http 监控,并添加 jmx #打开一个 jmx 监控的图形,发现没有数据 #编辑配置文件 [root@server1 ~]# vim /etc/zabbix/zabbix_java_gateway.conf #重启 [root@server1 ~]# systemctl restart zabbix-java-gateway

    zabbix-proxy 配置

    Zabbix proxy 是一个可以从一个或多个受监控设备采集监控数据并将信息发送到 Zabbix server 的进程,主要是代表 Zabbix server 工作。 所有收集的数据都在本地缓存,然后传输到 proxy 所属的 Zabbix server。 部署Zabbix proxy 是可选的,但可能非常有利于分担单个 Zabbix server 的负载。 如果只有代理采集数据,则 Zabbix server 上会减少 CPU 和磁盘 I/O 的开销。 Zabbix proxy 是无需本地管理员即可集中监控远程位置、分支机构和网络的理想解决方案。 Zabbix proxy 需要使用独立的数据库。

    #先删除 server3 的监控,用来做 proxy [root@server3 ~]# hostnamectl set-hostname proxy #停掉 agent,添加解析(每个节点都添加) [root@proxy ~]# systemctl stop zabbix-agent #添加代理

    #proxy 上安装包 [root@proxy ~]# yum install -y zabbix-proxy-mysql-4.0.5-1.el7.x86_64.rpm fping-3.10-1.el7.x86_64.rpm #数据走向 Server -> proxy -> agent #proxy 上要安装 mariadb-server,然后初始化 MariaDB [(none)]> create database zabbix_proxy character set utf8 collate utf8_bin; Query OK, 1 row affected (0.00 sec) MariaDB [(none)]> grant all privileges on zabbix_proxy.* to zabbix@localhost identified by 'redhat'; Query OK, 0 rows affected (0.00 sec) #导入数据 [root@proxy zabbix-proxy-mysql-4.0.5]# pwd /usr/share/doc/zabbix-proxy-mysql-4.0.5 [root@proxy zabbix-proxy-mysql-4.0.5]#zcat schema.sql.gz | mysql -p zabbix_proxy #修改配置 [root@proxy ~]# vim /etc/zabbix/zabbix_proxy.conf 30 Server=172.25.0.1 39 ServerPort=10051 49 Hostname=proxy 173 DBName=zabbix_proxy 188 DBUser=zabbix 196 DBPassword=redhat 329 JavaGateway=172.25.0.1 337 JavaGatewayPort=10052 345 StartJavaPollers=5 #启动 [root@proxy ~]# systemctl start zabbix-proxy #查看日志 [root@proxy ~]# tail -f /var/log/zabbix/zabbix_proxy.log 3281:20190428:110519.736 received configuration data from server at"172.25.0.1", datalen 3511 [root@server1 ~]# tail -f /var/log/zabbix/zabbix_server.log30510:20190428:110518.321 sending configuration data to proxy "proxy" at"172.25.0.3", datalen 3511

    #web 端看 proxy 已生效 #server2 上配置把数据发送到 proxy [root@server2 ~]# vim /etc/zabbix/zabbix_agentd.conf Server=172.25.0.3 ServerActive=172.25.0.3 #重启 agent #web 端添加代理 #重启 zabbix-server , server2 上的 zabbix-agent , zabbix-proxy #启用 proxy 后,主机前都会加上 proxy #最后可以编辑拓扑图 #还可以将监控的 url 放入聚合图形

    Processed: 0.013, SQL: 9