[comment]: # ({869698af-5380e993})
# 3 从源代码安装

[comment]: # ({/869698af-5380e993})

[comment]: # ({c93259be-8d0f220e})
#### 概述

如果是从源代码[安装](/manual/installation/install#installing-java-gateway)，以下信息将帮助你设置 Zabbix [Java 网关](/manual/concepts/java)。

[comment]: # ({/c93259be-8d0f220e})

[comment]: # ({931dace7-305c7876})
#### 文件概览

如果您是从源代码获取的 Java 网关，那么在 `$PREFIX/sbin/zabbix_java` 下应当会有一组 shell 脚本、JAR 文件和配置文件。
这些文件的作用如下所示。

    bin/zabbix-java-gateway-$VERSION.jar

Java 网关 JAR 文件本身。

    lib/logback-core-1.5.16.jar
    lib/logback-classic-1.5.16.jar
    lib/slf4j-api-2.0.16.jar
    lib/android-json-4.3_r3.1.jar

Java 网关的依赖项：[Logback](http://logback.qos.ch/)、[SLF4J](http://www.slf4j.org/) 和 [Android JSON](https://android.googlesource.com/platform/libcore/+/master/json) 库。

    lib/logback.xml  
    lib/logback-console.xml

Logback 的配置文件。

    shutdown.sh  
    startup.sh

用于启动和停止 Java 网关的便捷脚本。

    settings.sh

由上面的 startup 和 shutdown 脚本加载的配置文件。

[comment]: # ({/931dace7-305c7876})

[comment]: # ({c5692cf9-571dbbe2})
#### 配置和运行 Java 网关

默认情况下，Java 网关监听 10052 端口。如果您计划让 Java 网关运行在其他端口上，可以在 `settings.sh` 脚本中进行指定。
有关如何指定此项以及其他选项，请参见[Java 网关配置文件](/manual/appendix/config/zabbix_java)的说明。

::: notewarning
10052 端口未在 [IANA 注册](http://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.txt)。
:::

当您确认这些设置无误后，可以通过运行 `startup.sh` 脚本来启动 Java 网关：

    ./startup.sh

同样地，当您不再需要 Java 网关时，运行 `shutdown.sh` 脚本即可将其停止：

    ./shutdown.sh

请注意，与服务器或 proxy 不同，Java 网关是轻量级的，不需要数据库。

[comment]: # ({/c5692cf9-571dbbe2})

[comment]: # ({d85c9798-81ca4902})
#### 配置服务器以使用 Java 网关

在 Java 网关启动并运行后，您需要告诉 Zabbix 服务器到哪里查找 Zabbix Java 网关。  
这可以通过在 [服务器配置文件](/manual/appendix/config/zabbix_server) 中指定 `JavaGateway` 和 `JavaGatewayPort` 参数来完成。  
如果运行 JMX 应用程序的主机由 Zabbix proxy 监控，则应改为在 [proxy 配置文件](/manual/appendix/config/zabbix_proxy) 中指定连接参数。

    JavaGateway=192.168.3.14
    JavaGatewayPort=10052

默认情况下，服务器不会启动任何与 JMX 监控相关的进程。  
不过，如果您希望使用该功能，则必须指定预先 fork 的 Java poller 实例数量。  
其配置方式与指定常规 poller 和 trapper 相同。

    StartJavaPollers=5

完成配置后，不要忘记重启服务器或 proxy。

[comment]: # ({/d85c9798-81ca4902})

[comment]: # ({3cde3628-d86274ab})
#### Java 网关调试

如果 Java 网关存在任何问题，或者您在前端看到的关于某个监控项的错误信息不够明确，您可能需要查看 Java 网关日志文件。

默认情况下，Java 网关会将活动记录到 `/tmp/zabbix_java.log` 文件中，日志级别为 "info"。
有时这些信息还不够，需要使用日志级别为 "debug" 的信息。
要提高日志级别，请修改 `lib/logback.xml` 文件，并将 `<root>` 标签的 level 属性更改为 `debug`：

    <root level="debug">
      <appender-ref ref="FILE" />
    </root>

请注意，与 Zabbix 服务器或 Zabbix proxy 不同，在更改 `logback.xml` 文件后无需重启 Zabbix Java 网关 - `logback.xml` 中的更改会自动生效。
完成调试后，您可以将日志级别恢复为 "info"。

如果您希望将日志记录到其他文件，或者记录到完全不同的介质（例如数据库），请调整 `logback.xml` 文件以满足您的需求。
有关更多详细信息，请参阅 [Logback Manual](http://logback.qos.ch/manual/)。

有时，为了调试，使用控制台应用程序而不是守护进程来启动 Java 网关会很有帮助。
为此，请在 `settings.sh` 中注释掉 `PID_FILE` 变量。
如果省略 `PID_FILE`，`startup.sh` 脚本将以控制台应用程序的方式启动 Java 网关，并让 Logback 改用 `lib/logback-console.xml` 文件；该文件不仅会将日志输出到控制台，还会启用 "debug" 日志级别。

最后，请注意，由于 Java 网关使用 SLF4J 进行日志记录，您可以通过在 lib 目录中放置合适的 JAR 文件，将 Logback 替换为您选择的框架。
有关更多详细信息，请参阅 [SLF4J Manual](http://www.slf4j.org/manual.html)。

[comment]: # ({/3cde3628-d86274ab})

[comment]: # ({27e67930-4332cfb8})
#### JMX 监控

有关更多详细信息，请参阅 [JMX monitoring](/manual/config/items/itemtypes/jmx_monitoring) 页面。

[comment]: # ({/27e67930-4332cfb8})
