当前位置: 首页 > news >正文

Neo4j 可观测性最佳实践

Neo4j 介绍

Neo4j 是一款领先的图数据库管理系统,采用图数据模型来表示和存储数据。它以节点、关系和属性的形式组织数据,节点代表实体,关系表示节点间的连接,属性则为节点和关系附加信息。Neo4j 使用 Cypher 查询语言,提供高效的图数据存储、检索和操作能力,尤其擅长处理复杂的关系查询和路径查找,广泛应用于社交网络、推荐系统、知识图谱等领域。

观测云

观测云是一款专为 IT 工程师打造的全链路可观测产品,它集成了基础设施监控、应用程序性能监控和日志管理,为整个技术栈提供实时可观察性。这款产品能够帮助工程师全面了解端到端的用户体验追踪,了解应用内函数的每一次调用,以及全面监控云时代的基础设施。此外,观测云还具备快速发现系统安全风险的能力,为数字化时代提供安全保障。

前置条件

  • 安装 Neo4j 服务:参见官方安装文档。
  • 验证是否正确安装:在浏览器访问网址 <ip>:7474 可以进入 Neo4j 管理界面。
  • 打开 Neo4j Prometheus 端口,找到并编辑 Neo4j 启动配置文件,通常是在 /etc/neo4j/neo4j.conf,尾部追加,参见官方配置文档。
# 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 服务

采集器配置

主机安装

1、安装 DataKit

2、配置采集器

进入 DataKit 安装目录下的 conf.d/neo4j 目录,复制 neo4j.conf.sample 并命名为 neo4j.conf。示例如下:

[[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 inputdisable_host_tag = false## disable setting instance tag for this inputdisable_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

3、重启 DataKit

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 的运行状态。

相关文章:

  • STM32单片机入门学习——第45节: [13-2] 修改频主睡眠模式停止模式待机模式
  • 详解Node.js中的setImmediate()函数
  • Android自动化功能-使用Appium获取android页面节点元素信息
  • IDEA中如何统一项目名称/复制的项目如何修改根目录名称
  • 编码转换器
  • Mysql面试知识点详解
  • 【MCP Node.js SDK 全栈进阶指南】中级篇(1):MCP动态服务器高级应用
  • 【MCP Node.js SDK 全栈进阶指南】初级篇(1):MCP开发环境搭建详解
  • Web前端开发技术——HTML5、CSS3、JavaScript
  • 深度剖析神经网络:从基础原理到面试要点(二)
  • 重学React(一):描述UI
  • SuperMap GIS基础产品FAQ集锦(20250421)
  • 1000 QPS 下 MySQL 性能瓶颈解决方案
  • Flutter IOS 真机 Widget 错误。Widget 安装后系统中没有
  • uniapp Vue2升级到Vue3,并发布到微信小程序的快捷方法
  • 用selenium4 webdriver + java 搭建并完成第一个自动化测试脚本
  • 什么是 金字塔缩放(Multi-scale Input)
  • iscsi服务端安装及配置
  • 【Unity笔记】Unity + OpenXR项目无法启动SteamVR的排查与解决全指南
  • Dataway在Spring Boot中的引入以及使用教程
  • 校友伉俪捐赠10亿元!成立复旦大学学敏高等研究院
  • 夸大事实拍视频发网络,镇雄两名网红勒索两千元删帖费被拘
  • 一季度减持阿里、美团,加仓顺丰,张坤:与其纠结经济,不如着眼企业
  • 特写|为何这么多人喜欢上海半马,答案藏在他们的笑容里
  • 运油-20亮相中埃空军联训
  • 美国防部查信息外泄,防长四名亲信被解职