JMX 指标
本主题介绍如何访问 Neo4j DBMS 的 JMX 以监控指标。
Neo4j 提供不同级别的监控功能,以便持续概述系统的健康状况。有关监控选项的说明,请参阅 Neo4j 操作手册 → 监控。许多指标都是通过 JMX 公开的。
Neo4j 4.0 中更新了可用的 JMX MBean 及其名称。已删除在 Neo4j 操作手册 → 监控 中描述的重复指标或监控选项的 Bean。 |
调整对 Neo4j 的远程 JMX 访问
默认情况下,Neo4j 企业版不允许远程 JMX 连接。要启用此功能,您需要启用 JMX 远程管理,并在 conf/neo4j.conf 文件 中为安全的远程访问配置 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 和基于文件的方案设置身份验证的信息。
有关更多选项,包括 SSL 客户端身份验证的配置步骤,请参阅 Java SE 11 监控和管理指南。
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 数据库实例的进程
连接到远程进程或在某些情况下作为服务运行的本地进程时,必须选择
|
除了 JVM 公开的 MBean 之外,您还在 MBean 选项卡中默认看到 neo4j.metrics
部分。在该部分下,您可以访问 Neo4j 公开的全部监控信息。
有关将 JMX 开放以进行远程监控访问,请参阅 调整对 Neo4j 的远程 JMX 访问 和 JMX 文档。