JMX 指标

本主题介绍如何访问 Neo4j 数据库管理系统 (DBMS) 的 JMX 以监控指标。

Neo4j 提供不同级别的监控工具,以持续概览系统健康状况。有关监控选项的说明,请参阅 Neo4j 操作手册 → 监控。许多指标通过 JMX 公开。

Neo4j 4.0 中已更新可用的 JMX MBean 及其名称。重复指标或监控选项的 Bean(其描述在 Neo4j 操作手册 → 监控 中)已被移除。

调整 Neo4j 的远程 JMX 访问

默认情况下,Neo4j 企业版不允许远程 JMX 连接。要启用此功能,您需要在 conf/neo4j.conf 文件中启用 JMX 远程管理,并配置 JMX 以实现安全的远程访问。

启用 JMX 远程管理

将以下行添加到 conf/neo4j.conf 文件以启用 JMX 远程管理。如果您遇到自动主机名发现问题,可以取消注释以下配置行

server.jvm.additional=-Djava.rmi.server.hostname=$THE_NEO4J_SERVER_HOSTNAME

server.jvm.additional=-Dcom.sun.management.jmxremote.port=3637
server.jvm.additional=-Dcom.sun.management.jmxremote.authenticate=true
server.jvm.additional=-Dcom.sun.management.jmxremote.ssl=false

# Some systems cannot discover the hostname automatically, and need this line configured:
# server.jvm.additional=-Djava.rmi.server.hostname=$THE_NEO4J_SERVER_HOSTNAME

尽管本文档中 JMX 远程管理的 SSL 被禁用,但要根据您的需求进行配置,您可以遵循 Java SE 11 监控和管理指南 中的说明。

配置密码认证

JMX 远程管理默认启用密码认证。您可以在以下部分找到有关使用 LDAP 和基于文件的方法设置认证的信息。

请参阅 Java SE 11 监控和管理指南 以获取更多选项,包括 SSL 客户端认证的配置步骤。

LDAP 认证

您可以根据您的基础设施配置 JAAS 登录配置,并将其保存在 conf/jmx.ldap 配置文件中。

Neo4jJMXConfig {
    com.sun.security.auth.module.LdapLoginModule REQUIRED
    userProvider="ldap://127.0.0.1:10389/ou=users,dc=example,dc=net"
    authIdentity="uid={USERNAME},ou=users,dc=example,dc=net"
    userFilter="(&(samaccountname={USERNAME})(objectClass=inetOrgPerson))"
    useSSL=false
    debug=false
    authzIdentity=monitorRole;
};
userProvider

定义要连接的 LDAP 服务器以及用于对用户条目执行搜索的节点。

authIdentity

定义用于向 LDAP 服务器进行认证的用户的专有名称。请注意,认证期间 {USERNAME} 标记将替换为提供的用户名。

userFilter

定义在查找用户时要使用的搜索过滤器。请注意,搜索期间 {USERNAME} 标记将替换为提供的用户名。

useSSL

定义是否为底层 LDAP 连接启用 SSL。

debug

定义是否输出有关认证会话的调试信息。

authzIdentity

指定授予经过认证的用户哪种访问角色。

所提供的配置仅为示例,需要根据您的基础设施进行更新。

完成 JAAS 配置后,通过将以下配置项添加到 conf/neo4j.conf 文件来配置 JMX 以使用它

server.jvm.additional=-Dcom.sun.management.jmxremote.login.config=Neo4jJMXConfig
server.jvm.additional=-Djava.security.auth.login.config=/absolute/path/to/conf/jmx.ldap

通过此设置,您可以使用 <IP-OF-SERVER>:3637 连接到 Neo4j 服务器的 JMX 监控,并使用在您的 LDAP 目录中定义的有效用户名和密码。

基于文件的认证

基于文件的密码认证以明文形式存储密码,仅用于开发目的。

您可以为 JMX 远程访问设置密码,并将其保存在 conf/jmx.password (Unix) 和 c:\jmx.password (Windows) 配置文件中。请注意,jmx.password 文件需要由运行服务器的用户拥有,并且权限设置为 0600

monitorRole password_to_be_changed

接下来,配置访问级别并将其保存在 conf/jmx.access 配置文件中。

monitorRole readonly

最后,通过将以下配置项添加到 conf/neo4j.conf 文件中,配置 JMX 以使用已完成的密码和访问文件

server.jvm.additional=-Dcom.sun.management.jmxremote.password.file=/absolute/path/to/conf/jmx.password
server.jvm.additional=-Dcom.sun.management.jmxremote.access.file=/absolute/path/to/conf/jmx.access

在 Windows 上,您需要将 / 更改为 \

dbms.jvm.additional=-Dcom.sun.management.jmxremote.password.file=\absolute\path\to\conf\jmx.password
dbms.jvm.additional=-Dcom.sun.management.jmxremote.access.file=\absolute\path\to\conf\jmx.access

通过此设置,您可以使用 <IP-OF-SERVER>:3637 连接到 Neo4j 服务器的 JMX 监控,用户名为 monitor,密码为 password_to_be_changed

使用 JMX 和 JConsole 连接到 Neo4j 实例

首先,启动您的 Neo4j 实例,例如使用

$NEO4j_HOME/bin/neo4j start

现在,使用以下命令启动 JConsole

$JAVA_HOME/bin/jconsole

连接到运行 Neo4j 数据库实例的进程

Connecting with JConsole
图 1. 将 JConsole 连接到 Neo4j Java 进程

连接到远程进程或在某些情况下以服务形式运行的本地进程时,您必须选择 远程进程 连接选项。

<port> 值由 com.sun.management.jmxremote.port 属性配置。

除了 JVM 公开的 MBean,您还会在 MBeans 选项卡中默认看到 neo4j.metrics 部分。在该部分下,您可以访问 Neo4j 公开的所有监控信息。

要开放 JMX 以进行远程监控访问,请参阅 调整 Neo4j 的远程 JMX 访问JMX 文档

Neo4j MBeans view
图 2. Neo4j MBean 视图
© . All rights reserved.