Neo4j 介绍
Neo4j 是一款领先的图数据库管理系统,采用图数据模型来表示和存储数据。它以节点、关系和属性的形式组织数据,节点代表实体,关系表示节点间的连接,属性则为节点和关系附加信息。Neo4j 使用 Cypher 查询语言,提供高效的图数据存储、检索和操作能力,尤其擅长处理复杂的关系查询和路径查找,广泛应用于社交网络、推荐系统、知识图谱等领域。
观测云
观测云是一款专为 IT 工程师打造的全链路可观测产品,它集成了基础设施监控、应用程序性能监控和日志管理,为整个技术栈提供实时可观察性。这款产品能够帮助工程师全面了解端到端的用户体验追踪,了解应用内函数的每一次调用,以及全面监控云时代的基础设施。此外,观测云还具备快速发现系统安全风险的能力,为数字化时代提供安全保障。
前置条件
- 安装 Neo4j 服务:参见官方安装文档。
- 验证是否正确安装:在浏览器访问网址
<ip>:7474
可以进入 Neo4j 管理界面。 - 打开 Neo4j Prometheus 端口,找到并编辑 Neo4j 启动配置文件,通常是在
/etc/neo4j/neo4j.conf
,尾部追加,参见官方配置文档。
ini
# Enable the Prometheus endpoint. Default is false.
server.metrics.prometheus.enabled=true
# The hostname and port to use as Prometheus endpoint.
# A socket address is in the format <hostname>, <hostname>:<port>, or :<port>.
# If missing, the port or hostname is acquired from server.default_listen_address.
# The default is localhost:2004.
server.metrics.prometheus.endpoint=0.0.0.0:2004
- 重启 Neo4j 服务
采集器配置
主机安装
2、配置采集器
进入 DataKit 安装目录下的 conf.d/neo4j
目录,复制 neo4j.conf.sample
并命名为 neo4j.conf
。示例如下:
ini
[[inputs.neo4j]]
## Exporter URLs.
urls = ["http://127.0.0.1:2004/metrics"]
## TLS configuration.
tls_open = false
# tls_ca = "/tmp/ca.crt"
# tls_cert = "/tmp/peer.crt"
# tls_key = "/tmp/peer.key"
## Set to 'true' to enable election.
election = true
## disable setting host tag for this input
disable_host_tag = false
## disable setting instance tag for this input
disable_instance_tag = false
## Customize tags.
# [inputs.neo4j.tags]
# some_tag = "some_value"
# more_tag = "some_other_value"
## (Optional) Collect interval: (defaults to "30s").
# interval = "30s
Kubernetes 安装
目前可以通过 ConfigMap 方式注入采集器配置来开启采集器。
关键指标
Metric | 描述 | Unit |
---|---|---|
bolt_sessions_started | (仅适用于 neo4j.v3) 自此实例启动以来启动的总 Bolt 会话数。 | count |
database_check_point_duration | 上一个检查点事件的持续时间(以毫秒为单位)。检查点通常需要几秒到几分钟。长时间的检查点可能会引发问题,因为这些检查点在数据库停止、进行热备份以及定期执行时会被调用。超过 30 分钟的值应引起关注。 | ms |
database_check_point_events_total | 到目前为止已执行的检查点事件总数。 | count |
database_check_point_flushed_bytes | 在上一个检查点事件期间累积刷新的字节数。 | count |
database_check_point_io_limit | 上一个检查点事件期间使用的 IO 限制。 | count |
database_check_point_io_performed | 在上一个检查点事件期间从 Neo4j 角度执行的 IO 数量。 | count |
database_check_point_limit_millis | 上一个检查点期间使用的限制时间(以毫秒为单位)。 | ms |
database_check_point_limit_times | 上一个检查点期间使用的限制次数。 | ms |
database_check_point_pages_flushed | 在上一个检查点事件期间刷新的页面数。 | count |
database_check_point_total_time_total | 到目前为止花费在检查点上的总时间(以毫秒为单位)。 | ms |
database_cluster_catchup_tx_pull_requests_received_total | 从次要节点接收到的事务拉取请求总数。 | count |
database_cluster_discovery_cluster_converged | 发现集群收敛状态。 | count |
database_cluster_discovery_cluster_members | 发现集群成员数量。 | count |
database_cluster_discovery_cluster_unreachable | 发现集群不可达成员数量。 | count |
场景视图
登录观测云控制台,点击「场景」 -「新建仪表板」,输入 "Neo4j", 选择 "Neo4j监控视图",点击 "确定" 即可添加视图。

监控器(告警)
垃圾回收时间过长
垃圾回收时间反映了 JVM 的内存管理性能。过长的垃圾回收时间可能表明内存分配存在问题,或者应用程序产生了过多的垃圾对象,导致系统性能下降。

页面缓存命中率过低
页面缓存命中率是衡量数据库 I/O 性能的关键指标。高缓存命中率意味着数据库能够高效地利用缓存,减少磁盘 I/O 操作,提高查询性能。如果命中率过低,可能表明缓存配置不足或存在大量的随机 I/O 操作。

数据库查询时间过长
查询执行时间直接反映了数据库的响应速度和性能。如果该指标值过高或波动较大,可能表明数据库存在性能瓶颈或负载过高。

总结
Neo4j 作为一款高性能的图数据库,其性能监控对于确保数据查询效率和整体系统稳定性具有重要意义。通过合理利用观测云等监控工具,可以全面、实时地监控 Neo4j 的运行状态。