前言
Neo4j是一款NOSQL图形数据库,它是一个嵌入式的、基于磁盘的、具备完全的事务特性的Java持久化引擎,因此可以开启并使用JMX来监控Neo4j数据库的部分度量指标以了解数据库目前的服务运行状态
步骤
一:进入Neo4j的conf目录
[root@neo4j conf]# pwd
/opt/neo4j-enterprise-4.4.4/conf
二:创建JMX权限文件和密码文件
[root@neo4j conf]# cat > /opt/neo4j-enterprise-4.4.4/conf/jmx.access << EOF
monitorRole readonly
EOF
[root@neo4j conf]# chmod 0600 jmx.access
[root@neo4j conf]# cat > /opt/neo4j-enterprise-4.4.4/conf/jmx.password << EOF
monitorRole your_password
EOF
[root@neo4j conf]# chmod 0600 jmx.password
三::修改Neo4j配置文件
[root@neo4j conf]# vim neo4j.conf
… … …
# Open JMX
metrics.jmx.enabled= true
# 指定JMX端口,可以自定义设置,但不要与现有端口冲突
dbms.jvm.additional=-Dcom.sun.management.jmxremote.port=9999
# 是否使用身份验证;设置为”false”时,将不需要身份验证直接连接JMX
dbms.jvm.additional=-Dcom.sun.management.jmxremote.authenticate=true
# 是否使用SSL加密连接;暂不支持SSL加密连接,需要设置为false
dbms.jvm.additional=-Dcom.sun.management.jmxremote.ssl=false
#如果您连接JMX遇到关于主机名的问题,可以取消下一行的注释并启用他(取消注释即可,无需更改)
#dbms.jvm.additional=-Djava.rmi.server.hostname=$THE_NEO4J_SERVER_HOSTNAME
#以下条目必须使用绝对路径
dbms.jvm.additional=-Dcom.sun.management.jmxremote.password.file=/opt/neo4j-enterprise-4.4.4/conf/jmx.password
dbms.jvm.additional=-Dcom.sun.management.jmxremote.access.file=/opt/neo4j-enterprise-4.4.4/conf/jmx.access
四:启动Neo4j数据库
[root@neo4j bin]# ./neo4j start
Directories in use:
home: /opt/neo4j-enterprise-4.4.4
config: /opt/neo4j-enterprise-4.4.4/conf
logs: /opt/neo4j-enterprise-4.4.4/logs
plugins: /opt/neo4j-enterprise-4.4.4/plugins
import: /opt/neo4j-enterprise-4.4.4/import
data: /opt/neo4j-enterprise-4.4.4/data
certificates: /opt/neo4j-enterprise-4.4.4/certificates
licenses: /opt/neo4j-enterprise-4.4.4/licenses
run: /opt/neo4j-enterprise-4.4.4/run
Starting Neo4j.
WARNING: Max 4096 open files allowed, minimum of 40000 recommended. See the Neo4j manual.
Started neo4j (pid:1965). It is available at http://0.0.0.0:7474
There may be a short delay until the server is ready.
测试JMX连接
使用Jconsole测试连接,选择远程连接,并输入连接参数
连接成功
部分Mbean指标展示(以4.4.4版本为例)
1.通用指标
名字 | 描述 |
---|---|
| 到目前为止执行的检查点事件的总数 |
| 到目前为止检查指向所花费的总时间 |
| 检查点事件的持续时间 |
名字 | 描述 |
---|---|
| 数据库中存储的不同关系类型的总数 |
| 数据库中使用的不同属性名称的总数 |
| 数据库中存储的关系总数 |
| 数据库中存储的节点总数 |
名字 | 描述 |
---|---|
| 在页面缓存的逐出过程中看到的异常总数 |
| 页面缓存执行的刷新总数 |
| 页面缓存执行的页面取消固定的总数 |
| 页面缓存执行的页面固定总数 |
| 页面缓存执行的页面逐出总数 |
| 页面缓存中发生的页面错误总数 |
| 页面缓存中发生的页面命中总数 |
| 命中数与页面缓存中查找总数的比率 |
| 已用页数与可用页数的比率 |
名字 | 描述 |
---|---|
| 已启动的事务总数 |
| 并发事务的最高峰 |
| 当前活动事务的数量 |
| 当前活动读取事务的数量 |
| 当前活动写事务的数量 |
| 提交的事务总数 |
| 提交的读取事务的总数 |
| 提交的写入事务的总数 |
| 回滚的事务总数 |
| 回滚的读取事务的总数 |
| 回滚的写事务的总数 |
| 终止的事务总数 |
| 终止的读取事务的总数 |
| 终止的写入事务的总数 |
| 上次提交的事务的ID |
| 上次关闭的交易的ID |
名字 | 描述 |
---|---|
| Cypher决定重新计划查询的总次数 |
| 查询重新计划之间等待的总秒数 |
名字 | 描述 |
---|---|
| 到目前为止执行的事务日志循环总数 |
| 到目前为止循环事务日志所花费的总时间 |
| 日志循环事件的持续时间 |
名字 | 描述 |
---|---|
| 自该实例启动以来启动的Bolt会话总数。这包括成功的和失败的会话(不推荐使用,请改用connections_opened)。 |
| 自该实例启动以来打开的螺栓连接总数。这包括成功和失败的连接。 |
| 自该实例启动以来关闭的螺栓连接总数。这包括正常端接和异常端接。 |
| 当前正在执行的螺栓连接的总数。 |
| 闲置的螺栓连接总数。 |
| 自该实例启动以来通过Bolt接收的消息总数。 |
| 自该实例启动后开始处理的消息总数。这与messages received不同,因为此计数器跟踪有多少接收的消息已被工作线程接受。 |
| 自该实例启动以来已完成处理的消息总数。这包括成功、失败和忽略的螺栓消息。 |
| 自该实例启动以来处理失败的消息总数。 |
| 消息等待工作线程所花费的累计时间。 |
| 工作线程处理消息所花费的累计时间。 |
名字 | 描述 |
---|---|
| jetty池中空闲线程的总数 |
| jetty池中的线程总数(空闲和繁忙) |
2.特定于因果聚类的指标
名字 | 描述 |
---|---|
| 筏形日志的附加索引 |
| RAFT日志的提交索引 |
| 该服务器的RAFT术语 |
| 交易重试次数 |
| 这个服务器是领导吗? |
| 运行中的缓存总字节数 |
| 高速缓存最大字节数 |
| 运行中的缓存元素计数 |
| 动态缓存最大元素数 |
| 运行中的缓存命中 |
| 高速缓存未命中 |
| RAFT消息接收和处理之间的延迟 |
| RAFT消息处理定时器 |
| Raft复制新请求计数 |
| Raft复制尝试计数 |
| Raft复制成功计数 |
| Raft复制失败计数 |
名字 | 描述 |
---|---|
| 此实例发出的请求总数 |
| 此实例在请求更新中请求的最高事务id |
| 此实例在上次提取更新中提取的最高事务id |
3.Java虚拟机指标
这些指标依赖于环境,并且它们可能在不同的硬件和JVM配置上有所不同。通常,这些指标将显示有关垃圾收集的信息(例如事件数量和收集时间)、内存池和缓冲区,以及运行的活动线程数量。